def test_external_uid_03_respects_limit_tasks(self): """ Test SCHED newtask external uid respects the limit of 30 TaskRuns per Task for external user id""" assigned_tasks = [] project = ProjectFactory.create(info=dict(sched='depth_first_all'), owner=UserFactory.create(id=500)) user = UserFactory.create() task = TaskFactory.create(project=project, n_answers=10) uid = '1xa' tasks = get_depth_first_all_task(project.id, external_uid=uid) assert len(tasks) == 1, len(tasks) assert tasks[0].id == task.id, tasks assert tasks[0].state == 'ongoing', tasks # Add taskruns for i in range(10): tr = TaskRun(project_id=project.id, task_id=task.id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, external_uid=uid) assert len(tasks) == 1, len(tasks) assert tasks[0].id == task.id, tasks assert tasks[0].state == 'completed', tasks assert len(tasks[0].task_runs) == 10, tasks
def test_user_03_respects_limit_tasks(self): """ Test SCHED newtask respects the limit of 30 TaskRuns per Task""" project = ProjectFactory.create(info=dict(sched='depth_first_all'), owner=UserFactory.create(id=500)) orig_tasks = TaskFactory.create_batch(1, project=project, n_answers=10) user = UserFactory.create() tasks = get_depth_first_all_task(project.id, user.id) assert len(tasks) == 1, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[0].state == 'ongoing', tasks for i in range(10): tr = TaskRun(project_id=project.id, task_id=orig_tasks[0].id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id) assert len(tasks) == 1, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[0].state == 'completed', tasks assert len(tasks[0].task_runs) == 10, tasks tr = TaskRun(project_id=project.id, task_id=orig_tasks[0].id, user_id=user.id) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id) assert len(tasks) == 0, tasks
def test_user_03_respects_limit_tasks_limit(self): """ Test SCHED limit arg newtask respects the limit of 30 TaskRuns per list of Tasks""" # Del previous TaskRuns assigned_tasks = [] project = ProjectFactory.create(info=dict(sched='depth_first_all'), owner=UserFactory.create(id=500)) user = UserFactory.create() orig_tasks = TaskFactory.create_batch(2, project=project, n_answers=10) tasks = get_depth_first_all_task(project.id, user.id, limit=2, orderby='id', desc=False) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[0].state == 'ongoing', tasks assert tasks[1].id == orig_tasks[1].id, tasks assert tasks[1].state == 'ongoing', tasks for i in range(10): tr = TaskRun(project_id=project.id, task_id=tasks[0].id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id, limit=2, orderby='id', desc=False) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[0].state == 'completed', tasks assert len(tasks[0].task_runs) == 10, tasks assert tasks[1].id == orig_tasks[1].id, tasks assert tasks[1].state == 'ongoing', tasks assert len(tasks[1].task_runs) == 0, tasks tr = TaskRun(project_id=project.id, task_id=tasks[0].id, user_id=user.id) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id, limit=2, orderby='id', desc=False) assert len(tasks) == 1, tasks assert tasks[0].id == orig_tasks[1].id assert tasks[0].state == 'ongoing'
def test_external_uid_03_respects_limit_tasks(self): """ Test SCHED newtask external uid respects the limit of 30 TaskRuns per Task for external user id""" assigned_tasks = [] project = ProjectFactory.create(info=dict(sched='depth_first_all'), owner=UserFactory.create(id=500)) user = UserFactory.create() task = TaskFactory.create(project=project, n_answers=10) uid = '1xa' tasks = get_depth_first_all_task(project.id, external_uid=uid) assert len(tasks) == 1, len(tasks) assert tasks[0].id == task.id, tasks assert tasks[0].state == 'ongoing', tasks # Add taskruns for i in range(10): tr = TaskRun(project_id=project.id, task_id=task.id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, external_uid=uid) assert len(tasks) == 1, len(tasks) assert tasks[0].id == task.id, tasks assert tasks[0].state == 'completed', tasks assert len(tasks[0].task_runs) == 10, tasks url = 'api/project/%s/newtask?external_uid=%s' % (project.id, uid) headers = self.get_headers_jwt(project) res = self.app.get(url, headers=headers) data = json.loads(res.data) assert data['id'] == task.id assert data['state'] == 'completed' tr = TaskRun(project_id=project.id, task_id=task.id, external_uid=uid) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, external_uid=uid) assert len(tasks) == 0, len(tasks) res = self.app.get(url, headers=headers) data = json.loads(res.data) assert len(data) == 0, data
def test_anonymous_03_respects_limit_tasks_limits(self): """ Test SCHED newtask limit respects the limit of 30 TaskRuns per Task using limits""" assigned_tasks = [] user = UserFactory.create() project = ProjectFactory.create(info=dict(sched='depth_first_all')) orig_tasks = TaskFactory.create_batch(2, project=project, n_answers=5) tasks = get_depth_first_all_task(project.id, user.id, limit=2) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[1].id == orig_tasks[1].id, tasks for i in range(5): tr = TaskRun(project_id=project.id, task_id=tasks[0].id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() # Task should be marked as completed, but as user has no # participated it should get the completed one as well. tasks = get_depth_first_all_task(project.id, user.id, limit=2, orderby='id', desc=False) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks[0] assert tasks[0].state == 'completed', tasks[0].state assert len(tasks[0].task_runs) == 5 assert tasks[1].id == orig_tasks[1].id assert tasks[1].state == 'ongoing', tasks[1].state assert len(tasks[1].task_runs) == 0 # User contributes, so only one task should be returned tr = TaskRun(project_id=project.id, task_id=tasks[0].id, user_id=user.id) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id, limit=2, orderby='id', desc=False) assert len(tasks) == 1, len(tasks) assert tasks[0].id == orig_tasks[1].id, tasks[0] assert tasks[0].state == 'ongoing', tasks[0].state assert len(tasks[0].task_runs) == 0
def test_anonymous_03_respects_limit_tasks_limits(self): """ Test SCHED newtask limit respects the limit of 30 TaskRuns per Task using limits""" assigned_tasks = [] user = UserFactory.create() project = ProjectFactory.create(info=dict(sched='depth_first_all')) orig_tasks = TaskFactory.create_batch(2, project=project, n_answers=5) tasks = get_depth_first_all_task(project.id, user.id, limit=2) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id assert tasks[1].id == orig_tasks[1].id for i in range(5): tr = TaskRun(project_id=project.id, task_id=tasks[0].id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() # Task should be marked as completed, but as user has no # participated it should get the completed one as well. tasks = get_depth_first_all_task(project.id, user.id, limit=2, orderby='id', desc=False) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks[0] assert tasks[0].state == 'completed', tasks[0].state assert len(tasks[0].task_runs) == 5 assert tasks[1].id == orig_tasks[1].id assert tasks[1].state == 'ongoing', tasks[1].state assert len(tasks[1].task_runs) == 0 # User contributes, so only one task should be returned tr = TaskRun(project_id=project.id, task_id=tasks[0].id, user_id=user.id) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id, limit=2, orderby='id', desc=False) assert len(tasks) == 1, len(tasks) assert tasks[0].id == orig_tasks[1].id, tasks[0] assert tasks[0].state == 'ongoing', tasks[0].state assert len(tasks[0].task_runs) == 0
def test_anonymous_03_respects_limit_tasks(self): """ Test SCHED newtask respects the limit of 10 TaskRuns per Task""" assigned_tasks = [] project = ProjectFactory.create(owner=UserFactory.create(id=500), info=dict(sched='depth_first_all')) user = UserFactory.create() task = TaskFactory.create(project=project, n_answers=10) tasks = get_depth_first_all_task(project.id, user.id) assert len(tasks) == 1, len(tasks) assert tasks[0].id == task.id, tasks assert tasks[0].state == 'ongoing', tasks for i in range(10): tr = TaskRun(project_id=project.id, task_id=task.id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id) assert len(tasks) == 1, len(tasks) assert tasks[0].id == task.id, tasks assert tasks[0].state == 'completed', tasks for i in range(10): tasks = get_depth_first_all_task(project.id, user_id=None, user_ip='127.0.0.%s' % i) assert len(tasks) == 0, tasks tr = TaskRun(project_id=project.id, task_id=task.id, user_id=user.id) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, user.id) assert len(tasks) == 0, tasks
def test_external_uid_03_respects_limit_tasks_limits(self): """ Test SCHED newtask external uid limits respects the limit of 30 TaskRuns per list of Tasks for external user id""" # Get Task until scheduler returns None project = ProjectFactory.create(info=dict(sched='depth_first_all')) orig_tasks = TaskFactory.create_batch(2, project=project, n_answers=5) headers = self.get_headers_jwt(project) uid = '1xa' url = 'api/project/%s/newtask?external_uid=%s&limit=2' % (project.id, uid) tasks = get_depth_first_all_task(project.id, external_uid=uid, limit=2) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[0].state == 'ongoing', tasks assert tasks[1].id == orig_tasks[1].id, tasks assert tasks[1].state == 'ongoing', tasks
def test_external_uid_03_respects_limit_tasks_limits(self): """ Test SCHED newtask external uid limits respects the limit of 30 TaskRuns per list of Tasks for external user id""" # Get Task until scheduler returns None project = ProjectFactory.create(info=dict(sched='depth_first_all')) orig_tasks = TaskFactory.create_batch(2, project=project, n_answers=5) headers = self.get_headers_jwt(project) uid = '1xa' url = 'api/project/%s/newtask?external_uid=%s&limit=2' % (project.id, uid) tasks = get_depth_first_all_task(project.id, external_uid=uid, limit=2) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[0].state == 'ongoing', tasks assert tasks[1].id == orig_tasks[1].id, tasks assert tasks[1].state == 'ongoing', tasks # Add taskruns for i in range(5): tr = TaskRun(project_id=project.id, task_id=tasks[0].id, user_ip='127.0.0.%s' % i) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, external_uid=uid, limit=2, orderby='id', desc=False) assert len(tasks) == 2, len(tasks) assert tasks[0].id == orig_tasks[0].id, tasks assert tasks[0].state == 'completed', tasks assert len(tasks[0].task_runs) == 5, tasks assert tasks[1].id == orig_tasks[1].id, tasks assert tasks[1].state == 'ongoing', tasks assert len(tasks[1].task_runs) == 0, tasks url = 'api/project/%s/newtask?external_uid=%s&limit=2&orderby=id&desc=False' % (project.id,uid) headers = self.get_headers_jwt(project) res = self.app.get(url, headers=headers) data = json.loads(res.data) assert data[0]['id'] == orig_tasks[0].id assert data[0]['state'] == 'completed' assert data[1]['id'] == orig_tasks[1].id assert data[1]['state'] == 'ongoing' tr = TaskRun(project_id=project.id, task_id=tasks[0].id, external_uid=uid) db.session.add(tr) db.session.commit() tasks = get_depth_first_all_task(project.id, external_uid=uid, limit=2, orderby='id', desc=False) assert len(tasks) == 1, len(tasks) assert tasks[0].id == orig_tasks[1].id assert tasks[0].state == 'ongoing' res = self.app.get(url, headers=headers) data = json.loads(res.data) assert data['id'] == orig_tasks[1].id assert data['state'] == 'ongoing'