def test_claim_objects(jm, sample_data):
    """``claim_objects`` claims & returns unclaimed rows up to a limit."""

    blobs = []
    blob_lookup = set()
    for job in sample_data.job_data[:3]:
        blobs.append(job)
        blob_lookup.add(json.dumps(job))

    jm.store_job_data(blobs)

    rows1 = jm.claim_objects(2)

    # a separate worker with a separate connection
    from treeherder.model.derived.jobs import JobsModel
    jm2 = JobsModel(jm.project)

    rows2 = jm2.claim_objects(2)

    loading_rows = jm.get_dhub(jm.CT_OBJECTSTORE).execute(
        proc="objectstore_test.counts.loading")[0]["loading_count"]

    jm.disconnect()
    jm2.disconnect()

    assert len(rows1) == 2
    # second worker asked for two rows but only got one that was left
    assert len(rows2) == 1

    # all three blobs were fetched by one of the workers
    for r in rows1 + rows2:
        assert r['json_blob'] in blob_lookup

    # the blobs are all marked as "loading" in the database
    assert loading_rows == 3
Exemplo n.º 2
0
def test_claim_objects(jm, sample_data):
    """``claim_objects`` claims & returns unclaimed rows up to a limit."""

    blobs = []
    blob_lookup = set()
    for job in sample_data.job_data[:3]:
        blobs.append(job)
        blob_lookup.add(json.dumps(job))

    jm.store_job_data(blobs)

    rows1 = jm.claim_objects(2)

    # a separate worker with a separate connection
    from treeherder.model.derived.jobs import JobsModel
    jm2 = JobsModel(jm.project)

    rows2 = jm2.claim_objects(2)

    loading_rows = jm.get_dhub(jm.CT_OBJECTSTORE).execute(
        proc="objectstore_test.counts.loading")[0]["loading_count"]

    jm.disconnect()
    jm2.disconnect()

    assert len(rows1) == 2
    # second worker asked for two rows but only got one that was left
    assert len(rows2) == 1

    # all three blobs were fetched by one of the workers
    for r in rows1 + rows2:
        assert r['json_blob'] in blob_lookup

    # the blobs are all marked as "loading" in the database
    assert loading_rows == 3