@@ -61,8 +61,9 @@ def expected_dhcp_rules_for_standby(duthost_dualtor):
6161 return expected_dhcp_rules
6262
6363@pytest .fixture (scope = "module" )
64- def docker_network (duthost ):
64+ def docker_network (duthosts , enum_rand_one_per_hwsku_hostname ):
6565
66+ duthost = duthosts [enum_rand_one_per_hwsku_hostname ]
6667 output = duthost .command ("docker inspect bridge" )
6768
6869 docker_containers_info = json .loads (output ['stdout' ])[0 ]['Containers' ]
@@ -92,18 +93,18 @@ def docker_network(duthost):
9293 return docker_network
9394
9495@pytest .fixture (scope = "function" )
95- def collect_ignored_rules (duthosts , rand_one_dut_hostname ):
96+ def collect_ignored_rules (duthosts , enum_rand_one_per_hwsku_hostname ):
9697 """
9798 Collect existing iptables rules before test, set them as ignored as they are not related to CACL test cases.
9899
99100 Args:
100101 duthosts: All DUTs belong to the testbed.
101- rand_one_dut_hostname : hostname of a random chosen dut to run test.
102+ enum_rand_one_per_hwsku_hostname : hostname of a random chosen dut to run test.
102103
103104 Returns:
104105 None
105106 """
106- duthost = duthosts [rand_one_dut_hostname ]
107+ duthost = duthosts [enum_rand_one_per_hwsku_hostname ]
107108
108109 ignored_rules_v4 = duthost .command ("iptables -S" )["stdout_lines" ]
109110 ignored_rules_v6 = duthost .command ("ip6tables -S" )["stdout_lines" ]
@@ -114,20 +115,20 @@ def collect_ignored_rules(duthosts, rand_one_dut_hostname):
114115 return ignored_rules
115116
116117@pytest .fixture (scope = "function" )
117- def clean_scale_rules (duthosts , rand_one_dut_hostname , collect_ignored_rules ):
118+ def clean_scale_rules (duthosts , enum_rand_one_per_hwsku_hostname , collect_ignored_rules ):
118119 """
119120 Clear other control ACL rules before test to avoid miscalucation,
120121 delete ACL template json file and clean ACL rules, recover configuration after test.
121122
122123 Args:
123124 duthosts: All DUTs belong to the testbed.
124- rand_one_dut_hostname : hostname of a random chosen dut to run test.
125+ enum_rand_one_per_hwsku_hostname : hostname of a random chosen dut to run test.
125126 collect_ignored_rules: ignored iptable/ip6table rules.
126127
127128 Returns:
128129 None
129130 """
130- duthost = duthosts [rand_one_dut_hostname ]
131+ duthost = duthosts [enum_rand_one_per_hwsku_hostname ]
131132
132133 yield
133134
@@ -805,15 +806,15 @@ def verify_nat_cacl(duthost, localhost, creds, docker_network, asic_index):
805806 unexpected_ip6tables_rules = set (actual_ip6tables_rules ) - set (expected_ip6tables_rules )
806807 pytest_assert (len (unexpected_ip6tables_rules ) == 0 , "Unexpected ip6tables nat rules: {}" .format (repr (unexpected_ip6tables_rules )))
807808
808- def test_cacl_application_nondualtor (duthosts , tbinfo , rand_one_dut_hostname , localhost , creds , docker_network ):
809+ def test_cacl_application_nondualtor (duthosts , tbinfo , enum_rand_one_per_hwsku_hostname , localhost , creds , docker_network ):
809810 """
810811 Test case to ensure caclmgrd is applying control plane ACLs properly
811812
812813 This is done by generating our own set of expected iptables and ip6tables
813814 rules based on the DuT's configuration and comparing them against the
814815 actual iptables/ip6tables rules on the DuT.
815816 """
816- duthost = duthosts [rand_one_dut_hostname ]
817+ duthost = duthosts [enum_rand_one_per_hwsku_hostname ]
817818 verify_cacl (duthost , tbinfo , localhost , creds , docker_network )
818819
819820def test_cacl_application_dualtor (duthost_dualtor , tbinfo , localhost , creds , docker_network , expected_dhcp_rules_for_standby ):
@@ -826,23 +827,25 @@ def test_cacl_application_dualtor(duthost_dualtor, tbinfo, localhost, creds, doc
826827 """
827828 verify_cacl (duthost_dualtor , tbinfo , localhost , creds , docker_network , expected_dhcp_rules_for_standby )
828829
829- def test_multiasic_cacl_application (duthosts , tbinfo , rand_one_dut_hostname , localhost , creds , docker_network , enum_frontend_asic_index ):
830+ def test_multiasic_cacl_application (duthosts , tbinfo , enum_rand_one_per_hwsku_hostname , localhost , creds , docker_network , enum_frontend_asic_index ):
830831 """
831832 Test case to ensure caclmgrd is applying control plane ACLs properly on multi-ASIC platform.
832833 """
833- duthost = duthosts [rand_one_dut_hostname ]
834+ duthost = duthosts [enum_rand_one_per_hwsku_hostname ]
834835 verify_cacl (duthost , tbinfo , localhost , creds , docker_network , None , enum_frontend_asic_index )
835- verify_nat_cacl (duthost , localhost , creds , docker_network , enum_frontend_asic_index )
836+ # Check added to handle testing on supervisor which could be multi-asic dut without any frontend asic
837+ if enum_frontend_asic_index :
838+ verify_nat_cacl (duthost , localhost , creds , docker_network , enum_frontend_asic_index )
836839
837- def test_cacl_scale_rules_ipv4 (duthosts , rand_one_dut_hostname , collect_ignored_rules , clean_scale_rules ):
840+ def test_cacl_scale_rules_ipv4 (duthosts , enum_rand_one_per_hwsku_hostname , collect_ignored_rules , clean_scale_rules ):
838841 """
839842 Test case to ensure cover scale rules for control plan ACL for ipv4
840843
841844 This is done by collecting existing iptable rules as ingnored rules list, creating scale rules for SNMP-ACL, SSH-ONLY, NTP-ACL tables
842845 and generating our own set of expected iptables rules based on the DUT's configuration and comparing them against the actual iptables
843846 rules on the DuT.
844847 """
845- duthost = duthosts [rand_one_dut_hostname ]
848+ duthost = duthosts [enum_rand_one_per_hwsku_hostname ]
846849 ignored_iptable_rules_v4 = collect_ignored_rules ["v4" ]
847850
848851 generate_scale_rules (duthost , "ipv4" )
@@ -868,15 +871,15 @@ def test_cacl_scale_rules_ipv4(duthosts, rand_one_dut_hostname, collect_ignored_
868871 unexpected_iptables_rules = set (actual_iptables_rules ) - set (expected_iptables_rules ) - set (ignored_iptable_rules_v4 )
869872 pytest_assert (len (unexpected_iptables_rules ) == 0 , "Unexpected iptables rules: {}" .format (repr (unexpected_iptables_rules )))
870873
871- def test_cacl_scale_rules_ipv6 (duthosts , rand_one_dut_hostname , collect_ignored_rules , clean_scale_rules ):
874+ def test_cacl_scale_rules_ipv6 (duthosts , enum_rand_one_per_hwsku_hostname , collect_ignored_rules , clean_scale_rules ):
872875 """
873876 Test case to ensure cover scale rules for control plan ACL for ipv6
874877
875878 This is done by collecting existing ip6table rules as ingnored rules list, creating scale rules for SNMP-ACL, SSH-ONLY, NTP-ACL tables
876879 and generating our own set of expected ip6tables rules based on the DUT's configuration and comparing them against the actual ip6tables
877880 rules on the DuT.
878881 """
879- duthost = duthosts [rand_one_dut_hostname ]
882+ duthost = duthosts [enum_rand_one_per_hwsku_hostname ]
880883 ignored_iptable_rules_v6 = collect_ignored_rules ["v6" ]
881884
882885 generate_scale_rules (duthost , "ipv6" )
0 commit comments