コード例 #1
0
 def test_init(self, builtin, pending, set_daemon):
     plugin = Mock()
     scheduler = Scheduler(plugin)
     pending.assert_called_once_with(plugin.name)
     builtin.assert_called_once_with(plugin)
     set_daemon.assert_called_with(True)
     self.assertEqual(scheduler.plugin, plugin)
     self.assertEqual(scheduler.pending, pending.return_value)
     self.assertEqual(scheduler.builtin, builtin.return_value)
コード例 #2
0
    def test_run_raised(self, aborted, select_plugin, pending):
        plugin = Mock()
        sn = 1234
        pending.return_value.get.return_value = Document(sn=sn)
        select_plugin.side_effect = ValueError
        aborted.side_effect = [False, True]

        # test
        scheduler = Scheduler(plugin)
        scheduler.run()

        # validation
        pending.return_value.commit.assert_called_once_with(sn)
コード例 #3
0
    def test_run(self, builtin, pending, task, select_plugin, tx, aborted):
        builtin.return_value = Mock(name='builtin')
        plugin = Mock(name='plugin')
        task_list = [
            Mock(name='task-1'),
            Mock(name='task-2'),
        ]
        tx_list = [
            Mock(name='tx-1'),
            Mock(name='tx-2'),
        ]
        request_list = [
            Document(sn=1),
            Document(sn=2),
        ]
        task.side_effect = task_list
        tx.side_effect = tx_list
        aborted.side_effect = [False, False, True]
        pending.return_value.get.side_effect = request_list
        builtin.return_value.provides.side_effect = [True, False]
        select_plugin.side_effect = [builtin.return_value, plugin]

        # test
        scheduler = Scheduler(plugin)
        scheduler.run()

        # validation
        builtin.return_value.pool.run.assert_called_once_with(task_list[0])
        plugin.pool.run.assert_called_once_with(task_list[1])
        self.assertEqual(
            select_plugin.call_args_list,
            [
                ((request_list[0],), {}),
                ((request_list[1],), {}),
            ])
        self.assertEqual(
            tx.call_args_list,
            [
                ((builtin.return_value, pending.return_value, request_list[0]), {}),
                ((plugin, pending.return_value, request_list[1]), {})
            ])
        self.assertEqual(
            task.call_args_list,
            [
                ((tx_list[0],), {}),
                ((tx_list[1],), {}),
            ])
コード例 #4
0
 def test_select_plugin(self, builtin):
     plugin = Mock()
     request = Document(request={'classname': 'A'})
     scheduler = Scheduler(plugin)
     # find builtin
     builtin.return_value.provides.return_value = True
     selected = scheduler.select_plugin(request)
     self.assertEqual(selected, builtin.return_value)
     # find plugin
     builtin.return_value.provides.return_value = False
     selected = scheduler.select_plugin(request)
     self.assertEqual(selected, plugin)
     self.assertEqual(
         builtin.return_value.provides.call_args_list,
         [
             (('A',), {}),
             (('A',), {})
         ])
コード例 #5
0
 def __init__(self, descriptor, path):
     """
     :param descriptor: The plugin descriptor.
     :type descriptor: PluginDescriptor
     :param path: The plugin descriptor path.
     :type path: str
     """
     self.__mutex = RLock()
     self.path = path
     self.descriptor = descriptor
     self.pool = ThreadPool(int(descriptor.main.threads or 1))
     self.impl = None
     self.actions = []
     self.dispatcher = Dispatcher()
     self.whiteboard = Whiteboard()
     self.scheduler = Scheduler(self)
     self.delegate = Delegate()
     self.authenticator = None
     self.consumer = None
コード例 #6
0
 def test_shutdown(self, builtin, abort):
     plugin = Mock()
     scheduler = Scheduler(plugin)
     scheduler.shutdown()
     builtin.return_value.shutdown.assert_called_once_with()
     abort.assert_called_once_with()
コード例 #7
0
 def test_add(self, pending):
     plugin = Mock()
     request = Mock()
     scheduler = Scheduler(plugin)
     scheduler.add(request)
     pending.return_value.put.assert_called_once_with(request)