From a693b66bdd0d07b3a92ded9510e549dace47fbf7 Mon Sep 17 00:00:00 2001 From: bingwang Date: Tue, 1 Sep 2020 05:09:26 -0700 Subject: [PATCH] Update test_upgrade_path 1. Fix bug in check_sonic_version_after_reboot 2. Refactor code in test_upgrade_path 3. Add a filter for arp_responder 4. Disable sanitycheck and LogAnalyzer for upgrade_path --- .../test/files/ptftests/advanced-reboot.py | 14 ++++++------- tests/scripts/arp_responder.py | 2 +- tests/upgrade_path/test_upgrade_path.py | 21 ++++++++----------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/ansible/roles/test/files/ptftests/advanced-reboot.py b/ansible/roles/test/files/ptftests/advanced-reboot.py index 16d46cbdf78..74fc58690a9 100644 --- a/ansible/roles/test/files/ptftests/advanced-reboot.py +++ b/ansible/roles/test/files/ptftests/advanced-reboot.py @@ -970,7 +970,7 @@ def handle_post_reboot_test_reports(self): self.assertTrue(is_good, errors) def runTest(self): - self.pre_reboot_test_setup() + self.pre_reboot_test_setup() try: self.log("Check that device is alive and pinging") self.fails['dut'].add("DUT is not ready for test") @@ -989,6 +989,8 @@ def runTest(self): self.handle_warm_reboot_health_check() self.handle_post_reboot_health_check() + # Check sonic version after reboot + self.check_sonic_version_after_reboot() except Exception as e: self.fails['dut'].add(e) finally: @@ -1019,10 +1021,8 @@ def check_sonic_version_after_reboot(self): current_version = str(stdout[0]).replace('\n', '') self.log("Current={} Target={}".format(current_version, target_version)) if current_version != target_version: - self.fails['dut'].add("Sonic upgrade failed. Target={} Current={}".format(\ + raise Exception("Sonic upgrade failed. Target={} Current={}".format(\ target_version, current_version)) - return False - return True def extract_no_cpu_replies(self, arr): """ @@ -1047,9 +1047,6 @@ def reboot_dut(self): if stderr != []: self.log("stderr from %s: %s" % (self.reboot_type, str(stderr))) self.log("return code from %s: %s" % (self.reboot_type, str(return_code))) - # Check sonic version after reboot - if not self.check_sonic_version_after_reboot(): - thread.interrupt_main() # Note: a timeout reboot in ssh session will return a 255 code if return_code not in [0, 255]: @@ -1323,6 +1320,7 @@ def check_forwarding_resume(self): return self.asic_state.get_state_time(state), self.get_asic_vlan_reachability() def ping_data_plane(self, light_probe=True): + self.dataplane.flush() replies_from_servers = self.pingFromServers() if replies_from_servers > 0 or not light_probe: replies_from_upper = self.pingFromUpperTier() @@ -1354,7 +1352,7 @@ def wait_dut_to_warm_up(self): up_time = datetime.datetime.now() up_secs = (datetime.datetime.now() - up_time).total_seconds() if up_secs > dut_stabilize_secs: - break; + break else: # reset up_time up_time = None diff --git a/tests/scripts/arp_responder.py b/tests/scripts/arp_responder.py index 6bc32dc2f16..98cfe85b15b 100644 --- a/tests/scripts/arp_responder.py +++ b/tests/scripts/arp_responder.py @@ -45,7 +45,7 @@ def __del__(self): self.socket.close() def bind(self): - self.socket = scapy2.conf.L2listen(iface=self.iface) + self.socket = scapy2.conf.L2listen(iface=self.iface, filter='arp') def handler(self): return self.socket diff --git a/tests/upgrade_path/test_upgrade_path.py b/tests/upgrade_path/test_upgrade_path.py index 36296f578a5..33051673c42 100644 --- a/tests/upgrade_path/test_upgrade_path.py +++ b/tests/upgrade_path/test_upgrade_path.py @@ -11,9 +11,13 @@ from tests.common.fixtures.ptfhost_utils import copy_ptftests_directory # lgtm[py/unused-import] from tests.common.fixtures.ptfhost_utils import change_mac_addresses # lgtm[py/unused-import] +from tests.common.fixtures.ptfhost_utils import remove_ip_addresses # lgtm[py/unused-import] +from tests.common.fixtures.ptfhost_utils import copy_arp_responder_py # lgtm[py/unused-import] pytestmark = [ - pytest.mark.topology('any') + pytest.mark.topology('any'), + pytest.mark.sanity_check(skip_sanity=True), + pytest.mark.disable_loganalyzer ] logger = logging.getLogger(__name__) @@ -49,9 +53,6 @@ def cleanup(localhost, ptfhost, duthost, upgrade_path_lists): def prepare_ptf(ptfhost, duthost): logger.info("Preparing ptfhost") - ptfhost.script("./scripts/remove_ip.sh") - ptfhost.copy(src="../ansible/roles/test/files/helpers/arp_responder.py", - dest="/opt") # Prapare vlan conf file mg_facts = duthost.minigraph_facts(host=duthost.hostname)['ansible_facts'] @@ -80,7 +81,7 @@ def prepare_ptf(ptfhost, duthost): @pytest.fixture(scope="module") -def ptf_params(duthost, nbrhosts): +def ptf_params(duthost, nbrhosts, creds): mg_facts = duthost.minigraph_facts(host=duthost.hostname)['ansible_facts'] lo_v6_prefix = "" @@ -96,14 +97,10 @@ def ptf_params(duthost, nbrhosts): #TODO:Update to vm_hosts.append(value['host'].host.mgmt_ip) vm_hosts.append(value['host'].host.options['inventory_manager'].get_host(value['host'].hostname).vars['ansible_host']) - hostVars = duthost.host.options['variable_manager']._hostvars[duthost.hostname] - inventory = hostVars['inventory_file'].split('/')[-1] - secrets = duthost.host.options['variable_manager']._hostvars[duthost.hostname]['secret_group_vars'] - ptf_params = { "verbose": False, - "dut_username": secrets[inventory]['sonicadmin_user'], - "dut_password": secrets[inventory]['sonicadmin_password'], + "dut_username": creds.get('sonicadmin_user'), + "dut_password": creds.get('sonicadmin_password'), "dut_hostname": duthost.host.options['inventory_manager'].get_host(duthost.hostname).vars['ansible_host'], "reboot_limit_in_seconds": 30, "reboot_type": "warm-reboot", @@ -161,6 +158,6 @@ def test_upgrade_path(localhost, duthost, ptfhost, upgrade_path_lists, ptf_param platform_dir="ptftests", params=test_params, platform="remote", - qlen=1000, + qlen=10000, log_file=log_file)