def test_get_qbclient(app1): qb1 = api.get_qbclient() qb2 = api.get_qbclient() nt.assert_equal(id(qb1), id(qb1)) nt.assert_equal(hash(qb1), hash(qb2)) qb1.create(app1, 'A') nt.assert_equal(qb2.get(app1)[0], 'A')
def cycle_queue(app_name): """Get item from queue, put at back of queue and return item""" q = api.get_qbclient().LockingQueue(app_name) item = q.get() q.put(item) q.consume() return item
def test_check_state1(app1, job_id1, job_id2): nt.assert_false(api.check_state(app1, 'doesnotexist', pending=True)) with nt.assert_raises(NoNodeError): api.check_state(app1, 'doesnotexist', raise_if_not_exists=True) qb.set_state(app1, job_id1, pending=True) # also: create an invalid state (one that stolos does not recognize) api.get_qbclient().create(qb.get_job_path(app1, job_id2), '') with nt.assert_raises(UserWarning): api.check_state(app1, job_id1) nt.assert_true(api.check_state(app1, job_id1, pending=True)) nt.assert_true(api.check_state(app1, job_id1, pending=True, completed=True)) nt.assert_false(api.check_state(app1, job_id1, completed=True)) nt.assert_true(api.check_state(app1, job_id1, all=True)) # the invalid job: nt.assert_false(api.check_state(app1, job_id2, all=True))
def get_qb_status(app_name, job_id): path = qb.get_job_path(app_name, job_id) elockpath = qb.get_lock_path('execute', app_name, job_id) alockpath = qb.get_lock_path('add', app_name, job_id) qbcli = api.get_qbclient() return { 'is_add_locked': qbcli.Lock(alockpath).is_locked(), 'is_execute_locked': qbcli.Lock(elockpath).is_locked(), 'in_queue': qbcli.LockingQueue(app_name).is_queued(job_id), 'app_qsize': qbcli.LockingQueue(app_name).size(), 'state': qbcli.get(path), }
def test_check_state1(app1, job_id1, job_id2): nt.assert_false(api.check_state(app1, 'doesnotexist', pending=True)) with nt.assert_raises(NoNodeError): api.check_state(app1, 'doesnotexist', raise_if_not_exists=True) qb.set_state(app1, job_id1, pending=True) # also: create an invalid state (one that stolos does not recognize) api.get_qbclient().create( qb.get_job_path(app1, job_id2), '') with nt.assert_raises(UserWarning): api.check_state(app1, job_id1) nt.assert_true( api.check_state(app1, job_id1, pending=True)) nt.assert_true( api.check_state(app1, job_id1, pending=True, completed=True)) nt.assert_false(api.check_state(app1, job_id1, completed=True)) nt.assert_true(api.check_state(app1, job_id1, all=True)) # the invalid job: nt.assert_false(api.check_state(app1, job_id2, all=True))
def test_get_qsize(app1, job_id1, job_id2): nt.assert_equal(api.get_qsize(app1, queued=True, taken=True), 0) tt.enqueue(app1, job_id1, ) tt.enqueue(app1, job_id2, validate_queued=False) q = api.get_qbclient().LockingQueue(app1) itm = q.get() nt.assert_equal(2, api.get_qsize(app1, queued=True, taken=True)) nt.assert_equal(1, api.get_qsize(app1, queued=False, taken=True)) nt.assert_equal(1, api.get_qsize(app1, queued=True, taken=False)) q.put(itm) q.consume() nt.assert_equal(2, api.get_qsize(app1, queued=True, taken=True)) nt.assert_equal(0, api.get_qsize(app1, queued=False, taken=True)) nt.assert_equal(2, api.get_qsize(app1, queued=True, taken=False))
def test_get_qsize(app1, job_id1, job_id2): nt.assert_equal(api.get_qsize(app1, queued=True, taken=True), 0) tt.enqueue( app1, job_id1, ) tt.enqueue(app1, job_id2, validate_queued=False) q = api.get_qbclient().LockingQueue(app1) itm = q.get() nt.assert_equal(2, api.get_qsize(app1, queued=True, taken=True)) nt.assert_equal(1, api.get_qsize(app1, queued=False, taken=True)) nt.assert_equal(1, api.get_qsize(app1, queued=True, taken=False)) q.put(itm) q.consume() nt.assert_equal(2, api.get_qsize(app1, queued=True, taken=True)) nt.assert_equal(0, api.get_qsize(app1, queued=False, taken=True)) nt.assert_equal(2, api.get_qsize(app1, queued=True, taken=False))
def validate_zero_queued_task(app_name): qbcli = api.get_qbclient() nt.assert_equal(qbcli.LockingQueue(app_name).size(), 0)
def validate_not_exists(app_name, job_id): qbcli = api.get_qbclient() path = qb.get_job_path(app_name, job_id) nt.assert_false(qbcli.exists(path))
def consume_queue(app_name): q = api.get_qbclient().LockingQueue(app_name) item = q.get() if item is not None: q.consume() return item