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 <jed@bitratchet.com>
This commit is contained in:
Jed Reynolds
2022-02-04 15:49:59 -08:00
committed by shivam
parent 0004047dc6
commit 2dbbeb8e26

View File

@@ -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")
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -