mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 18:58:01 +00:00 
			
		
		
		
	Move event_breaker and event_flood to scripts_deprecated
Signed-off-by: Matthew Stidham <stidmatt@gmail.com>
This commit is contained in:
		
							
								
								
									
										46
									
								
								py-scripts/scripts_deprecated/event_break_flood.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								py-scripts/scripts_deprecated/event_break_flood.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| #!/usr/bin/python3 | ||||
|  | ||||
| import threading | ||||
| from event_flood import EventFlood | ||||
| from event_breaker import EventBreaker | ||||
| import importlib | ||||
| import sys | ||||
| import os | ||||
|  | ||||
| sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../../../"))) | ||||
|  | ||||
| lfcli_base = importlib.import_module("py-json.LANforge.lfcli_base") | ||||
| LFCliBase = lfcli_base.LFCliBase | ||||
|  | ||||
|  | ||||
| def event_break(args): | ||||
|     event_breaker = EventBreaker(host=args.mgr, | ||||
|                                  port=args.mgr_port, | ||||
|                                  duration='30s') | ||||
|     event_breaker.create() | ||||
|     event_breaker.run() | ||||
|     event_breaker.cleanup() | ||||
|  | ||||
|  | ||||
| def event_flooding(args): | ||||
|     event_flood = EventFlood(host=args.mgr, | ||||
|                              port=args.mgr_port, | ||||
|                              duration='30s', | ||||
|                              pause_ms=30) | ||||
|     event_flood.create() | ||||
|     event_flood.run() | ||||
|     event_flood.cleanup() | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     parser = LFCliBase.create_bare_argparse() | ||||
|     args = parser.parse_args() | ||||
|     flood = threading.Thread(target=event_flooding(args)) | ||||
|     breaker = threading.Thread(target=event_break(args)) | ||||
|  | ||||
|     flood.start() | ||||
|     breaker.start() | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
							
								
								
									
										129
									
								
								py-scripts/scripts_deprecated/event_breaker.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										129
									
								
								py-scripts/scripts_deprecated/event_breaker.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,129 @@ | ||||
| #!/usr/bin/env python3 | ||||
| """ | ||||
| This file is intended to expose concurrency | ||||
| problems in the /events/ URL handler by querying events rapidly. | ||||
| Please use concurrently with event_flood.py. | ||||
| """ | ||||
| import sys | ||||
| import os | ||||
| import importlib | ||||
| from datetime import datetime | ||||
| import pprint | ||||
|  | ||||
| if sys.version_info[0] != 3: | ||||
|     print("This script requires Python 3") | ||||
|     exit(1) | ||||
|  | ||||
| sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../../"))) | ||||
|  | ||||
| lfcli_base = importlib.import_module("py-json.LANforge.lfcli_base") | ||||
| LFCliBase = lfcli_base.LFCliBase | ||||
| realm = importlib.import_module("py-json.realm") | ||||
| Realm = realm.Realm | ||||
|  | ||||
|  | ||||
| class EventBreaker(Realm): | ||||
|     def __init__(self, host, port, | ||||
|                  duration=None, | ||||
|                  _debug_on=False, | ||||
|                  _exit_on_error=False, | ||||
|                  _exit_on_fail=False): | ||||
|         super().__init__(host, port) | ||||
|         self.counter = 0 | ||||
|         self.test_duration = duration | ||||
|         if self.test_duration is None: | ||||
|             raise ValueError("run wants numeric run_duration_sec") | ||||
|  | ||||
|     def create(self): | ||||
|         pass | ||||
|  | ||||
|     def run(self): | ||||
|  | ||||
|         now = datetime.now() | ||||
|         end_time = self.parse_time(self.test_duration) + now | ||||
|         client_time_ms = 0 | ||||
|         loop_time_ms = 0 | ||||
|         num_events = 0 | ||||
|         while datetime.now() < end_time: | ||||
|             bad_events = [] | ||||
|             start_loop_time_ms = int(self.get_milliseconds(datetime.now())) | ||||
|             print('\r♦ ', end='') | ||||
|             prev_client_time_ms = client_time_ms | ||||
|             response = self.json_get("/events/all") | ||||
|             if self.debug: | ||||
|                 pprint.pprint(response) | ||||
|  | ||||
|             if "events" not in response: | ||||
|                 pprint.pprint(response) | ||||
|                 raise AssertionError("no events in response") | ||||
|             events = response["events"] | ||||
|             prev_num_events = num_events | ||||
|             num_events = len(events) | ||||
|             if num_events != prev_num_events: | ||||
|                 print("%s events Δ%s" % (num_events, (num_events - prev_num_events))) | ||||
|             if "candela.lanforge.HttpEvents" in response: | ||||
|                 client_time_ms = float(response["candela.lanforge.HttpEvents"]["duration"]) | ||||
|                 if self.debug: | ||||
|                     print(" client_time %d" % client_time_ms) | ||||
|  | ||||
|             if abs(prev_client_time_ms - client_time_ms) > 30: | ||||
|                 print(" client time %d ms Δ%d" % (client_time_ms, (prev_client_time_ms - client_time_ms)), | ||||
|                       end='') | ||||
|             event_index = 0 | ||||
|             for record in events: | ||||
|  | ||||
|                 for k in record.keys(): | ||||
|                     if record[k] is None: | ||||
|                         print(' ☠no %s☠' % k, end='') | ||||
|                         continue | ||||
|                     if self.debug: | ||||
|                         pprint.pprint(record[k]) | ||||
|                     if "NA" == record[k]["event"] \ | ||||
|                             or "NA" == record[k]["name"] \ | ||||
|                             or "NA" == record[k]["type"] \ | ||||
|                             or "NA" == record[k]["priority"]: | ||||
|                         bad_events.append(int(k)) | ||||
|                         pprint.pprint(record[k]) | ||||
|                         if self.debug: | ||||
|                             print(" ☠id[%s]☠" % k, end='') | ||||
|             if len(bad_events) > 0: | ||||
|                 pprint.pprint(events[event_index]) | ||||
|                 print(" ☠id[%s]☠" % bad_events, end='') | ||||
|                 exit(1) | ||||
|             event_index += 1 | ||||
|             prev_loop_time_ms = loop_time_ms | ||||
|             now_ms = int(self.get_milliseconds(datetime.now())) | ||||
|             loop_time_ms = now_ms - start_loop_time_ms | ||||
|             if (prev_loop_time_ms - loop_time_ms) > 15: | ||||
|                 print(" loop time %d ms Δ%d                                   " | ||||
|                       % (loop_time_ms, (prev_loop_time_ms - loop_time_ms)), | ||||
|                       end='') | ||||
|             if (prev_loop_time_ms - loop_time_ms) > 30: | ||||
|                 print("") | ||||
|  | ||||
|     def cleanup(self): | ||||
|         pass | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     parser = LFCliBase.create_bare_argparse( | ||||
|         prog='event_breaker.py', | ||||
|         description="""event breaker is meant  to be used in conjunction with event flood | ||||
|     Please use the event_break_flood.py script""") | ||||
|  | ||||
|     parser.add_argument("--test_duration", help='test duration', default="30s") | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     event_breaker = EventBreaker(host=args.mgr, | ||||
|                                  port=args.mgr_port, | ||||
|                                  duration=args.test_duration, | ||||
|                                  _debug_on=True, | ||||
|                                  _exit_on_error=True, | ||||
|                                  _exit_on_fail=True) | ||||
|     event_breaker.create() | ||||
|     event_breaker.run() | ||||
|     event_breaker.cleanup() | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
							
								
								
									
										110
									
								
								py-scripts/scripts_deprecated/event_flood.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										110
									
								
								py-scripts/scripts_deprecated/event_flood.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,110 @@ | ||||
| #!/usr/bin/env python3 | ||||
| """ | ||||
| This file is intended to expose concurrency | ||||
| problems in the /events/ URL handler by inserting events rapidly. | ||||
| Please concurrently use with event_breaker.py. | ||||
| """ | ||||
| import sys | ||||
| import os | ||||
| import importlib | ||||
| from datetime import datetime | ||||
| from time import sleep | ||||
| import pprint | ||||
|  | ||||
| if sys.version_info[0] != 3: | ||||
|     print("This script requires Python 3") | ||||
|     exit(1) | ||||
|  | ||||
| sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../../"))) | ||||
|  | ||||
| lfcli_base = importlib.import_module("py-json.LANforge.lfcli_base") | ||||
| LFCliBase = lfcli_base.LFCliBase | ||||
| realm = importlib.import_module("py-json.realm") | ||||
| Realm = realm.Realm | ||||
|  | ||||
|  | ||||
| class EventFlood(Realm): | ||||
|     def __init__(self, host, port, | ||||
|                  duration=None, | ||||
|                  pause_ms=None, | ||||
|                  _debug_on=False, | ||||
|                  _exit_on_error=False, | ||||
|                  _exit_on_fail=False): | ||||
|         super().__init__(host, port) | ||||
|         self.counter = 0 | ||||
|         self.test_duration = duration | ||||
|         self.pause_ms = pause_ms | ||||
|         if self.test_duration is None: | ||||
|             raise ValueError("run wants numeric run_duration_sec") | ||||
|  | ||||
|     def create(self): | ||||
|         pass | ||||
|  | ||||
|     def run(self): | ||||
|         last_second_ms = 0 | ||||
|         start_time = datetime.now() | ||||
|         end_time = self.parse_time(self.test_duration) + start_time | ||||
|         client_time_ms = 0 | ||||
|         loop_time_ms = 0 | ||||
|  | ||||
|         while datetime.now() < end_time: | ||||
|             sleep(self.pause_ms / 1000) | ||||
|             start_loop_time_ms = int(self.get_milliseconds(datetime.now())) | ||||
|             print('\r♦ ', end='') | ||||
|             response_list = [] | ||||
|             self.json_post("/cli-json/add_event", | ||||
|                            { | ||||
|                                "event_id": "new", | ||||
|                                "details": "event_flood %d" % start_loop_time_ms, | ||||
|                                "priority": "INFO", | ||||
|                                "name": "custom" | ||||
|                            }, | ||||
|                            response_json_list_=response_list) | ||||
|             if self.debug: | ||||
|                 pprint.pprint(response_list) | ||||
|             prev_client_time_ms = client_time_ms | ||||
|             prev_loop_time_ms = loop_time_ms | ||||
|             now = int(self.get_milliseconds(datetime.now())) | ||||
|             loop_time_ms = now - start_loop_time_ms | ||||
|  | ||||
|             client_time_ms = response_list[0]["LAST"]["duration"] | ||||
|             if client_time_ms != prev_client_time_ms: | ||||
|                 print(" client %d ms %d" % (client_time_ms, | ||||
|                                             (prev_client_time_ms - client_time_ms)), | ||||
|                       end='') | ||||
|             if loop_time_ms != prev_loop_time_ms: | ||||
|                 print(" loop %d ms %d                            " % (loop_time_ms, | ||||
|                                                                       (prev_loop_time_ms - loop_time_ms)), | ||||
|                       end='') | ||||
|             if (last_second_ms + 1000) < now: | ||||
|                 last_second_ms = now | ||||
|                 print("") | ||||
|  | ||||
|     def cleanup(self): | ||||
|         pass | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     parser = LFCliBase.create_bare_argparse( | ||||
|         prog='event_breaker.py', | ||||
|         description="""event flood is meant  to be used in conjunction with event breaker | ||||
|     Please use the event_break_flood.py script""") | ||||
|  | ||||
|     parser.add_argument("--test_duration", help='test duration', default="30s") | ||||
|     parser.add_argument("--pause_ms", help='interval between submitting events', default="30") | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     event_breaker = EventFlood(host=args.mgr, | ||||
|                                port=args.mgr_port, | ||||
|                                duration=args.test_duration, | ||||
|                                pause_ms=int(args.pause_ms), | ||||
|                                _debug_on=True, | ||||
|                                _exit_on_error=True, | ||||
|                                _exit_on_fail=True) | ||||
|     event_breaker.create() | ||||
|     event_breaker.run() | ||||
|     event_breaker.cleanup() | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     main() | ||||
		Reference in New Issue
	
	Block a user
	 Matthew Stidham
					Matthew Stidham