Пример #1
0
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()
Пример #2
0
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
Пример #3
0
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",
    }
Пример #4
0
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()
Пример #5
0
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
Пример #6
0
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