From d5bcc3517593dcd6ed889b7127fa80c6febc686b Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 20 Jun 2020 10:27:43 +0000 Subject: [PATCH] Fixes 01 --- .gitignore | 51 ++++++++++++++ .idea/.gitignore | 3 - .idea/inspectionProfiles/Project_Default.xml | 47 ------------- .../inspectionProfiles/profiles_settings.xml | 6 -- .idea/misc.xml | 4 -- .idea/modules.xml | 8 --- .idea/openlp-api-tester.iml | 11 ---- test_api/apitest/runner.py | 66 +++++++++++++++---- test_api/runner.py | 3 +- x1.py | 56 ---------------- 10 files changed, 105 insertions(+), 150 deletions(-) create mode 100644 .gitignore delete mode 100644 .idea/.gitignore delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/openlp-api-tester.iml delete mode 100644 x1.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3ed3205 --- /dev/null +++ b/.gitignore @@ -0,0 +1,51 @@ +*.*~ +*.dll +*.e4* +*.kate-swp +*.kdev4 +*.komodoproject +*.log* +*.nja +*.orig +*.pyc +*.qm +*.rej +*.ropeproject +*.~\?~ +*eric[1-9]project +.cache +.coverage +.directory +.eggs +.idea +.kdev4 +.komodotools +.pytest_cache +.venv +.vscode +.eggs +.venv +.mypy_cache +OpenLP.egg-info +\#*\# +__pycache__ +build +cover +coverage +dist +env +htmlcov +list +node_modules +openlp.cfg +openlp.pro +openlp/core/resources.py +openlp/core/resources.py.old +openlp/plugins/presentations/lib/vendor/Pyro4 +openlp/plugins/presentations/lib/vendor/serpent.py +output +package-lock.json +tags +test +openlp-test-projectordb.sqlite +*/test-results.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 8f2739c..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index d4fc832..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 0a7a2bf..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/openlp-api-tester.iml b/.idea/openlp-api-tester.iml deleted file mode 100644 index 8dc09e5..0000000 --- a/.idea/openlp-api-tester.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/test_api/apitest/runner.py b/test_api/apitest/runner.py index 26ced4a..dc8011d 100644 --- a/test_api/apitest/runner.py +++ b/test_api/apitest/runner.py @@ -23,11 +23,13 @@ import requests import string import time import random +import threading +import websocket from websocket import create_connection from test_api.apitest.constants import BookNames -from test_api.apitest.logger import print_text, print_error, print_ok +from test_api.apitest.logger import print_text, print_error, print_ok, print_info class RunTestsController(object): @@ -37,7 +39,41 @@ class RunTestsController(object): self.http_port = http_port self.ws_port = ws_port self.reserved_result_stage = None - self.reserved_result_live = None + self.received = False + + def connect(self) -> None: + print_info("Starting thread") + self.ws = websocket.WebSocketApp(f'ws://{self.address}:{self.ws_port}', + on_message=self.on_message, + on_close=self.on_close, + on_open=self.on_open, + on_error=self.on_error, + ) + self.wst = threading.Thread(target=lambda: self.ws.run_forever()) + self.wst.daemon = True + self.wst.start() + + conn_timeout = 5 + while (not self.ws.sock or not self.ws.sock.connected) and conn_timeout: + human_delay(1) + conn_timeout -= 1 + if not conn_timeout: + print_error("Could not connect to WS! Exiting.") + + def on_message(self, message: str) -> None: + print_info("Message returned") + self.result_stage = message + self.compare_stage() + self.received = True + + def on_open(self) -> None: + print_info("opened") + + def on_close(self) -> None: + print_info("closed") + + def on_error(self, error: str) -> None: + print_error(f'WebSocket Error: {error}') def load_and_check_sockets(self, first_run: bool = False) -> bool: ws = create_connection(f'ws://{self.address}:{self.ws_port}') @@ -61,16 +97,18 @@ class RunTestsController(object): """ :return: """ - self.stage_diff = {} - reserved = json.loads(self.reserved_result_stage.decode('utf-8'))['results'] - current = json.loads(self.result_stage.decode('utf-8'))['results'] - # compare_strings(reserved, current) - assert len(reserved) == len(current) - for a, _ in current.items(): - # compare_strings(reserved[a], current[a]) - if reserved[a] != current[a]: - self.stage_diff[a] = {'before': reserved[a], 'after': current[a]} - self.reserved_result_stage = self.result_stage + if self.received: + self.stage_diff = {} + reserved = json.loads(self.reserved_result_stage.decode('utf-8'))['results'] + current = json.loads(self.result_stage.decode('utf-8'))['results'] + self.received = False + # compare_strings(reserved, current) + assert len(reserved) == len(current) + for a, _ in current.items(): + # compare_strings(reserved[a], current[a]) + if reserved[a] != current[a]: + self.stage_diff[a] = {'before': reserved[a], 'after': current[a]} + self.reserved_result_stage = self.result_stage def marshal_full(self): print_ok('Running full test script') @@ -295,8 +333,8 @@ def live_item(rtc: RunTestsController, plugin: str) -> None: def check_websocket_changes(rtc: RunTestsController, manditary: int, optional: int) -> None: - rtc.load_and_check_sockets() - rtc.compare_stage() + while not rtc.received: + time.sleep(0.1) if manditary <= len(rtc.stage_diff) <= optional: pass else: diff --git a/test_api/runner.py b/test_api/runner.py index 78fdd82..9cb6426 100644 --- a/test_api/runner.py +++ b/test_api/runner.py @@ -29,7 +29,7 @@ def start() -> None: Instantiate and run the tests. :return: """ - print_text('OpenLP - API Test Runner V0_1') + print_text('OpenLP - API Test Runner V0_2') print_text('Check OpenLP is running') op_address, op_http_port = check_for_openlp('http') if not op_http_port: @@ -41,6 +41,7 @@ def start() -> None: print_ok(f'OpenLP is running network Address {op_address}') print_ok(f'OpenLP is running on port (ws) {op_ws_port}') rtc = RunTestsController(op_address, op_http_port, op_ws_port) + rtc.connect() rtc.marshal_full() #nrtc.marshal_media() print_text('Finished running tests') diff --git a/x1.py b/x1.py deleted file mode 100644 index ca80eca..0000000 --- a/x1.py +++ /dev/null @@ -1,56 +0,0 @@ -import websocket -import ssl -import sys -from time import sleep -import threading - - -class MyWebSocket(): - def connect(self, wsURL="wss://www.bitmex.com/realtime?subscribe=quote:XBTUSD"): - print("Starting thread") - ssl_defaults = ssl.get_default_verify_paths() - sslopt_ca_certs = {"ca_certs": ssl_defaults.cafile} - self.ws = websocket.WebSocketApp(wsURL, - on_message=self.__on_message, - on_close=self.__on_close, - on_open=self.__on_open, - on_error=self.__on_error, - ) - self.wst = threading.Thread(target=lambda: self.ws.run_forever(sslopt=sslopt_ca_certs)) - self.wst.daemon = True - self.wst.start() - - conn_timeout = 5 - while (not self.ws.sock or not self.ws.sock.connected) and conn_timeout: - sleep(1) - conn_timeout -= 1 - if not conn_timeout: - print("Could not connect to WS! Exiting.") - sys.exit(1) - - def __on_message(self, message): - print(message) - - def __on_open(self): - print("opened") - - def __on_close(self): - print("closed") - - def __on_error(self, error): - print("error") - - def run(self): - self.connect() - while True: - print("hello mum") - sleep(1) - -websocket.enableTrace(True) -mysocket = MyWebSocket() -mysocket.run() -#mysocket.connect() - -#while True:# -# sleep(1) -print("the end") \ No newline at end of file