Skip to content

speed to string only supports some specific speeds

Created by: runborg

https://github.com/Uninett/PyMetric/blob/b32bdde81308fdb0baf28c3a194ee58a1d2bd1ee/utils.py#L56-L72 cap2str does only support some specific speeds , comming with a 20Gbit/s link will result in an speed of "Unknown". this must be made more dynamic to allow for more custom speeds.

An example implementation:

def cap2str(capacity):
    if capacity < 1000:
        s, i = "K", float(capacity)
    elif capacity < 1000000:
        s, i = "M", round(float(capacity)/1000.0, 1)
    elif capacity < 1000000000:
        s, i = "G", round(float(capacity)/1000000.0, 1)
    elif capacity < 1000000000000:
        s, i = "T", round(float(capacity)/1000000000.0,1)

    if i % 1 == 0:
        return "{:0.0f}{}bit/s".format(i, s)
    else:
        return "{:0.1f}{}bit/s".format(i, s)

This will produce:

       600  :  600Kbit/s
      1500  :  1.5Mbit/s
      1984  :  2Mbit/s
     34000  :  34Mbit/s
     34010  :  34Mbit/s
    100000  :  100Mbit/s
    155000  :  155Mbit/s
   1000000  :  1Gbit/s
   2488000  :  2.5Gbit/s
   2500000  :  2.5Gbit/s
   5000000  :  5Gbit/s
  10000000  :  10Gbit/s
  20000000  :  20Gbit/s
  25000000  :  25Gbit/s
  40000000  :  40Gbit/s
  50000000  :  50Gbit/s
 100000000  :  100Gbit/s
 200000000  :  200Gbit/s
 400000000  :  400Gbit/s
 800000000  :  800Gbit/s
1000000000  :  1Tbit/s
1200000000  :  1.2Tbit/s