diff options
author | Jakub Grajciar <jgrajcia@cisco.com> | 2019-08-26 11:25:52 +0200 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2019-09-12 20:25:10 +0000 |
commit | 3b2db9002c14f9e0742622f2d503c5801d443827 (patch) | |
tree | 298fabfa77400f93ae0d214c47b90da9ee912d60 /test | |
parent | 3c7c613cf18f7825e22190be45ea7f054efafb77 (diff) |
devices: af_packet API cleanup
Use consistent API types.
- fix af_packet_dump dumping deleted interface
Type: fix
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Change-Id: Ie8d138e30c8c51a2306bb2ad9ac0b7a49d5412bf
Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/test_af_packet.py | 39 | ||||
-rw-r--r-- | test/vpp_devices.py | 41 |
2 files changed, 80 insertions, 0 deletions
diff --git a/test/test_af_packet.py b/test/test_af_packet.py new file mode 100644 index 00000000000..9017fb71cbf --- /dev/null +++ b/test/test_af_packet.py @@ -0,0 +1,39 @@ +import unittest +import os +import psutil + +from framework import VppTestCase, VppTestRunner +from vpp_devices import VppAFPacketInterface + + +class TestAFPacket(VppTestCase): + """ Host interface Test Case """ + + host_if_name = 'afp0' + + @classmethod + def setUpClass(cls): + super(TestAFPacket, cls).setUpClass() + os.system('ip tuntap add dev ' + cls.host_if_name + ' mode tap') + + @classmethod + def tearDownClass(cls): + super(TestAFPacket, cls).tearDownClass() + os.system('ip link delete ' + cls.host_if_name) + + def test_tap_add_del(self): + """Create host interface""" + # check if host interface exists + self.assertTrue( + psutil.net_if_addrs().get( + self.host_if_name), + 'Host interface ' + + self.host_if_name + + ' does not exist') + afp0 = VppAFPacketInterface(self, self.host_if_name) + afp0.add_vpp_config() + self.assertTrue(afp0.query_vpp_config()) + + +if __name__ == '__main__': + unittest.main(testRunner=VppTestRunner) diff --git a/test/vpp_devices.py b/test/vpp_devices.py new file mode 100644 index 00000000000..2fd0057ed91 --- /dev/null +++ b/test/vpp_devices.py @@ -0,0 +1,41 @@ +from vpp_interface import VppInterface + + +class VppAFPacketInterface(VppInterface): + + @property + def host_if_name(self): + """Host interface name""" + return self._host_if_name + + def __init__(self, test, host_if_name, mac_addr=None): + self._test = test + self._host_if_name = host_if_name + self._mac_addr = mac_addr + + def get_vpp_dump(self): + dump = self._test.vapi.af_packet_dump() + for entry in dump: + if entry.sw_if_index == self.sw_if_index: + return entry + + def add_vpp_config(self): + use_random_mac = True if self._mac_addr else False + reply = self._test.vapi.af_packet_create( + host_if_name=self._host_if_name, + use_random_hw_addr=use_random_mac, + hw_addr=self._mac_addr) + self.set_sw_if_index(reply.sw_if_index) + self._test.registry.register(self, self.test.logger) + + def remove_vpp_config(self): + self._test.vapi.af_packet_delete(host_if_name=self._host_if_name) + + def query_vpp_config(self): + dump = self.get_vpp_dump() + if dump: + return True + return False + + def object_id(self): + return "af_packet-%s" % self._host_if_name |