1717from tests .common .helpers .assertions import pytest_assert , pytest_require
1818from tests .common .fixtures .ptfhost_utils import change_mac_addresses # lgtm[py/unused-import]
1919from tests .common .plugins .loganalyzer .loganalyzer import LogAnalyzer , LogAnalyzerError
20-
2120from abc import abstractmethod
2221
2322logger = logging .getLogger (__name__ )
5655
5756LOG_EXPECT_ACL_TABLE_CREATE_RE = ".*Created ACL table.*"
5857LOG_EXPECT_ACL_TABLE_REMOVE_RE = ".*Successfully deleted ACL table.*"
59-
58+ ARP_RESPONDER_SCRIPT_SRC_PATH = '../ansible/roles/test/files/helpers/arp_responder.py'
59+ ARP_RESPONDER_SCRIPT_DEST_PATH = '/opt/arp_responder.py'
6060
6161@pytest .fixture (scope = "module" , params = [IPV4 , IPV6 ])
6262def ip_version (request ):
@@ -269,6 +269,7 @@ def send_and_verify_traffic(ptfadapter, pkt, exp_pkt, src_port, dst_port, pkt_ac
269269 elif pkt_action == ACTION_DROP :
270270 testutils .verify_no_packet (ptfadapter , exp_pkt , dst_port )
271271
272+
272273def get_acl_counter (duthost , table_name , rule_name , timeout = ACL_COUNTERS_UPDATE_INTERVAL ):
273274 """
274275 Get Acl counter packets value
@@ -451,7 +452,7 @@ def _setup_acl_rules(self, duthost, stage, ip_ver, vlan_id, action):
451452 logger .info ("Creating ACL rule matching vlan {} action {}" .format (vlan_id , action ))
452453 duthost .shell ("config load -y {}" .format (dest_path ))
453454
454- pytest_assert (wait_until (60 , 2 , check_rule_counters , duthost ), "Acl rule counters are not ready" )
455+ pytest_assert (wait_until (60 , 2 , 0 , check_rule_counters , duthost ), "Acl rule counters are not ready" )
455456
456457 def _remove_acl_rules (self , duthost , stage , ip_ver ):
457458 table_name = ACL_TABLE_NAME_TEMPLATE .format (stage , ip_ver )
@@ -647,6 +648,9 @@ def _setup_arp_responder(self, ptfhost, vlan_setup_info):
647648
648649 ptfhost .host .options ['variable_manager' ].extra_vars .update (extra_vars )
649650 ptfhost .template (src = 'templates/arp_responder.conf.j2' , dest = '/etc/supervisor/conf.d/arp_responder.conf' )
651+ # Copy arp_responder.py script
652+ # Please be noted that tests/script/arp_responder.py can't deal with arp request with vlan id
653+ ptfhost .copy (src = ARP_RESPONDER_SCRIPT_SRC_PATH , dest = ARP_RESPONDER_SCRIPT_DEST_PATH )
650654
651655 ptfhost .command ('supervisorctl reread' )
652656 ptfhost .command ('supervisorctl update' )
@@ -658,6 +662,7 @@ def _setup_arp_responder(self, ptfhost, vlan_setup_info):
658662 def _teardown_arp_responder (self , ptfhost ):
659663 logger .info ("Stopping arp_responder" )
660664 ptfhost .command ('supervisorctl stop arp_responder' )
665+ ptfhost .file (path = ARP_RESPONDER_SCRIPT_DEST_PATH , state = "absent" )
661666
662667 def pre_running_hook (self , duthost , ptfhost , ip_version , vlan_setup_info ):
663668 # Skip on broadcom platforms
0 commit comments