diff --git a/libs/tip_2x/controller.py b/libs/tip_2x/controller.py index d7bdb4885..50daf1390 100644 --- a/libs/tip_2x/controller.py +++ b/libs/tip_2x/controller.py @@ -650,6 +650,23 @@ class Controller(ConfigureController): self.check_response("GET", resp, self.make_headers(), "", uri) return resp + def get_device_reboot_logs(self, serial_number="", query="?startDate=1726204413&endDate=1726206213&limit=30&logType=2&newest=true", + allure_attach=False): + uri = self.build_uri("device/" + serial_number + "/logs" + query) + logging.info("Sending Command: " + "\n" + + "TimeStamp: " + str(datetime.datetime.utcnow()) + "\n" + + "URI: " + str(uri) + "\n" + + "Headers: " + str(self.make_headers())) + if allure_attach: + allure.attach(name="Sending Command:", body="Sending Command: " + "\n" + + "TimeStamp: " + str(datetime.datetime.utcnow()) + "\n" + + "URI: " + str(uri) + "\n" + + "Headers: " + str(self.make_headers())) + resp = requests.get(uri, headers=self.make_headers(), verify=False, timeout=120) + if allure_attach: + self.check_response("GET", resp, self.make_headers(), "", uri) + return resp + def get_device_health_checks(self, serial_number): uri = self.build_uri("device/" + serial_number + "/healthchecks") logging.info("Sending Command: " + "\n" + @@ -692,6 +709,22 @@ class Controller(ConfigureController): self.check_response("GET", resp, self.make_headers(), "", uri) return resp + def get_device_statistics_teardown(self, serial_number="", query="?newest=true&limit=30", allure_attach=False): + uri = self.build_uri("device/" + serial_number + "/statistics" + query) + logging.info("Sending Command: " + "\n" + + "TimeStamp: " + str(datetime.datetime.utcnow()) + "\n" + + "URI: " + str(uri) + "\n" + + "Headers: " + str(self.make_headers())) + if allure_attach: + allure.attach(name="Sending Command:", body="Sending Command: " + "\n" + + "TimeStamp: " + str(datetime.datetime.utcnow()) + "\n" + + "URI: " + str(uri) + "\n" + + "Headers: " + str(self.make_headers())) + resp = requests.get(uri, headers=self.make_headers(), verify=False, timeout=120) + if allure_attach: + self.check_response("GET", resp, self.make_headers(), "", uri) + return resp + def get_device_status(self, serial_number): uri = self.build_uri("device/" + serial_number + "/status") logging.info("Sending Command: " + "\n" + diff --git a/tests/conftest.py b/tests/conftest.py index 87920d939..10a27ddd6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -498,7 +498,8 @@ def get_dut_logs_per_test_case(request, run_lf, get_testbed_details, get_target_ get_target_object.get_dut_library_object().run_generic_command( cmd="logger start testcase: " + instance_name, idx=i) - + start_time = int(time.time()) + logging.info("start time:- " + str(start_time)) def collect_logs(): for i in range(len(get_testbed_details["device_under_tests"])): get_target_object.get_dut_library_object().run_generic_command( @@ -514,6 +515,32 @@ def get_dut_logs_per_test_case(request, run_lf, get_testbed_details, get_target_ uci_show = get_target_object.get_dut_library_object().run_generic_command(idx=i, attach_allure=False, cmd="uci show", print_log=False) allure.attach(body=uci_show, name="uci show") + end_time = int(time.time()) + logging.info("end time:- " + str(end_time)) + device_name = get_testbed_details["device_under_tests"][i]["identifier"] + query_ = f"?startDate={start_time}&endDate={end_time}" + resp = get_target_object.controller_library_object.get_device_statistics_teardown(device_name, query=query_) + if resp.status_code == 200: + allure.attach(body=str(resp.json()), name="device_statistics_per_test_case") + else: + logging.info("resp.status_code:- " + str(resp.status_code)) + # Check reboot logs + query_ = f"?logType=2&startDate={start_time}&endDate={end_time}" + resp = get_target_object.controller_library_object.get_device_reboot_logs(device_name, query=query_) + if resp.status_code == 200: + allure.attach(body=str(resp.json()), name="device_reboot_logs_per_test_case") + response = resp.json() + # crash log validation + if response["values"]: + resp = get_target_object.controller_library_object.get_device_reboot_logs(device_name, + query="?logType=2") + allure.attach(body=str(resp.json()), name="all_device_reboot_logs") + logging.info("Reboot detected on AP side") + pytest.exit("Reboot detected on AP side") + else: + logging.info("resp.status_code:- " + str(resp.status_code)) + + request.addfinalizer(collect_logs)