def __init__(self, latency, limit=1000, loss=0, gap=0, duplicate=0, jitter=0): """Latency is in microseconds [us]""" latency_ticks = nl_us2ticks(latency) jitter_ticks = nl_us2ticks(jitter) data = self.data_format.pack(latency_ticks, limit, loss, gap, duplicate, jitter_ticks) Attr.__init__(self, TCA_OPTIONS, data)
def test_unpack_add_netem(self): """tc qdisc add dev lo root handle 1: netem delay 10ms""" data = "\x4c\x00\x00\x00\x24\x00\x05\x06\x07\x1b\xcc\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\xff\xff\xff\xff\x00\x00\x00\x00\x0a\x00\x01\x00\x6e\x65\x74\x65\x6d\x00\x00\x00\x1c\x00\x02\x00\x5a\x62\x02\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" msg = Message.unpack(data) self.assertEqual(msg.type, RTM_NEWQDISC) self.assertEqual(msg.flags, 0x605) st = msg.service_template self.assertAlmostEqual(st.tcm_handle, 0x10000) self.assertAlmostEqual(st.tcm_parent, 0xffffffff) attr, data = NetemOptions.unpack(data[-28:]) self.assertEqual(attr.data.latency, nl_us2ticks(10*1000))
def test_unpack_add_netem(self): """tc qdisc add dev lo root handle 1: netem delay 10ms""" data = "\x4c\x00\x00\x00\x24\x00\x05\x06\x07\x1b\xcc\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\xff\xff\xff\xff\x00\x00\x00\x00\x0a\x00\x01\x00\x6e\x65\x74\x65\x6d\x00\x00\x00\x1c\x00\x02\x00\x5a\x62\x02\x00\xe8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" msg = Message.unpack(data) self.assertEqual(msg.type, RTM_NEWQDISC) self.assertEqual(msg.flags, 0x605) st = msg.service_template self.assertAlmostEqual(st.tcm_handle, 0x10000) self.assertAlmostEqual(st.tcm_parent, 0xffffffff) attr, data = NetemOptions.unpack(data[-28:]) self.assertEqual(attr.data.latency, nl_us2ticks(10 * 1000))
def tc_calc_xmittime(rate, size): TIME_UNITS_PER_SEC = 1000000#000 return int(nl_us2ticks(int(TIME_UNITS_PER_SEC*(float(size)/rate))))
def test_add_netem_qdisc(self): delay = nl_us2ticks(500*1000) # 500 ms self.make_msg([Attr(TCA_KIND, 'netem\0'), NetemOptions(delay)])