def test_process_status_twice_two_updates_2(): status_queue = Queue() under_test = InThreadStatusTracker(status_queue) status_update = StatusMessage( "name", "version", "service_id", "host_name", "process_id", update_interval=5, status_json= '{"state":"writing","job_id":"some_job_id","file_being_written":"some_file_name.nxs"}', ) assert status_queue.empty() now = datetime.now() under_test.process_status(status_update) under_test.send_status_if_updated(now) assert not status_queue.empty() assert type(status_queue.get()) is WorkerStatus status_update = StatusMessage( "name", "version", "service_id", "host_name", "process_id", update_interval=5, status_json='{"state":"idle"}', ) now = datetime.now() under_test.process_status(status_update) under_test.send_status_if_updated(now) assert not status_queue.empty()
def test_process_start(): status_queue = Queue() under_test = InThreadStatusTracker(status_queue) job_id = "some_job_id" service_id = "some_service_id" start = RunStartInfo( job_id=job_id, filename="file name", start_time=datetime.now(), stop_time=datetime.now(), run_name="run_name", nexus_structure="nxs structure", service_id=service_id, instrument_name="instrument name", broker="broker", metadata="{}", ) assert status_queue.empty() now = datetime.now() under_test.process_start(start) under_test.send_status_if_updated(now) assert not status_queue.empty() job_status = status_queue.get() command_status = status_queue.get() assert status_queue.empty() assert command_status.state == CommandState.WAITING_RESPONSE assert job_status.state == JobState.WAITING
def test_process_status_once(): status_queue = Queue() under_test = InThreadStatusTracker(status_queue) status_update = StatusMessage( "name", "version", "service_id", "host_name", "process_id", update_interval=5, status_json= '{"state":"writing","job_id":"some_job_id","file_being_written":"some_file_name.nxs"}', ) assert status_queue.empty() now = datetime.now() under_test.process_status(status_update) under_test.send_status_if_updated(now) assert not status_queue.empty() assert type(status_queue.get()) is WorkerStatus assert len(under_test.known_jobs) == 1 keys = under_test.known_jobs.keys() print(list(keys)[0]) assert under_test.known_jobs[list(keys) [0]].file_name == "some_file_name.nxs" assert under_test.known_jobs[list(keys)[0]].state == JobState.WRITING assert under_test.known_jobs[list(keys)[0]].metadata == { "state": "writing", "job_id": "some_job_id", "file_being_written": "some_file_name.nxs", }
def test_process_answer_set_stop_time_twice(): status_queue = Queue() under_test = InThreadStatusTracker(status_queue) answer = Response( "service_id", "job_id", "command_id", ActionType.SetStopTime, ActionOutcome.Success, "some message", 0, datetime.now(), ) assert status_queue.empty() now = datetime.now() under_test.process_answer(answer) under_test.send_status_if_updated(now) assert not status_queue.empty() assert type(status_queue.get()) is WorkerStatus assert type(status_queue.get()) is JobStatus assert type(status_queue.get()) is CommandStatus now = datetime.now() under_test.process_answer(answer) under_test.send_status_if_updated(now) assert not status_queue.empty() assert type(status_queue.get()) is JobStatus assert type(status_queue.get()) is CommandStatus assert status_queue.empty()
def test_process_stopped_error(): status_queue = Queue() under_test = InThreadStatusTracker(status_queue) job_id = "some_job_id" service_id = "some_service_id" stopped = WritingFinished(service_id, job_id, True, "FileName", """{"key": "meta data"}""", "some message") assert status_queue.empty() now = datetime.now() under_test.process_stopped(stopped) under_test.send_status_if_updated(now) assert not status_queue.empty() worker_status = status_queue.get() job_status = status_queue.get() assert status_queue.empty() assert worker_status.state == WorkerState.IDLE assert job_status.state == JobState.ERROR assert job_status.metadata is None
def test_process_set_stop_time(): status_queue = Queue() under_test = InThreadStatusTracker(status_queue) job_id = "some_job_id" service_id = "some_service_id" command_id = "some command id" stop = RunStopInfo( job_id=job_id, stop_time=datetime.now(), run_name="run_name", service_id=service_id, command_id=command_id, ) assert status_queue.empty() now = datetime.now() under_test.process_set_stop_time(stop) under_test.send_status_if_updated(now) assert not status_queue.empty() command_status = status_queue.get() assert status_queue.empty() assert command_status.state == CommandState.WAITING_RESPONSE