def test_lock(): queue = core4.queue.main.CoreQueue() worker = core4.queue.worker.CoreWorker() queue.enqueue(core4.queue.helper.job.example.DummyJob) job = worker.get_next_job() assert queue.lock_job(job["_id"], worker.identifier) assert queue.lock_job(job["_id"], worker.identifier) is False
def test_offset(): queue = core4.queue.main.CoreQueue() enqueued_id = [] for i in range(0, 5): enqueued_id.append(queue.enqueue( core4.queue.helper.job.example.DummyJob, i=i)._id) worker = core4.queue.worker.CoreWorker() dequeued_id = [] dequeued_id.append(worker.get_next_job()["_id"]) dequeued_id.append(worker.get_next_job()["_id"]) dequeued_id.append(worker.get_next_job()["_id"]) enqueued_job = queue.enqueue(core4.queue.helper.job.example.DummyJob, i=5, priority=10) dequeued_job = worker.get_next_job() assert enqueued_job._id == dequeued_job["_id"] assert enqueued_id[0:len(dequeued_id)] == dequeued_id
def test_enqueue_dequeue(queue): enqueued_job = queue.enqueue(core4.queue.helper.job.example.DummyJob) worker = core4.queue.worker.CoreWorker() doc = worker.get_next_job() dequeued_job = queue.job_factory(doc["name"]).deserialise(**doc) assert enqueued_job.__dict__.keys() == dequeued_job.__dict__.keys() for k in enqueued_job.__dict__.keys(): if k not in ("logger", "config", "class_config"): if enqueued_job.__dict__[k] != dequeued_job.__dict__[k]: assert enqueued_job.__dict__[k] == dequeued_job.__dict__[k]
def test_remove(mongodb): queue = core4.queue.main.CoreQueue() worker = core4.queue.worker.CoreWorker() _id = queue.enqueue(core4.queue.helper.job.example.DummyJob)._id assert _id is not None assert queue.remove_job(_id) job = worker.get_next_job() assert job is None worker.remove_jobs() assert 0 == mongodb.core4test.sys.queue.count_documents({}) assert 1 == mongodb.core4test.sys.journal.count_documents({}) worker.cleanup() assert 0 == mongodb.core4test.sys.lock.count_documents({})