def test_update_scheduler(self):
     task = ScheduledTask(name='test', task_trigger=self.date_trigger)
     update = {'task_trigger': {'type': 'interval', 'args': {'hours': 1, 'weeks': 4}}}
     task.update(update)
     self.assertEqual(task.trigger_type, 'interval')
     self.assertDictEqual(json.loads(task.trigger_args), {'hours': 1, 'weeks': 4})
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
 def test_update_workflows_none_existing_running(self):
     workflows = ['a', 'b', 'c', 'd']
     task = ScheduledTask(name='test', task_trigger=self.date_trigger, status='running')
     update = {'workflows': ['a', 'b', 'c']}
     task.update(update)
     self.assertListEqual([workflow.workflow_id for workflow in task.workflows], ['a', 'b', 'c'])
     self.assertSchedulerWorkflowsRunningEqual(['a', 'b', 'c'])
 def test_update_workflows_with_existing_workflows_running_add_and_remove(self):
     workflows = ['a', 'b', 'c', 'd']
     task = ScheduledTask(name='test', task_trigger=self.date_trigger, workflows=['b', 'c', 'd'], status='running')
     update = {'workflows': ['a', 'b']}
     task.update(update)
     self.assertSetEqual({workflow.workflow_id for workflow in task.workflows}, {'a', 'b'})
     self.assertSchedulerWorkflowsRunningEqual(['a', 'b'])
 def test_update_scheduler_invalid_scheduler(self):
     task = ScheduledTask(name='test', task_trigger=self.date_trigger)
     update = {'name': 'renamed', 'task_trigger': {'type': 'interval', 'args': {'invalid': 1, 'weeks': 4}}}
     with self.assertRaises(InvalidTriggerArgs):
         task.update(update)
     self.assertEqual(task.name, 'test')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #5
0
 def __func():
     data = request.get_json()
     invalid_uuids = validate_uuids(data['workflows'])
     if invalid_uuids:
         return invalid_uuid_problem(invalid_uuids)
     task = ScheduledTask.query.filter_by(name=data['name']).first()
     if task is None:
         try:
             task = ScheduledTask(**data)
         except InvalidTriggerArgs:
             return invalid_scheduler_args_problem
         else:
             db.session.add(task)
             db.session.commit()
             return task.as_json(), OBJECT_CREATED
     else:
         return scheduled_task_name_already_exists_problem(data['name'], 'create')
Пример #6
0
 def test_init_with_status_with_trigger_without_workflows(self):
     task = ScheduledTask(name='test',
                          task_trigger=self.date_trigger,
                          status='running')
     self.assertStructureIsCorrect(
         task,
         'test',
         trigger_type='date',
         trigger_args={'run_date': '2017-01-25 10:00:00'},
         status='running')
Пример #7
0
 def test_as_json_with_scheduler(self):
     task = ScheduledTask(name='test', task_trigger=self.date_trigger)
     expected = {
         'id': None,
         'name': 'test',
         'description': '',
         'status': 'running',
         'workflows': set(),
         'task_trigger': self.date_trigger
     }
     self.assertJsonIsCorrect(task, expected)
Пример #8
0
 def test_as_json_running(self):
     task = ScheduledTask(name='test', status='stopped')
     expected = {
         'id': None,
         'name': 'test',
         'description': '',
         'status': 'stopped',
         'workflows': set(),
         'task_trigger': {
             'type': 'unspecified',
             'args': {}
         }
     }
     self.assertJsonIsCorrect(task, expected)
Пример #9
0
 def test_init_with_status_with_trigger_with_workflows(self):
     workflows = ['id1', 'id2', 'id3', 'id4']
     task = ScheduledTask(name='test',
                          task_trigger=self.date_trigger,
                          status='running',
                          workflows=workflows)
     self.assertStructureIsCorrect(
         task,
         'test',
         trigger_type='date',
         trigger_args={'run_date': '2017-01-25 10:00:00'},
         status='running',
         workflows=set(workflows),
         expected_running_workflows=workflows)
Пример #10
0
 def test_as_json_with_workflows(self):
     task = ScheduledTask(name='test', workflows=['b', 'c', 'd'])
     expected = {
         'id': None,
         'name': 'test',
         'description': '',
         'status': 'running',
         'workflows': {'b', 'c', 'd'},
         'task_trigger': {
             'type': 'unspecified',
             'args': {}
         }
     }
     self.assertJsonIsCorrect(task, expected)
Пример #11
0
 def test_stop_from_running_no_workflows(self):
     task = ScheduledTask(name='test', status='running')
     task.stop()
     self.assertEqual(task.status, 'stopped')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #12
0
 def test_start_from_stopped_unspecified_trigger(self):
     task = ScheduledTask(name='test')
     task.start()
     self.assertEqual(task.status, 'running')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #13
0
 def test_start_from_running(self):
     task = ScheduledTask(name='test', status='running')
     task.start()
     self.assertEqual(task.status, 'running')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #14
0
 def test_update_name_desc_only(self):
     task = ScheduledTask(name='test')
     update = {'name': 'updated_name', 'description': 'desc'}
     task.update(update)
     self.assertEqual(task.name, 'updated_name')
     self.assertEqual(task.description, 'desc')
 def test_update_workflows_none_existing_stopped(self):
     task = ScheduledTask(name='test', status='stopped')
     update = {'workflows': ['a', 'b', 'c']}
     task.update(update)
     self.assertListEqual([workflow.workflow_id for workflow in task.workflows], ['a', 'b', 'c'])
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
 def test_start_from_stopped_with_trigger(self):
     workflows = ['a', 'b', 'c', 'd']
     task = ScheduledTask(name='test', task_trigger=self.date_trigger, workflows=['b', 'c', 'd'])
     task.start()
     self.assertEqual(task.status, 'running')
     self.assertSchedulerWorkflowsRunningEqual(['b', 'c', 'd'])
Пример #17
0
 def test_start_from_running(self):
     task = ScheduledTask(name='test', status='running')
     task.start()
     self.assertEqual(task.status, 'running')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #18
0
 def test_update_name_desc_only(self):
     task = ScheduledTask(name='test')
     update = {'name': 'updated_name', 'description': 'desc'}
     task.update(update)
     self.assertEqual(task.name, 'updated_name')
     self.assertEqual(task.description, 'desc')
 def test_init_with_trigger(self):
     task = ScheduledTask(name='test', task_trigger=self.date_trigger)
     self.assertStructureIsCorrect(task, 'test', trigger_type='date',
                                   trigger_args={'run_date': '2017-01-25 10:00:00'})
    def test_init_with_workflows(self):
        task = ScheduledTask(name='test', workflows=['id1', 'id2', 'id3', 'id4'])

        self.assertStructureIsCorrect(task, 'test', workflows={'id1', 'id2', 'id3', 'id4'})
Пример #21
0
 def test_stop_from_stopped(self):
     task = ScheduledTask(name='test')
     task.stop()
     self.assertEqual(task.status, 'stopped')
 def test_stop_from_running_with_workflows(self):
     task = ScheduledTask(name='test', task_trigger=self.date_trigger, workflows=['b', 'c', 'd'])
     task.stop()
     self.assertEqual(task.status, 'stopped')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #23
0
 def test_stop_from_running_no_workflows(self):
     task = ScheduledTask(name='test', status='running')
     task.stop()
     self.assertEqual(task.status, 'stopped')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #24
0
 def test_stop_from_stopped(self):
     task = ScheduledTask(name='test')
     task.stop()
     self.assertEqual(task.status, 'stopped')
Пример #25
0
 def test_init_default(self):
     task = ScheduledTask(name='test')
     self.assertStructureIsCorrect(task, 'test')
Пример #26
0
 def test_init_with_invalid_status(self):
     task = ScheduledTask(name='test', status='invalid')
     self.assertStructureIsCorrect(task, 'test')
 def test_init_with_status_trigger_unspecified(self):
     workflows = ['id1', 'id2', 'id3', 'id4']
     task = ScheduledTask(name='test', status='running', workflows=['id1', 'id2', 'id3', 'id4'])
     self.assertStructureIsCorrect(task, 'test', status='running', workflows=set(workflows))
Пример #28
0
 def test_start_from_stopped_unspecified_trigger(self):
     task = ScheduledTask(name='test')
     task.start()
     self.assertEqual(task.status, 'running')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
Пример #29
0
 def test_init_with_description(self):
     task = ScheduledTask(name='test', description='desc')
     self.assertStructureIsCorrect(task, 'test', description='desc')
Пример #30
0
 def test_init_stopped(self):
     task = ScheduledTask(name='test', status='stopped')
     self.assertStructureIsCorrect(task, 'test', status='stopped')
 def test_init_with_invalid_trigger(self):
     trigger = {'type': 'date', 'args': {'run_date': '2017-100-25 10:00:00'}}
     with self.assertRaises(InvalidTriggerArgs):
         ScheduledTask(name='test', task_trigger=trigger)
 def test_update_workflows_with_existing_workflows_stopped(self):
     task = ScheduledTask(name='test', workflows=['b', 'c', 'd'])
     update = {'workflows': ['a', 'b', 'c']}
     task.update(update)
     self.assertSetEqual({workflow.workflow_id for workflow in task.workflows}, {'a', 'b', 'c'})
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)