mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 02:38:03 +00:00 
			
		
		
		
	jbr_monitor_bssids.py: fixes loading logic
- querying for load was happening before load was requested, which was clearly dumb - incorporates show_events before load, and after every 5 seconds - sys.settrace() call is experimental, is going to be removed Signed-off-by: Jed Reynolds <jed@bitratchet.com>
This commit is contained in:
		| @@ -47,7 +47,7 @@ import argparse | ||||
| import time | ||||
| from http.client import HTTPResponse | ||||
| from typing import Optional | ||||
| from pprint import pprint, pformat | ||||
| from pprint import pprint | ||||
|  | ||||
| path_hunks = os.path.abspath(__file__).split('/') | ||||
| while( path_hunks[-1] != 'lanforge-scripts'): | ||||
| @@ -155,21 +155,20 @@ class BssidMonitor(Realm): | ||||
|         self.lf_query : LFJsonQuery = self.lf_session.get_query() | ||||
|  | ||||
|     def build(self): | ||||
|         err_warn_list = [] | ||||
|         # query for the last response | ||||
|         event_response = self.lf_query.events_last_events(event_count=1, | ||||
|                                                           debug=self.debug, | ||||
|                                                           errors_warnings=err_warn_list) | ||||
|         last_event_id = event_response["id"] | ||||
|         if not self.wait_for_load_to_finish(since_id=last_event_id): | ||||
|             exit(1) | ||||
|  | ||||
|         # get last event id | ||||
|         last_event_id = self.before_load_action() | ||||
|  | ||||
|         # load a database | ||||
|         sys.settrace(lanforge_api.trace) | ||||
|         response: HTTPResponse = self.lf_command.post_load(name="BLANK", | ||||
|                                                            action="overwrite", | ||||
|                                                            clean_dut="NA", | ||||
|                                                            clean_chambers="NA", | ||||
|                                                            debug=self.debug) | ||||
|         sys.settrace(None) | ||||
|         if not self.wait_for_load_to_finish(since_id=last_event_id): | ||||
|             exit(1) | ||||
|  | ||||
|         if not response: | ||||
|             raise ConnectionError("lf_command::post_load returned no response") | ||||
| @@ -179,7 +178,29 @@ class BssidMonitor(Realm): | ||||
|         for bssid in self.bssid_list: | ||||
|             print("build: bssid: %s" % bssid) | ||||
|  | ||||
|     def before_load_action(self): | ||||
|         """ | ||||
|         Use this | ||||
|         :return: last event ID in event list | ||||
|         """ | ||||
|         err_warn_list = [] | ||||
|         self.lf_command.post_show_events(p_type='all', | ||||
|                                          shelf=1, | ||||
|                                          card='all', | ||||
|                                          port='all', | ||||
|                                          endp='all') | ||||
|         time.sleep(0.1) | ||||
|         event_response = self.lf_query.events_last_events(event_count=1, | ||||
|                                                           debug=self.debug, | ||||
|                                                           errors_warnings=err_warn_list) | ||||
|         return event_response["id"] | ||||
|  | ||||
|     def wait_for_load_to_finish(self, since_id:int=None): | ||||
|         """ | ||||
|         TODO: make this a standard method outside this module | ||||
|         :param since_id: | ||||
|         :return: | ||||
|         """ | ||||
|         completed = False | ||||
|         timer = 0 | ||||
|         timeout = 60 | ||||
| @@ -189,7 +210,12 @@ class BssidMonitor(Realm): | ||||
|                 for event_tup in new_events: | ||||
|                     for event_id in event_tup.keys(): | ||||
|                         event_record = event_tup[event_id] | ||||
|                         # pprint(event_record) | ||||
|                         if self.debug: | ||||
|                             pprint("\n        wait_for_load_to_finish: {since} -> {id}: {descr}\n".format( | ||||
|                                 since=since_id, | ||||
|                                 id=event_id, | ||||
|                                 descr=event_record['event description'] | ||||
|                             )) | ||||
|                         if event_record['event description'].startswith('LOAD COMPLETED'): | ||||
|                             completed = True | ||||
|                             self.lf_query.logger.warning('Scenario loaded after %s seconds' % timer) | ||||
| @@ -197,6 +223,12 @@ class BssidMonitor(Realm): | ||||
|             if completed: | ||||
|                 break | ||||
|             else: | ||||
|                 if (timer % 5) == 0: | ||||
|                     self.lf_command.post_show_events(p_type='all', | ||||
|                                                      shelf=1, | ||||
|                                                      card='all', | ||||
|                                                      port='all', | ||||
|                                                      endp='all') | ||||
|                 timer += 1 | ||||
|                 time.sleep(1) | ||||
|                 if timer > timeout: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jed Reynolds
					Jed Reynolds