def test_pop_first_nonempty_queue_empty(db, test_project_data, test_queue, test_redis): init_redis() queue, data = pop_first_nonempty_queue(test_project_data) assert queue is None assert data is None
def test_pop_first_nonempty_queue_multiple_queues(db, test_project_data, test_queue, test_redis): test_queue2 = add_queue(test_project_data, 10) fill_queue(test_queue2, orderby='random') queue, data = pop_first_nonempty_queue(test_project_data) assert isinstance(queue, Queue) assert queue == test_queue2 fill_queue(test_queue, orderby='random') queue, data = pop_first_nonempty_queue(test_project_data) assert isinstance(queue, Queue) assert queue == test_queue
def test_pop_first_nonempty_queue_multiple_profile_queues( db, test_project_data, test_profile, test_profile_queue, test_profile_queue2, test_redis): fill_queue(test_profile_queue2, orderby='random') queue, data = pop_first_nonempty_queue(test_project_data, profile=test_profile) assert queue is None assert data is None fill_queue(test_profile_queue, orderby='random') queue, data = pop_first_nonempty_queue(test_project_data, profile=test_profile) assert isinstance(queue, Queue) assert queue == test_profile_queue
def test_pop_first_nonempty_queue_single_queue(db, test_project_data, test_queue, test_redis): fill_queue(test_queue, orderby='random') queue, data = pop_first_nonempty_queue(test_project_data) assert isinstance(queue, Queue) assert queue == test_queue assert isinstance(data, Data)
def assign_datum(profile, project, type="normal"): """Given a profile and project, figure out which queue to pull from; then pop a datum off that queue and assign it to the profile.""" with transaction.atomic(): queue, datum = pop_first_nonempty_queue(project, profile=profile, type=type) if datum is None: return None else: num_labeled = DataLabel.objects.filter(data=datum, profile=profile).count() if num_labeled == 0: AssignedData.objects.create(data=datum, profile=profile, queue=queue) return datum else: return None