lfcli_base.py: refactoring includes methods previously defined in sta_connect

This commit is contained in:
Jed Reynolds
2020-06-04 22:51:04 -07:00
parent d5ecef3a9c
commit e26463cc59

View File

@@ -1,23 +1,29 @@
#!env /usr/bin/python #!env /usr/bin/python
import traceback
# Extend this class to use common set of debug and request features for your script # Extend this class to use common set of debug and request features for your script
import pprint
from pprint import pprint from pprint import pprint
import LANforge.LFUtils import LANforge.LFUtils
from LANforge.LFUtils import * from LANforge.LFUtils import *
import traceback
from traceback import extract_stack
class LFCliBase: class LFCliBase:
# do not use `super(LFCLiBase,self).__init__(self, host, port, _debugOn) # do not use `super(LFCLiBase,self).__init__(self, host, port, _debugOn)
# that is py2 era syntax and will force self into the host variable, making you # that is py2 era syntax and will force self into the host variable, making you
# very confused. # very confused.
def __init__(self, _lfjson_host, _lfjson_port, _debug=False, _halt_on_error=False): def __init__(self, _lfjson_host, _lfjson_port, _debug=False, _halt_on_error=False):
self.fail_pref = "FAILED: "
self.pass_pref = "PASSED: "
self.lfjson_host = _lfjson_host self.lfjson_host = _lfjson_host
self.lfjson_port = _lfjson_port self.lfjson_port = _lfjson_port
self.debugOn = _debug self.debugOn = _debug
self.haltOnError = _halt_on_error self.haltOnError = _halt_on_error
self.mgr_url = "http://%s:%s/" % (self.lfjson_host, self.lfjson_port) self.mgr_url = "http://%s:%s/" % (self.lfjson_host, self.lfjson_port)
self.test_results = []
def clear_test_results(self):
self.test_results.clear()
def json_post(self, _req_url, _data): def json_post(self, _req_url, _data):
json_response = None json_response = None
@@ -43,17 +49,20 @@ class LFCliBase:
return json_response return json_response
def json_get(self, _req_url): def json_get(self, _req_url):
if self.debugOn:
print("URL: "+_req_url)
json_response = None json_response = None
if self.mgr_url.endswith('/') and _req_url.startswith('/'): if self.mgr_url.endswith('/') and _req_url.startswith('/'):
_req_url = _req_url[1:] _req_url = _req_url[1:]
try: try:
lf_r = LFRequest.LFRequest(self.mgr_url + _req_url) lf_r = LFRequest.LFRequest(self.mgr_url + _req_url)
json_response = lf_r.getAsJson(self.debugOn) json_response = lf_r.getAsJson(self.debugOn)
#debug_printer.pprint(json_response)
if (json_response is None) and self.debugOn: if (json_response is None) and self.debugOn:
raise ValueError(json_response) raise ValueError(json_response)
except ValueError as ve: except ValueError as ve:
if self.debugOn or self.haltOnError: if self.debugOn or self.haltOnError:
print("jsonGet asked for "+_req_url) print("jsonGet asked for " + _req_url)
print("Exception %s:" % ve) print("Exception %s:" % ve)
traceback.print_exception(ValueError, ve, ve.__traceback__, chain=True) traceback.print_exception(ValueError, ve, ve.__traceback__, chain=True)
if self.haltOnError: if self.haltOnError:
@@ -62,17 +71,18 @@ class LFCliBase:
return json_response return json_response
def error(self, exception): def error(self, exception):
#print("lfcli_base error: %s" % exception) # print("lfcli_base error: %s" % exception)
pprint.pprint(exception) pprint.pprint(exception)
traceback.print_exception(Exception, exception, exception.__traceback__, chain=True) traceback.print_exception(Exception, exception, exception.__traceback__, chain=True)
if self.haltOnError: if self.haltOnError:
print("halting on error") print("halting on error")
sys.exit(1) sys.exit(1)
#else: # else:
# print("continuing...") # print("continuing...")
def check_connect(self): def check_connect(self):
print("Checking for LANforge GUI connection: %s" % self.mgr_url) if self.debugOn:
print("Checking for LANforge GUI connection: %s" % self.mgr_url)
response = self.json_get("/") response = self.json_get("/")
duration = 0 duration = 0
while (response is None) and (duration < 300): while (response is None) and (duration < 300):
@@ -85,4 +95,42 @@ class LFCliBase:
print("Could not connect to LANforge GUI") print("Could not connect to LANforge GUI")
sys.exit(1) sys.exit(1)
def get_result_list(self):
return self.test_results
def get_failed_result_list(self):
fail_list = []
for result in self.test_results:
if not result.startswith("PASS"):
fail_list.append(result)
return fail_list
def get_fail_message(self):
fail_messages = self.get_failed_result_list()
return "\n".join(fail_messages)
def passes(self):
pass_counter: int = 0
fail_counter: int = 0
for result in self.test_results:
if result.startswith("PASS"):
pass_counter += 1
else:
fail_counter += 1
if (fail_counter == 0) and (pass_counter > 0):
return True
return False
# use this inside the class to log a failure result
def _fail(self, message, print_=False):
self.test_results.append(self.fail_pref + message)
if print_:
print(self.fail_pref + message)
# use this inside the class to log a pass result
def _pass(self, message, print_=False):
self.test_results.append(self.pass_pref + message)
if print_:
print(self.pass_pref + message)
# ~class # ~class