예제 #1
0
def test_job_join(job_data):
    job_data_2 = copy.copy(job_data)
    job_data_2["status"] = "succeeded"

    with requests_mock.mock() as m:
        m.get(
            "https://databasin.org/api/v1/jobs/1234/",
            [
                {"text": json.dumps(job_data)},
                {"text": json.dumps(job_data)},
                {"text": json.dumps(job_data)},
                {"text": json.dumps(job_data_2)},
            ],
        )

        with mock.patch("time.sleep", mock.Mock()) as time_mock:
            # Make sure the test actually stops if things don't work as planned
            time_mock.side_effect = [None, None, None, IOError]

            c = Client()
            job = c.get_job("1234")

            assert job.status == "queued"
            assert m.call_count == 1

            job.join()

            assert m.call_count == 4
            assert job.status == "succeeded"
            assert time_mock.call_count == 3
예제 #2
0
def test_job_refresh(job_data):
    job_data_2 = copy.copy(job_data)
    job_data_2.update({'status': 'running', 'progress': 50, 'message': 'Foo'})

    with requests_mock.mock() as m:
        m.get('https://databasin.org/api/v1/jobs/1234/',
              [{
                  'text': json.dumps(job_data)
              }, {
                  'text': json.dumps(job_data_2)
              }])

        c = Client()
        job = c.get_job('1234')

        assert job.status == 'queued'
        assert job.progress == 0
        assert job.message is None

        job.refresh()

        assert m.call_count == 2
        assert job.status == 'running'
        assert job.progress == 50
        assert job.message == 'Foo'
예제 #3
0
def test_job_join(job_data):
    job_data_2 = copy.copy(job_data)
    job_data_2['status'] = 'succeeded'

    with requests_mock.mock() as m:
        m.get('https://databasin.org/api/v1/jobs/1234/',
              [{
                  'text': json.dumps(job_data)
              }, {
                  'text': json.dumps(job_data)
              }, {
                  'text': json.dumps(job_data)
              }, {
                  'text': json.dumps(job_data_2)
              }])

        with mock.patch('time.sleep', mock.Mock()) as time_mock:
            # Make sure the test actually stops if things don't work as planned
            time_mock.side_effect = [None, None, None, IOError]

            c = Client()
            job = c.get_job('1234')

            assert job.status == 'queued'
            assert m.call_count == 1

            job.join()

            assert m.call_count == 4
            assert job.status == 'succeeded'
            assert time_mock.call_count == 3
예제 #4
0
def test_get_job(job_data):
    with requests_mock.mock() as m:
        m.get("https://databasin.org/api/v1/jobs/1234/", text=json.dumps(job_data))

        c = Client()
        job = c.get_job("1234")

        assert job.id == "1234"
        assert m.called
예제 #5
0
def test_get_job(job_data):
    with requests_mock.mock() as m:
        m.get('https://databasin.org/api/v1/jobs/1234/',
              text=json.dumps(job_data))

        c = Client()
        job = c.get_job('1234')

        assert job.id == '1234'
        assert m.called
예제 #6
0
def test_job_refresh(job_data):
    job_data_2 = copy.copy(job_data)
    job_data_2.update({"status": "running", "progress": 50, "message": "Foo"})

    with requests_mock.mock() as m:
        m.get(
            "https://databasin.org/api/v1/jobs/1234/",
            [{"text": json.dumps(job_data)}, {"text": json.dumps(job_data_2)}],
        )

        c = Client()
        job = c.get_job("1234")

        assert job.status == "queued"
        assert job.progress == 0
        assert job.message is None

        job.refresh()

        assert m.call_count == 2
        assert job.status == "running"
        assert job.progress == 50
        assert job.message == "Foo"