X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_interface.py;h=7b9de828e6c7ea7901aaa4a6ae10dd0d1cb16323;hb=097fa66b986f06281f603767d321ab13ab6c88c3;hp=84f694d7107731271fc49ea78cf48e53cda7201d;hpb=a5b2eec0535f9025319a752891d77ff9948ae0df;p=vpp.git diff --git a/test/vpp_interface.py b/test/vpp_interface.py index 84f694d7107..7b9de828e6c 100644 --- a/test/vpp_interface.py +++ b/test/vpp_interface.py @@ -7,6 +7,12 @@ from six import moves from util import Host, mk_ll_addr from vpp_papi import mac_ntop +from ipaddress import IPv4Network + +try: + text_type = unicode +except NameError: + text_type = str @six.add_metaclass(abc.ABCMeta) @@ -229,7 +235,7 @@ class VppInterface(object): self._remote_addr_n = {socket.AF_INET: self.remote_ip4n, socket.AF_INET6: self.remote_ip6n} - r = self.test.vapi.sw_interface_dump() + r = self.test.vapi.sw_interface_dump(sw_if_index=self.sw_if_index) for intf in r: if intf.sw_if_index == self.sw_if_index: self._name = intf.interface_name.split(b'\0', @@ -365,6 +371,14 @@ class VppInterface(object): self.test.vapi.sw_interface_set_flags(self.sw_if_index, admin_up_down=0) + def link_up(self): + """Put interface link-state-UP.""" + self.test.vapi.cli("test interface link-state %s up" % self.name) + + def link_down(self): + """Put interface link-state-down.""" + self.test.vapi.cli("test interface link-state %s down" % self.name) + def ip6_enable(self): """IPv6 Enable interface""" self.test.vapi.sw_interface_ip6_enable_disable(self.sw_if_index, @@ -398,9 +412,10 @@ class VppInterface(object): def is_ip4_entry_in_fib_dump(self, dump): for i in dump: - if i.address == self.local_ip4n and \ - i.address_length == self.local_ip4_prefix_len and \ - i.table_id == self.ip4_table_id: + n = IPv4Network(text_type("%s/%d" % (self.local_ip4, + self.local_ip4_prefix_len))) + if i.route.prefix == n and \ + i.route.table_id == self.ip4_table_id: return True return False @@ -421,7 +436,7 @@ class VppInterface(object): enable) def query_vpp_config(self): - dump = self.test.vapi.sw_interface_dump() + dump = self.test.vapi.sw_interface_dump(sw_if_index=self.sw_if_index) return self.is_interface_config_in_dump(dump) def get_interface_config_from_dump(self, dump): @@ -455,3 +470,11 @@ class VppInterface(object): def __str__(self): return self.name + + def get_rx_stats(self): + c = self.test.statistics.get_counter("^/if/rx$") + return c[0][self.sw_if_index] + + def get_tx_stats(self): + c = self.test.statistics.get_counter("^/if/tx$") + return c[0][self.sw_if_index]