X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_bier.py;h=9fdaf1faa1c6be174c5e37ab288b82e5e32035ab;hb=fa6d21b4fff18bfecbf3935dac131f18a24fa3b3;hp=58c4f7248da17c742fd044dca805a0b24f1cb3b4;hpb=d792d9c01e60656cbfe1b0f1fd6a9b125f5dab0c;p=vpp.git diff --git a/test/vpp_bier.py b/test/vpp_bier.py index 58c4f7248da..9fdaf1faa1c 100644 --- a/test/vpp_bier.py +++ b/test/vpp_bier.py @@ -4,6 +4,7 @@ import socket from vpp_object import VppObject +from vpp_ip_route import MPLS_LABEL_INVALID, VppRoutePath, VppMplsLabel class BIER_HDR_PAYLOAD: @@ -17,8 +18,8 @@ class BIER_HDR_PAYLOAD: BIER_HDR_PROTO_OAM = 8 -class VppBierTableID(): - def __init__(self, set_id, sub_domain_id, hdr_len_id): +class VppBierTableID: + def __init__(self, sub_domain_id, set_id, hdr_len_id): self.set_id = set_id self.sub_domain_id = sub_domain_id self.hdr_len_id = hdr_len_id @@ -27,9 +28,11 @@ class VppBierTableID(): def find_bier_table(test, bti): tables = test.vapi.bier_table_dump() for t in tables: - if bti.set_id == t.bt_tbl_id.bt_set \ - and bti.sub_domain_id == t.bt_tbl_id.bt_sub_domain \ - and bti.hdr_len_id == t.bt_tbl_id.bt_hdr_len_id: + if ( + bti.set_id == t.bt_tbl_id.bt_set + and bti.sub_domain_id == t.bt_tbl_id.bt_sub_domain + and bti.hdr_len_id == t.bt_tbl_id.bt_hdr_len_id + ): return True return False @@ -37,10 +40,12 @@ def find_bier_table(test, bti): def find_bier_route(test, bti, bp): routes = test.vapi.bier_route_dump(bti) for r in routes: - if bti.set_id == r.br_tbl_id.bt_set \ - and bti.sub_domain_id == r.br_tbl_id.bt_sub_domain \ - and bti.hdr_len_id == r.br_tbl_id.bt_hdr_len_id \ - and bp == r.br_bp: + if ( + bti.set_id == r.br_route.br_tbl_id.bt_set + and bti.sub_domain_id == r.br_route.br_tbl_id.bt_sub_domain + and bti.hdr_len_id == r.br_route.br_tbl_id.bt_hdr_len_id + and bp == r.br_route.br_bp + ): return True return False @@ -56,8 +61,7 @@ def find_bier_disp_table(test, bdti): def find_bier_disp_entry(test, bdti, bp): entries = test.vapi.bier_disp_entry_dump(bdti) for e in entries: - if bp == e.bde_bp \ - and bdti == e.bde_tbl_id: + if bp == e.bde_bp and bdti == e.bde_tbl_id: return True return False @@ -65,10 +69,12 @@ def find_bier_disp_entry(test, bdti, bp): def find_bier_imp(test, bti, bp): imps = test.vapi.bier_imp_dump() for i in imps: - if bti.set_id == i.bi_tbl_id.bt_set \ - and bti.sub_domain_id == i.bi_tbl_id.bt_sub_domain \ - and bti.hdr_len_id == i.bi_tbl_id.bt_hdr_len_id \ - and bp == i.bi_src: + if ( + bti.set_id == i.bi_tbl_id.bt_set + and bti.sub_domain_id == i.bi_tbl_id.bt_sub_domain + and bti.hdr_len_id == i.bi_tbl_id.bt_hdr_len_id + and bp == i.bi_src + ): return True return False @@ -84,25 +90,18 @@ class VppBierTable(VppObject): self.mpls_label = mpls_label def add_vpp_config(self): - self._test.vapi.bier_table_add_del( - self.id, - self.mpls_label, - is_add=1) + self._test.vapi.bier_table_add_del(self.id, self.mpls_label, is_add=1) self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): - self._test.vapi.bier_table_add_del( - self.id, - self.mpls_label, - is_add=0) - - def __str__(self): - return self.object_id() + self._test.vapi.bier_table_add_del(self.id, self.mpls_label, is_add=0) def object_id(self): - return "bier-table;[%d:%d:%d]" % (self.id.set_id, - self.id.sub_domain_id, - self.id.hdr_len_id) + return "bier-table;[%d:%d:%d]" % ( + self.id.set_id, + self.id.sub_domain_id, + self.id.hdr_len_id, + ) def query_vpp_config(self): return find_bier_table(self._test, self.id) @@ -113,42 +112,63 @@ class VppBierRoute(VppObject): BIER route """ - def __init__(self, test, tbl_id, bp, nh, out_label, - disp_table=0): + def __init__(self, test, tbl_id, bp, paths): self._test = test self.tbl_id = tbl_id - self.out_label = out_label self.bp = bp - self.disp_table = disp_table - self.nh = socket.inet_pton(socket.AF_INET, nh) + self.paths = paths + self.encoded_paths = [] + for path in self.paths: + self.encoded_paths.append(path.encode()) def add_vpp_config(self): self._test.vapi.bier_route_add_del( - self.tbl_id, - self.bp, - self.nh, - self.out_label, - self.disp_table, - is_add=1) + self.tbl_id, self.bp, self.encoded_paths, is_add=1 + ) self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): self._test.vapi.bier_route_add_del( - self.tbl_id, - self.bp, - self.nh, - self.out_label, - self.disp_table, - is_add=0) + self.tbl_id, self.bp, self.encoded_paths, is_add=0 + ) + + def update_paths(self, paths): + self.paths = paths + self.encoded_paths = [] + for path in self.paths: + self.encoded_paths.append(path.encode()) + self._test.vapi.bier_route_add_del( + self.tbl_id, self.bp, self.encoded_paths, is_replace=1 + ) + + def add_path(self, path): + self.encoded_paths.append(path.encode()) + self._test.vapi.bier_route_add_del( + self.tbl_id, self.bp, [path.encode()], is_add=1, is_replace=0 + ) + self.paths.append(path) + self._test.registry.register(self, self._test.logger) + + def remove_path(self, path): + self.encoded_paths.remove(path.encode()) + self._test.vapi.bier_route_add_del( + self.tbl_id, self.bp, [path.encode()], is_add=0, is_replace=0 + ) + self.paths.remove(path) - def __str__(self): - return self.object_id() + def remove_all_paths(self): + self._test.vapi.bier_route_add_del( + self.tbl_id, self.bp, [], is_add=0, is_replace=1 + ) + self.paths = [] def object_id(self): - return "bier-route;[%d:%d:%d:%d]" % (self.tbl_id.set_id, - self.tbl_id.sub_domain_id, - self.tbl_id.hdr_len_id, - self.bp) + return "bier-route;[%d:%d:%d:%d]" % ( + self.tbl_id.set_id, + self.tbl_id.sub_domain_id, + self.tbl_id.hdr_len_id, + self.bp, + ) def query_vpp_config(self): return find_bier_route(self._test, self.tbl_id, self.bp) @@ -166,25 +186,20 @@ class VppBierImp(VppObject): self.src = src def add_vpp_config(self): - res = self._test.vapi.bier_imp_add( - self.tbl_id, - self.src, - self.ibytes) + res = self._test.vapi.bier_imp_add(self.tbl_id, self.src, self.ibytes) self.bi_index = res.bi_index self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): - self._test.vapi.bier_imp_del( - self.bi_index) - - def __str__(self): - return self.object_id() + self._test.vapi.bier_imp_del(self.bi_index) def object_id(self): - return "bier-imp;[%d:%d:%d:%d]" % (self.tbl_id.set_id, - self.tbl_id.sub_domain_id, - self.tbl_id.hdr_len_id, - self.src) + return "bier-imp;[%d:%d:%d:%d]" % ( + self.tbl_id.set_id, + self.tbl_id.sub_domain_id, + self.tbl_id.hdr_len_id, + self.src, + ) def query_vpp_config(self): return find_bier_imp(self._test, self.tbl_id, self.src) @@ -200,18 +215,11 @@ class VppBierDispTable(VppObject): self.id = id def add_vpp_config(self): - self._test.vapi.bier_disp_table_add_del( - self.id, - is_add=1) + self._test.vapi.bier_disp_table_add_del(self.id, is_add=1) self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): - self._test.vapi.bier_disp_table_add_del( - self.id, - is_add=0) - - def __str__(self): - return self.object_id() + self._test.vapi.bier_disp_table_add_del(self.id, is_add=0) def object_id(self): return "bier-disp-table;[%d]" % (self.id) @@ -225,11 +233,13 @@ class VppBierDispEntry(VppObject): BIER Disposition Entry """ - def __init__(self, test, tbl_id, bp, payload_proto, nh, nh_tbl, - rpf_id=~0): + def __init__( + self, test, tbl_id, bp, payload_proto, nh_proto, nh, nh_tbl, rpf_id=~0 + ): self._test = test self.tbl_id = tbl_id self.nh_tbl = nh_tbl + self.nh_proto = nh_proto self.bp = bp self.payload_proto = payload_proto self.rpf_id = rpf_id @@ -240,10 +250,12 @@ class VppBierDispEntry(VppObject): self.tbl_id, self.bp, self.payload_proto, + self.nh_proto, self.nh, self.nh_tbl, self.rpf_id, - is_add=1) + is_add=1, + ) self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): @@ -251,17 +263,15 @@ class VppBierDispEntry(VppObject): self.tbl_id, self.bp, self.payload_proto, + self.nh_proto, self.nh, self.nh_tbl, self.rpf_id, - is_add=0) - - def __str__(self): - return self.object_id() + is_add=0, + ) def object_id(self): - return "bier-disp-entry;[%d:%d]" % (self.tbl_id, - self.bp) + return "bier-disp-entry;[%d:%d]" % (self.tbl_id, self.bp) def query_vpp_config(self): return find_bier_disp_entry(self._test, self.tbl_id, self.bp)