예제 #1
0
def test_jobs_run_timeout(mock_url, replay_session):
    run_payload = {'id': 'myrun1'}
    job_payload = {
        'id': 'myjob',
        'history': {
            'successfulFinishedRuns': [run_payload],
            'failedFinishedRuns': []
        }
    }
    # lots of responses, but only a few will trigger before timeout
    mock_replay = list((
        MockResponse(run_payload, 201),
        MockResponse({}, 200),
        MockResponse({}, 200),
        MockResponse({}, 200),  # should timeout here
        MockResponse({}, 200),
        MockResponse({}, 200),
        MockResponse({}, 404),
        MockResponse(job_payload, 200),
    ))
    replay_session.queue(mock_replay)

    j = Jobs(default_url=mock_url)
    with pytest.raises(Exception):
        j.run('myapp1', timeout=2)

    assert len(replay_session.debug_cache) == 4
예제 #2
0
def test_jobs_run_unknown_error(mock_url, replay_session):
    run_payload = {'id': 'myrun1'}
    exp_err_msg = 'Unexpected status code for job run myrun1: 500'
    mock_replay = list((
        MockResponse(run_payload, 201),
        MockResponse({}, 500),
    ))
    replay_session.queue(mock_replay)

    j = Jobs(default_url=mock_url)
    with pytest.raises(HTTPError) as http_error:
        j.run('myapp1')
    assert str(http_error.value) == exp_err_msg
    assert len(replay_session.debug_cache) == 2
예제 #3
0
def test_jobs_run_failed_run(mock_url, replay_session):
    """Test the `run` method, which is a mixture of `start`
    and waiting (looping) on the run to complete.

    This test expects the Run to appear in the failed run list.
    """
    run_payload = {'id': 'myrun1'}
    job_payload = {
        'id': 'myjob',
        'history': {
            'successfulFinishedRuns': [],
            'failedFinishedRuns': [run_payload]
        }
    }
    # 2 200's to test timeout=1
    mock_replay = list((
        MockResponse(run_payload, 201),
        MockResponse({}, 404),
        MockResponse(job_payload, 200),
    ))
    replay_session.queue(mock_replay)

    j = Jobs(default_url=mock_url)
    success, run, job = j.run('myapp1')

    assert success is False
    assert run == run_payload
    assert job == job_payload
    assert len(replay_session.debug_cache) == 3
예제 #4
0
def test_jobs_run_history_not_available(mock_url, replay_session):
    run_payload = {'id': 'myrun1'}
    job_payload = {
        'id': 'myjob',
        'history': {
            'successfulFinishedRuns': [],
            'failedFinishedRuns': []
        }
    }
    exp_err_msg = 'Waiting for job run myrun1 to be finished, but history for that job run is not available'

    # lots of responses, but only a few will trigger before timeout
    mock_replay = list((MockResponse(run_payload, 201), MockResponse({}, 404),
                        MockResponse(job_payload, 200), MockResponse({}, 404),
                        MockResponse(job_payload, 200), MockResponse({}, 404),
                        MockResponse(job_payload, 200), MockResponse({}, 404),
                        MockResponse(job_payload, 200)))
    replay_session.queue(mock_replay)

    j = Jobs(default_url=mock_url)
    with pytest.raises(Exception) as error:
        j.run('myapp1', timeout=2)

    assert str(error.value) == exp_err_msg