X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_ip_route.py;h=7742936a8a0bbe2b1f4b521d6d5f5080114f373e;hb=053204ab0;hp=5175de7dd0fe2827e6d2e4dfba04812a8eb22b57;hpb=097fa66b986f06281f603767d321ab13ab6c88c3;p=vpp.git diff --git a/test/vpp_ip_route.py b/test/vpp_ip_route.py index 5175de7dd0f..7742936a8a0 100644 --- a/test/vpp_ip_route.py +++ b/test/vpp_ip_route.py @@ -64,6 +64,7 @@ class FibPathFlags: FIB_PATH_FLAG_NONE = 0 FIB_PATH_FLAG_RESOLVE_VIA_ATTACHED = 1 FIB_PATH_FLAG_RESOLVE_VIA_HOST = 2 + FIB_PATH_FLAG_POP_PW_CW = 4 class MplsLspMode: @@ -149,6 +150,7 @@ def fib_interface_ip_prefix(test, address, length, sw_if_index): prefix = IPv6Network("%s/%d" % (text_type(address), length), strict=False) + # TODO: refactor this to VppIpPrefix.__eq__ for a in addrs: if a.sw_if_index == sw_if_index and \ a.prefix == prefix: @@ -200,15 +202,13 @@ class VppIpInterfaceAddress(VppObject): def add_vpp_config(self): self._test.vapi.sw_interface_add_del_address( - sw_if_index=self.intf.sw_if_index, address=self.prefix.bytes, - address_length=self.prefix.length, is_ipv6=self.prefix.is_ip6, + sw_if_index=self.intf.sw_if_index, prefix=self.prefix.encode(), is_add=1) self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): self._test.vapi.sw_interface_add_del_address( - sw_if_index=self.intf.sw_if_index, address=self.prefix.bytes, - address_length=self.prefix.length, is_ipv6=self.prefix.is_ip6, + sw_if_index=self.intf.sw_if_index, prefix=self.prefix.encode(), is_add=0) def query_vpp_config(self): @@ -426,6 +426,8 @@ class VppIpRoute(VppObject): self.table_id = table_id self.prefix = VppIpPrefix(dest_addr, dest_addr_len) self.register = register + self.stats_index = None + self.modified = False self.encoded_paths = [] for path in self.paths: @@ -442,6 +444,7 @@ class VppIpRoute(VppObject): self.encoded_paths = [] for path in self.paths: self.encoded_paths.append(path.encode()) + self.modified = True self._test.vapi.ip_route_add_del(route={'table_id': self.table_id, 'prefix': self.prefix.encode(), @@ -466,14 +469,26 @@ class VppIpRoute(VppObject): self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): - self._test.vapi.ip_route_add_del(route={'table_id': self.table_id, - 'prefix': self.prefix.encode(), - 'n_paths': len( - self.encoded_paths), - 'paths': self.encoded_paths, - }, - is_add=0, - is_multipath=0) + # there's no need to issue different deletes for modified routes + # we do this only to test the two different ways to delete routes + # eiter by passing all the paths to remove and mutlipath=1 or + # passing no paths and multipath=0 + if self.modified: + self._test.vapi.ip_route_add_del( + route={'table_id': self.table_id, + 'prefix': self.prefix.encode(), + 'n_paths': len( + self.encoded_paths), + 'paths': self.encoded_paths}, + is_add=0, + is_multipath=1) + else: + self._test.vapi.ip_route_add_del( + route={'table_id': self.table_id, + 'prefix': self.prefix.encode(), + 'n_paths': 0}, + is_add=0, + is_multipath=0) def query_vpp_config(self): return find_route(self._test, @@ -482,10 +497,11 @@ class VppIpRoute(VppObject): self.table_id) def object_id(self): - return ("%d:%s/%d" - % (self.table_id, - self.prefix.address, - self.prefix.len)) + return ("%s:table-%d-%s/%d" % ( + 'ip6-route' if self.prefix.addr.version == 6 else 'ip-route', + self.table_id, + self.prefix.address, + self.prefix.len)) def get_stats_to(self): c = self._test.statistics.get_counter("/net/route/to") @@ -721,7 +737,7 @@ class VppMplsRoute(VppObject): self.local_label, self.eos_bit) def object_id(self): - return ("%d:%s/%d" + return ("mpls-route-%d:%s/%d" % (self.table_id, self.local_label, 20 + self.eos_bit))