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.uid for workflow in task.workflows],
                          ['a', 'b', 'c'])
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
 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.uid
                          for workflow in task.workflows}, {'a', 'b', 'c'})
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
 def test_stop_from_running_with_workflows(self):
     workflows = ['a', 'b', 'c', 'd']
     self.patch_controller_workflows(workflows)
     task = ScheduledTask(name='test',
                          task_trigger=self.date_trigger,
                          workflows=['b', 'c', 'd'])
     task.stop()
     self.assertEqual(task.status, 'stopped')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
 def test_update_workflows_none_existing_running(self):
     workflows = ['a', 'b', 'c', 'd']
     self.patch_controller_workflows(workflows)
     task = ScheduledTask(name='test',
                          task_trigger=self.date_trigger,
                          status='running')
     update = {'workflows': ['a', 'b', 'c']}
     task.update(update)
     self.assertListEqual([workflow.uid 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']
     self.patch_controller_workflows(workflows)
     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.uid
                          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)
 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_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_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_init_with_status_trigger_unspecified(self):
     workflows = ['uid1', 'uid2', 'uid3', 'uid4']
     self.patch_controller_workflows(workflows)
     task = ScheduledTask(name='test',
                          status='running',
                          workflows=['uid1', 'uid2', 'uid3', 'uid4'])
     self.assertStructureIsCorrect(task,
                                   'test',
                                   status='running',
                                   workflows=set(workflows))
Пример #11
0
 def test_read_all_scheduled_tasks_with_tasks(self):
     tasks = [ScheduledTask(name='test-{}'.format(i)) for i in range(4)]
     flask_server.running_context.db.session.add_all(tasks)
     expected = [
         task.as_json()
         for task in flask_server.running_context.ScheduledTask.query.all()
     ]
     response = self.get_with_status_check('/api/scheduledtasks',
                                           headers=self.headers)
     self.assertListEqual(response, expected)
 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)
 def test_init_with_status_with_trigger_without_workflows(self):
     workflows = ['uid1', 'uid2', 'uid3', 'uid4']
     self.patch_controller_workflows(workflows)
     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')
 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)
 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)
 def test_start_from_running(self):
     task = ScheduledTask(name='test', status='running')
     task.start()
     self.assertEqual(task.status, 'running')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
 def test_init_with_workflows(self):
     task = ScheduledTask(name='test',
                          workflows=['uid1', 'uid2', 'uid3', 'uid4'])
     self.assertStructureIsCorrect(
         task, 'test', workflows={'uid1', 'uid2', 'uid3', 'uid4'})
 def test_init_with_invalid_status(self):
     task = ScheduledTask(name='test', status='invalid')
     self.assertStructureIsCorrect(task, 'test')
 def test_init_with_description(self):
     task = ScheduledTask(name='test', description='desc')
     self.assertStructureIsCorrect(task, 'test', description='desc')
 def test_init_default(self):
     task = ScheduledTask(name='test')
     self.assertStructureIsCorrect(task, 'test')
 def test_stop_from_stopped(self):
     task = ScheduledTask(name='test')
     task.stop()
     self.assertEqual(task.status, 'stopped')
 def test_init_stopped(self):
     task = ScheduledTask(name='test', status='stopped')
     self.assertStructureIsCorrect(task, 'test', status='stopped')
 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)
 def test_start_from_stopped_unspecified_trigger(self):
     task = ScheduledTask(name='test')
     task.start()
     self.assertEqual(task.status, 'running')
     self.assertSchedulerWorkflowsRunningEqual(workflows=None)
 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')