X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_bier.py;h=c46530af077824c7a1d65c7e0e1bfa45a1a19415;hb=853cc9f2ad3ee52cbdd891fb09d51c25678baed0;hp=328d4f03eb5a65eadc8596032e224795c273351d;hpb=9128637ee8f7b0d903551f165a1447d427e8dd19;p=vpp.git diff --git a/test/vpp_bier.py b/test/vpp_bier.py index 328d4f03eb5..c46530af077 100644 --- a/test/vpp_bier.py +++ b/test/vpp_bier.py @@ -4,7 +4,6 @@ import socket from vpp_object import VppObject -from vpp_ip_route import MPLS_LABEL_INVALID, VppRoutePath class BIER_HDR_PAYLOAD: @@ -18,7 +17,7 @@ class BIER_HDR_PAYLOAD: BIER_HDR_PROTO_OAM = 8 -class VppBierTableID(): +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 @@ -28,9 +27,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 @@ -38,10 +39,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 @@ -57,8 +60,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 @@ -66,10 +68,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 @@ -85,25 +89,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) @@ -119,30 +116,58 @@ class VppBierRoute(VppObject): self.tbl_id = tbl_id self.bp = bp 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.paths, - 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.paths, - is_add=0) + self.tbl_id, self.bp, self.encoded_paths, is_add=0 + ) - def __str__(self): - return self.object_id() + 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 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) @@ -160,25 +185,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) @@ -194,18 +214,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) @@ -219,11 +232,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 @@ -234,10 +249,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): @@ -245,17 +262,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)