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)
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)
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],), {}), ])
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',), {}) ])
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
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()
def test_add(self, pending): plugin = Mock() request = Mock() scheduler = Scheduler(plugin) scheduler.add(request) pending.return_value.put.assert_called_once_with(request)