Skip to content

Commit 3654813

Browse files
committed
SRV6: Fix invalid tests
As of sonic-net/sonic-buildimage#21467 some tests are failing due to a validation that `block-len+node-len = locator-len`. However in some of the test cases this wasn't actually true, meaning the tests were invalid as designed. Update the test cases to be valid by this logic. Should also universally wait for interface deletion at tear down to make sure it doesn't cause failures in the next test. Signed-off-by: Brad House (@bradh352)
1 parent ae5a50b commit 3654813

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

tests/test_srv6.py

+19-7
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ def create_l3_intf(self, interface, vrf_name):
8989
return get_created_entry(self.adb.db_connection, table, existed_entries)
9090

9191
def remove_l3_intf(self, interface):
92+
initial_interface_entries = set(self.adb.get_keys("ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"))
9293
self.cdb.delete_entry("INTERFACE", interface)
94+
self.adb.wait_for_n_keys("ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE", len(initial_interface_entries) - 1)
9395

9496
def get_nexthop_id(self, ip_address):
9597
next_hop_entries = get_exist_entries(self.adb.db_connection, "ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP")
@@ -687,7 +689,9 @@ def create_l3_intf(self, interface, vrf_name):
687689
return get_created_entry(self.adb.db_connection, table, existed_entries)
688690

689691
def remove_l3_intf(self, interface):
692+
initial_interface_entries = set(self.adb.get_keys("ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"))
690693
self.cdb.delete_entry("INTERFACE", interface)
694+
self.adb.wait_for_n_keys("ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE", len(initial_interface_entries) - 1)
691695

692696
def get_nexthop_id(self, ip_address):
693697
next_hop_entries = get_exist_entries(self.adb.db_connection, "ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP")
@@ -808,9 +812,8 @@ def teardown_srv6(self, dvs):
808812
self.remove_ip_address("Ethernet104", "192.0.2.2/30")
809813

810814
# remove interface
811-
initial_interface_entries = set(self.adb.get_keys("ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE"))
812815
self.remove_l3_intf("Ethernet104")
813-
self.adb.wait_for_n_keys("ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE", len(initial_interface_entries) - 1)
816+
814817

815818
def test_AddRemoveSrv6MySidEnd(self, dvs, testlog):
816819

@@ -821,7 +824,7 @@ def test_AddRemoveSrv6MySidEnd(self, dvs, testlog):
821824
self.setup_srv6(dvs)
822825

823826
# configure srv6 locator
824-
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/64 block-len 32 node-len 16 func-bits 16\"")
827+
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/48 block-len 32 node-len 16 func-bits 16\"")
825828

826829
# create srv6 mysid end behavior
827830
dvs.runcmd("ip -6 route add fc00:0:1:64::/128 encap seg6local action End dev sr0")
@@ -857,6 +860,7 @@ def test_AddRemoveSrv6MySidEnd(self, dvs, testlog):
857860

858861
self.teardown_srv6(dvs)
859862

863+
860864
def test_AddRemoveSrv6MySidEndX(self, dvs, testlog):
861865

862866
_, output = dvs.runcmd(f"vtysh -c 'show zebra dplane providers'")
@@ -866,7 +870,7 @@ def test_AddRemoveSrv6MySidEndX(self, dvs, testlog):
866870
self.setup_srv6(dvs)
867871

868872
# configure srv6 locator
869-
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/64 block-len 32 node-len 16 func-bits 16\"")
873+
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/48 block-len 32 node-len 16 func-bits 16\"")
870874

871875
# create srv6 mysid end.x behavior
872876
dvs.runcmd("ip -6 route add fc00:0:1:65::/128 encap seg6local action End.X nh6 2001::1 dev sr0")
@@ -906,6 +910,7 @@ def test_AddRemoveSrv6MySidEndX(self, dvs, testlog):
906910

907911
self.teardown_srv6(dvs)
908912

913+
909914
@pytest.mark.skipif(LooseVersion(platform.release()) < LooseVersion('5.11'),
910915
reason="This test requires Linux kernel 5.11 or higher")
911916
def test_AddRemoveSrv6MySidEndDT4(self, dvs, testlog):
@@ -920,7 +925,7 @@ def test_AddRemoveSrv6MySidEndDT4(self, dvs, testlog):
920925
dvs.runcmd("sysctl -w net.vrf.strict_mode=1")
921926

922927
# configure srv6 locator
923-
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/64 block-len 32 node-len 16 func-bits 16\"")
928+
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/48 block-len 32 node-len 16 func-bits 16\"")
924929

925930
# create srv6 mysid end.dt4 behavior
926931
dvs.runcmd("ip -6 route add fc00:0:1:6b::/128 encap seg6local action End.DT4 vrftable {} dev sr0".format(self.vrf_table_id))
@@ -956,6 +961,7 @@ def test_AddRemoveSrv6MySidEndDT4(self, dvs, testlog):
956961

957962
self.teardown_srv6(dvs)
958963

964+
959965
def test_AddRemoveSrv6MySidEndDT6(self, dvs, testlog):
960966

961967
_, output = dvs.runcmd(f"vtysh -c 'show zebra dplane providers'")
@@ -965,7 +971,7 @@ def test_AddRemoveSrv6MySidEndDT6(self, dvs, testlog):
965971
self.setup_srv6(dvs)
966972

967973
# configure srv6 locator
968-
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/64 block-len 32 node-len 16 func-bits 16\"")
974+
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/48 block-len 32 node-len 16 func-bits 16\"")
969975

970976
# create srv6 mysid end.dt6 behavior
971977
dvs.runcmd("ip -6 route add fc00:0:1:6b::/128 encap seg6local action End.DT6 vrftable {} dev sr0".format(self.vrf_table_id))
@@ -1003,6 +1009,7 @@ def test_AddRemoveSrv6MySidEndDT6(self, dvs, testlog):
10031009

10041010
self.teardown_srv6(dvs)
10051011

1012+
10061013
@pytest.mark.skipif(LooseVersion(platform.release()) < LooseVersion('5.14'),
10071014
reason="This test requires Linux kernel 5.14 or higher")
10081015
def test_AddRemoveSrv6MySidEndDT46(self, dvs, testlog):
@@ -1017,7 +1024,7 @@ def test_AddRemoveSrv6MySidEndDT46(self, dvs, testlog):
10171024
dvs.runcmd("sysctl -w net.vrf.strict_mode=1")
10181025

10191026
# configure srv6 locator
1020-
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/64 block-len 32 node-len 16 func-bits 16\"")
1027+
dvs.runcmd("vtysh -c \"configure terminal\" -c \"segment-routing\" -c \"srv6\" -c \"locators\" -c \"locator loc1\" -c \"prefix fc00:0:1::/48 block-len 32 node-len 16 func-bits 16\"")
10211028

10221029
# create srv6 mysid end.dt46 behavior
10231030
dvs.runcmd("ip -6 route add fc00:0:1:6b::/128 encap seg6local action End.DT46 vrftable {} dev sr0".format(self.vrf_table_id))
@@ -1053,6 +1060,7 @@ def test_AddRemoveSrv6MySidEndDT46(self, dvs, testlog):
10531060

10541061
self.teardown_srv6(dvs)
10551062

1063+
10561064
@pytest.mark.skipif(LooseVersion(platform.release()) < LooseVersion('6.1'),
10571065
reason="This test requires Linux kernel 6.1 or higher")
10581066
def test_AddRemoveSrv6MySidUN(self, dvs, testlog):
@@ -1100,6 +1108,7 @@ def test_AddRemoveSrv6MySidUN(self, dvs, testlog):
11001108

11011109
self.teardown_srv6(dvs)
11021110

1111+
11031112
@pytest.mark.skipif(LooseVersion(platform.release()) < LooseVersion('6.6'),
11041113
reason="This test requires Linux kernel 6.6 or higher")
11051114
def test_AddRemoveSrv6MySidUA(self, dvs, testlog):
@@ -1149,6 +1158,7 @@ def test_AddRemoveSrv6MySidUA(self, dvs, testlog):
11491158

11501159
self.teardown_srv6(dvs)
11511160

1161+
11521162
@pytest.mark.skipif(LooseVersion(platform.release()) < LooseVersion('5.11'),
11531163
reason="This test requires Linux kernel 5.11 or higher")
11541164
def test_AddRemoveSrv6MySidUDT4(self, dvs, testlog):
@@ -1199,6 +1209,7 @@ def test_AddRemoveSrv6MySidUDT4(self, dvs, testlog):
11991209

12001210
self.teardown_srv6(dvs)
12011211

1212+
12021213
def test_AddRemoveSrv6MySidUDT6(self, dvs, testlog):
12031214

12041215
_, output = dvs.runcmd(f"vtysh -c 'show zebra dplane providers'")
@@ -1246,6 +1257,7 @@ def test_AddRemoveSrv6MySidUDT6(self, dvs, testlog):
12461257

12471258
self.teardown_srv6(dvs)
12481259

1260+
12491261
@pytest.mark.skipif(LooseVersion(platform.release()) < LooseVersion('5.14'),
12501262
reason="This test requires Linux kernel 5.14 or higher")
12511263
def test_AddRemoveSrv6MySidUDT46(self, dvs, testlog):

0 commit comments

Comments
 (0)