From 2dbbeb8e265275d9d4932d2813bd2edf05b8d235 Mon Sep 17 00:00:00 2001 From: Jed Reynolds Date: Fri, 4 Feb 2022 15:49:59 -0800 Subject: [PATCH] run_cv_scenario.py: fixes strange return failure message plus... - updates print statements to logger - starts work on report name Signed-off-by: Jed Reynolds --- py-scripts/run_cv_scenario.py | 92 ++++++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 29 deletions(-) diff --git a/py-scripts/run_cv_scenario.py b/py-scripts/run_cv_scenario.py index 51d3ffbc..7533f534 100755 --- a/py-scripts/run_cv_scenario.py +++ b/py-scripts/run_cv_scenario.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 # This script will set the LANforge to a BLANK database then it will load the specified database # and start a graphical report +import logging import argparse import importlib import os @@ -14,6 +15,8 @@ if sys.version_info[0] != 3: exit(1) sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../"))) +logger = logging.getLogger(__name__) +lf_logger_config = importlib.import_module("py-scripts.lf_logger_config") LFUtils = importlib.import_module("py-json.LANforge.LFUtils") lfcli_base = importlib.import_module("py-json.LANforge.lfcli_base") @@ -32,7 +35,7 @@ Realm = realm.Realm class RunCvScenario(LFCliBase): def __init__(self, lfhost="localhost", lfport=8080, debug_=False, lanforge_db_=None, cv_scenario_=None, - cv_test_=None, test_scenario_=None): + cv_test_=None, test_scenario_=None, report_file_name=None): super().__init__(_lfjson_host=lfhost, _lfjson_port=lfport, _debug=debug_, _exit_on_error=True, _exit_on_fail=True) self.lanforge_db = lanforge_db_ @@ -40,7 +43,7 @@ class RunCvScenario(LFCliBase): self.cv_test = cv_test_ self.test_profile = test_scenario_ self.localrealm = Realm(lfclient_host=lfhost, lfclient_port=lfport, debug_=debug_) - self.report_name = None + self.report_name = report_file_name self.load_timeout_sec = 2 * 60 def get_report_file_name(self): @@ -62,7 +65,7 @@ class RunCvScenario(LFCliBase): while (attempts > 0) and (port_counter > 0): sleep(1) attempts -= 1 - print("looking for ports like vap+") + logger.debug("looking for ports like vap+") port_list = self.localrealm.find_ports_like("vap+") alias_map = LFUtils.portListToAliasMap(port_list) port_counter = len(alias_map) @@ -74,8 +77,8 @@ class RunCvScenario(LFCliBase): break if (port_counter != 0) and (attempts == 0): - print("There appears to be a vAP in this database, quitting.") - pprint.pprint(alias_map) + logger.error("There appears to be a vAP in this database, quitting.") + logger.error(pprint.pformat(alias_map)) exit(1) data = { @@ -103,7 +106,7 @@ class RunCvScenario(LFCliBase): load_completed = False while not load_completed: if time.time() > (begin_time + self.load_timeout_sec): - print("Unable to load database within %d sec" % self.load_timeout_sec) + logger.error("Unable to load database within %d sec" % self.load_timeout_sec) exit(1) events_response = self.json_get("/events/since/%s" % previous_event_id) pronoun = None @@ -112,7 +115,7 @@ class RunCvScenario(LFCliBase): elif "event" in events_response: pronoun = "event" if not pronoun: - pprint.pprint(("events response", events_response)) + logger.debug(pprint.pformat(("events response", events_response))) raise ValueError("incorrect events response") for event_o in events_response[pronoun]: if load_completed: @@ -123,7 +126,7 @@ class RunCvScenario(LFCliBase): if not record["event description"]: continue if record["event description"].startswith("LOAD COMPLETED at "): - print("load completed: %s " % record["event description"]) + logger.info("load completed: %s " % record["event description"]) load_completed = True break if not load_completed: @@ -133,10 +136,10 @@ class RunCvScenario(LFCliBase): status_response = self.json_get("/") if "text_records_last_updated_ms" in status_response: blobs_last_updated = int(status_response["text_records_last_updated_ms"]) - # print("*** blobs updated at %d" % blobs_last_updated) + logger.debug("blobs updated at %d" % blobs_last_updated) else: begin_time = round(time.time() * 1000) - print("no text_records_last_updated_ms, using %d " % begin_time) + logger.info("no text_records_last_updated_ms, using %d " % begin_time) # next we will want to sync our text blobs up self.json_post("/cli-json/show_text_blob", { "type": "ALL", @@ -147,12 +150,12 @@ class RunCvScenario(LFCliBase): while not load_completed: sleep(1) if time.time() > (begin_time + (6 * 1000)): - print("waited %d sec for text blobs to update" % self.load_timeout_sec) + logger.info("waited %d sec for text blobs to update" % self.load_timeout_sec) break status_response = self.json_get("/") if "text_records_last_updated_ms" in status_response: updated = int(status_response["text_records_last_updated_ms"]) - print(", , , , , , , , , updated at %d" % updated) + logger.debug("text_records updated at %d" % updated) if updated > blobs_last_updated: break else: @@ -162,7 +165,7 @@ class RunCvScenario(LFCliBase): "name": "ALL" }) delta: float = (time.time() * 1000) - begin_time - print("blobs loaded in %d ms" % delta) + logger.debug("blobs loaded in %d ms" % delta) # next show duts self.json_post("/cli-json/show_dut", {"name": "ALL"}) @@ -207,46 +210,54 @@ class RunCvScenario(LFCliBase): try: debug_par = "" if debug_: - debug_par = "?_debug=1" + debug_par = "?__debug=1" if command.endswith("is_built"): - print("Waiting for scenario to build...", end='') + logger.info("Waiting for scenario to build...", ) self.localrealm.wait_while_building(debug_=False) - print("...proceeding") + logger.info("...proceeding") elif command.startswith("sleep "): nap = int(command.split(" ")[1]) - print("sleeping %d..." % nap) + logger.info("sleeping %d..." % nap) sleep(nap) - print("...proceeding") + logger.info("...proceeding") elif command == "cv list_instances": response_json = [] - print("running %s..." % command, end='') + logger.debug("running %s..." % command) response = self.json_post("/gui-json/cmd%s" % debug_par, data, debug_=debug_, response_json_list_=response_json) if debug_: - LFUtils.debug_printer.pprint(response) + logger.debug(pprint.pformat(response)) + + # TODO: update report file location + # elif command.startswith("cv get test_ref 'Report Location:'"), + # self.report_file = ... else: response_json = [] - print("running %s..." % command, end='') + logger.debug("running %s..." % command) self.json_post("/gui-json/cmd%s" % debug_par, data, debug_=False, response_json_list_=response_json) if debug_: - LFUtils.debug_printer.pprint(response_json) - print("...proceeding") + logger.debug(pprint.pformat(response_json)) + logger.info("...proceeding") except Exception as x: - print(x) + logger.error(x) self._pass("report finished", print_=True) + return True def stop(self): - pass + logger.warning("Stop method does nothing") + return True def cleanup(self): - pass + logger.warning("Cleanup method does nothing") + return True def main(): + logger_config = lf_logger_config.lf_logger_config() lfjson_host = "localhost" lfjson_port = 8080 parser = argparse.ArgumentParser( @@ -264,6 +275,9 @@ Example: parser.add_argument("-n", "--cv_test", type=str, help="Chamber View test") parser.add_argument("-s", "--test_profile", type=str, help="Name of the saved CV test profile") parser.add_argument("--debug", help='Enable debugging', default=False, action="store_true") + parser.add_argument("--log_level", help='debug message verbosity', type=str) + # TODO: update report output file or directory + # parser.add_argument("--report_file_name", help="name of the report file", type=str) args = parser.parse_args() if args.lfmgr is not None: @@ -273,7 +287,12 @@ Example: debug = False if args.debug is not None: debug = args.debug - run_cv_scenario = RunCvScenario(lfjson_host, lfjson_port, debug_=debug) + + report_file_n = "untitled_report" + if args.report_file_name: + report_file_n = args.report_file_name + + run_cv_scenario = RunCvScenario(lfjson_host, lfjson_port, debug_=debug, report_file_name=report_file_n) if args.lanforge_db is not None: run_cv_scenario.lanforge_db = args.lanforge_db @@ -283,6 +302,17 @@ Example: run_cv_scenario.cv_test = args.cv_test if args.test_profile is not None: run_cv_scenario.test_profile = args.test_profile + if args.log_level is not None: + if args.log_level == 'debug': + logger_config.set_level_debug() + elif args.log_level == 'info': + logger_config.set_level_info() + elif args.log_level == 'warning': + logger_config.set_level_warning() + elif args.log_level == 'error': + logger_config.set_level_error() + elif args.log_level == 'critical': + logger_config.set_level_critical() if (run_cv_scenario.lanforge_db is None) or (run_cv_scenario.lanforge_db == ""): raise ValueError("Please specificy scenario database name with --scenario_db") @@ -307,8 +337,12 @@ Example: print(run_cv_scenario.get_fail_message()) exit(1) - report_file = run_cv_scenario.get_report_file_name() - print("Report file saved to " + report_file) + # TODO: report file name is not finished + # report_file = run_cv_scenario.get_report_file_name() + # if report_file: + # print("Report file saved to: %s" % report_file) + # else: + # print("Report file location missing") # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -