def setup_mock_web_api_server(test: TestCase): if get_mock_server_mode() == "threading": test.server_started = threading.Event() test.thread = MockServerThread(test) test.thread.start() test.server_started.wait() else: # start a mock server as another process target = MockServerProcessTarget() test.server_url = "http://localhost:8888" test.host, test.port = "localhost", 8888 test.process = Process(target=target.run, daemon=True) test.process.start() time.sleep(0.1) # start a thread in the current process # this thread fetches mock_received_requests from the remote process test.monitor_thread = MonitorThread(test) test.monitor_thread.start() count = 0 # wait until the first successful data retrieval while test.mock_received_requests is None: time.sleep(0.01) count += 1 if count >= 100: raise Exception("The mock server is not yet running!")
def cleanup_mock_web_api_server(test: TestCase): if get_mock_server_mode() == "threading": test.thread.stop() test.thread = None else: # stop the thread to fetch mock_received_requests from the remote process test.monitor_thread.stop() retry_count = 0 # terminate the process while test.process.is_alive(): test.process.terminate() time.sleep(0.01) retry_count += 1 if retry_count >= 100: raise Exception("Failed to stop the mock server!") # Python 3.6 does not have this method if sys.version_info.major == 3 and sys.version_info.minor > 6: # cleanup the process's resources test.process.close() test.process = None