Beispiel #1
0
 def test_process_task_empty(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     mock_task_thread = mock.Mock()
     exc._get_new_task = mock.Mock()
     exc._get_new_task.return_value = mock_task_thread
     exc._process_task()
     self.assertEqual(exc._active_task, mock_task_thread)
Beispiel #2
0
 def test_init_2(self):
     exc = scheduler.Executor("name", self.conn, self.queue_map, timeout=10)
     self.assertEqual(exc.name, "Executor[name]")
     self.assertEqual(exc.conn, self.conn)
     self.assertEqual(exc.task_queue_map, self.queue_map)
     self.assertEqual(exc.timeout, 10)
     self.assertEqual(exc._cancel_task_ids, set())
Beispiel #3
0
 def test_respond_is_alive(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._respond_is_alive()
     self.assertEqual(self.conn.send.call_count, 1)
     self.assertEqual(len(self.conn.send.call_args_list), 1)
     msg = self.conn.send.call_args_list[0][0][0]
     self.assertEqual(msg.status, scheduler.EXECUTOR_IS_ALIVE)
     self.assertEqual(msg.arguments["name"], "Executor[a]")
Beispiel #4
0
 def test_iteration_valid_task_no_poll(self):
     self.conn.poll.return_value = False
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._process_message = mock.create_autospec(exc._process_message)
     exc._process_task = mock.create_autospec(exc._process_task)
     self.assertEqual(exc.iteration(), True)
     self.assertEqual(exc._process_message.call_count, 0)
     exc._process_task.assert_called_once_with()
Beispiel #5
0
 def test_process_message_cancel_task(self, mock_logger):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     msg_mock = mock.create_autospec(scheduler.Message,
                                     status=scheduler.EXECUTOR_CANCEL_TASK,
                                     arguments={"task_id": "123"})
     exc._process_message(msg_mock)
     self.assertTrue("123" in exc._cancel_task_ids)
     mock_logger.debug.assert_called_with(
         "%s - Registered cancelled task %s", "Executor[a]", "123")
Beispiel #6
0
 def test_process_task_started(self, mock_logger):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._active_task = mock.create_autospec(scheduler.TaskThread,
                                             uid="123",
                                             is_alive=True,
                                             status=scheduler.TASK_STARTED)
     exc._process_task()
     mock_logger.debug.assert_called_with("%s - Ping task %s is alive",
                                          "Executor[a]", "123")
Beispiel #7
0
 def test_process_task_cancel_ahead(self):
     exc = scheduler.Executor("a", self.conn, {}, timeout=1)
     exc._active_task = mock.create_autospec(scheduler.TaskThread,
                                             uid="123",
                                             status=scheduler.TASK_PENDING)
     exc._cancel_task_ids.add("123")
     exc._process_task()
     self.assertEqual(exc._active_task, None)
     self.assertTrue("123" not in exc._cancel_task_ids)
Beispiel #8
0
 def test_get_new_task_priority2_queue(self):
     # prepare mock queues
     self.queue_map[const.PRIORITY_0].get.side_effect = threadqueue.Empty()
     self.queue_map[const.PRIORITY_1].get.side_effect = threadqueue.Empty()
     self.queue_map[
         const.PRIORITY_2].get.return_value = self.mock_task_block
     # should select priority 2
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     thread = exc._get_new_task()
     self.assertTrue(isinstance(thread, scheduler.TaskThread))
Beispiel #9
0
 def test_process_task_pending_not_available(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._active_task = mock.create_autospec(scheduler.TaskThread,
                                             uid="123",
                                             status=scheduler.TASK_PENDING)
     exc.external_system_available = mock.Mock()
     exc.external_system_available.return_value = False
     exc._process_task()
     self.assertEqual(exc._active_task.start.call_count, 0)
     self.assertEqual(self.conn.send.call_count, 0)
Beispiel #10
0
 def test_process_task_pending(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._active_task = mock.create_autospec(scheduler.TaskThread,
                                             uid="123",
                                             status=scheduler.TASK_PENDING,
                                             task_info="abc")
     exc._process_task()
     exc._active_task.start.assert_called_once_with()
     self.assertEqual(len(self.conn.send.call_args_list), 1)
     conn_msg = "call(Message[EXECUTOR_TASK_STARTED]{'info': 'abc', 'task_id': '123'})"
     self.assertEqual(str(self.conn.send.call_args_list[0]), conn_msg)
Beispiel #11
0
 def test_process_task_cancel(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     mock_task_thread = mock.Mock()
     mock_task_thread.uid = "123"
     exc._get_new_task = mock.Mock()
     exc._get_new_task.return_value = mock_task_thread
     exc._cancel_active_task = mock.Mock()
     exc._cancel_task_ids.add("123")
     exc._process_task()
     self.assertFalse("123" in exc._cancel_task_ids)
     exc._cancel_active_task.assert_called_once_with()
Beispiel #12
0
 def test_run(self, mock_time):
     # test time.sleep, if iteration returns True, `time.sleep` is called
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc.iteration = mock.create_autospec(exc.iteration, return_value=False)
     self.assertEqual(exc.run(), False)
     self.assertEqual(mock_time.sleep.call_count, 0)
     # test when iteration returns True, and then False
     exc.iteration = mock.Mock()
     exc.iteration.side_effect = [True, True, False]
     self.assertEqual(exc.run(), False)
     self.assertEqual(mock_time.sleep.call_count, 2)
Beispiel #13
0
 def test_process_task_failed(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._active_task = mock.create_autospec(scheduler.TaskThread,
                                             uid="123",
                                             status=scheduler.TASK_FAILED,
                                             task_info="abc")
     exc._process_task()
     self.assertEqual(len(self.conn.send.call_args_list), 1)
     conn_msg = "call(Message[EXECUTOR_TASK_FAILED]{'info': 'abc', 'task_id': '123'})"
     self.assertEqual(str(self.conn.send.call_args_list[0]), conn_msg)
     self.assertEqual(exc._active_task, None)
Beispiel #14
0
 def test_iteration_terminate(self):
     self.conn.poll.return_value = True
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._process_message = mock.create_autospec(exc._process_message)
     exc._process_message.side_effect = scheduler.ExecutorInterruptedException(
     )
     exc._process_task = mock.create_autospec(exc._process_task)
     exc._cancel_active_task = mock.create_autospec(exc._cancel_active_task)
     self.assertEqual(exc.iteration(), False)
     self.assertEqual(exc._terminated, True)
     self.assertEqual(exc._process_task.call_count, 0)
     exc._cancel_active_task.assert_called_once_with()
Beispiel #15
0
 def test_cancel_active_task_2(self):
     exc = scheduler.Executor("a", self.conn, {}, timeout=1)
     mock_task = mock.create_autospec(scheduler.TaskThread,
                                      uid="123",
                                      status=scheduler.TASK_STARTED,
                                      task_info="abc")
     exc._active_task = mock_task
     exc._cancel_active_task()
     self.assertEqual(exc._active_task, None)
     mock_task.cancel.assert_called_once_with()
     self.assertEqual(len(self.conn.send.call_args_list), 1)
     conn_msg = "call(Message[EXECUTOR_TASK_CANCELLED]{'info': 'abc', 'task_id': '123'})"
     self.assertEqual(str(self.conn.send.call_args_list[0]), conn_msg)
Beispiel #16
0
 def test_get_new_task_empty_queue(self):
     # prepare mock queues
     for queue in self.queue_map.values():
         queue.get.side_effect = threadqueue.Empty()
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     self.assertEqual(exc._get_new_task(), None)
Beispiel #17
0
 def test_iteration_terminate_global(self):
     self.conn.poll.return_value = True
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._process_message = mock.create_autospec(exc._process_message)
     exc._process_message.side_effect = StandardError()
     self.assertEqual(exc.iteration(), False)
Beispiel #18
0
 def test_process_message_shutdown(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     msg_mock = mock.create_autospec(scheduler.Message,
                                     status=scheduler.EXECUTOR_SHUTDOWN)
     with self.assertRaises(scheduler.ExecutorInterruptedException):
         exc._process_message(msg_mock)
Beispiel #19
0
 def test_iteration_executor_terminated(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._terminated = True
     self.assertEqual(exc.iteration(), False)
Beispiel #20
0
 def test_cancel_active_task_1(self, mock_logger):
     exc = scheduler.Executor("a", self.conn, {}, timeout=1)
     exc._active_task = None
     exc._cancel_active_task()
     mock_logger.info.assert_called_once_with(
         "%s - No active task to cancel", "Executor[a]")
Beispiel #21
0
 def test_process_task_no_tasks(self, mock_logger):
     exc = scheduler.Executor("a", self.conn, {}, timeout=1)
     exc._active_task = None
     exc._process_task()
     mock_logger.debug.assert_called_with("%s - No active task registered",
                                          "Executor[a]")
Beispiel #22
0
 def test_get_new_task_empty_map(self):
     exc = scheduler.Executor("a", self.conn, {}, timeout=1)
     self.assertEqual(exc._get_new_task(), None)
Beispiel #23
0
 def test_process_task_cancelled(self):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._active_task = mock.create_autospec(
         scheduler.TaskThread, uid="123", status=scheduler.TASK_CANCELLED)
     exc._process_task()
     self.assertEqual(exc._active_task, None)
Beispiel #24
0
 def test_process_message_invalid(self, mock_logger):
     exc = scheduler.Executor("a", self.conn, self.queue_map, timeout=1)
     exc._process_message(None)
     mock_logger.info.assert_called_once_with(
         "%s - Invalid message %s is ignored", "Executor[a]", None)