Exemple #1
0
    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
Exemple #3
0
    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_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'
Exemple #6
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, 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
Exemple #9
0
    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'