def test_queue_manager_heartbeat(compute_adapter_fixture): """Tests to ensure tasks are returned to queue when the manager shuts down""" client, server, adapter = compute_adapter_fixture with testing.loop_in_thread() as loop: # Build server, manually handle IOLoop (no start/stop needed) server = FractalServer( port=testing.find_open_port(), storage_project_name=server.storage_database, storage_uri=server.storage_uri, loop=loop, ssl_options=False, heartbeat_frequency=0.1, ) # Clean and re-init the database testing.reset_server_database(server) client = ptl.FractalClient(server) manager = queue.QueueManager(client, adapter) sman = server.list_managers(name=manager.name()) assert len(sman) == 1 assert sman[0]["status"] == "ACTIVE" # Make sure interval exceeds heartbeat time time.sleep(1) server.check_manager_heartbeats() sman = server.list_managers(name=manager.name()) assert len(sman) == 1 assert sman[0]["status"] == "INACTIVE"
def test_start_stop(): with pristine_loop() as loop: # Build server, manually handle IOLoop (no start/stop needed) server = FractalServer(port=find_open_port(), storage_project_name="something", io_loop=loop, ssl_options=False) thread = threading.Thread(target=server.start, name="test IOLoop") thread.daemon = True thread.start() loop_started = threading.Event() loop.add_callback(loop_started.set) loop_started.wait() try: loop.add_callback(server.stop) thread.join(timeout=5) except: pass