def test_get_procs_uncached(self, mock_topo_sort): nodes = { 'node0': mock.Mock(**{'check.return_value': True}), 'node1': mock.Mock(**{'check.return_value': True}), 'node2': mock.Mock(**{'check.return_value': False}), 'node3': mock.Mock(**{'check.return_value': True}), } for name, node in nodes.items(): node.name = name proc = processor.Processor() proc.nodes = nodes result = proc._get_procs('ev') self.assertEqual(result, ['a', 'b', 'c']) self.assertEqual(proc.topo_cache, { frozenset(['node0', 'node1', 'node3']): ['a', 'b', 'c'], }) mock_topo_sort.assert_called_once_with( set([ nodes['node0'], nodes['node1'], nodes['node3'], ])) for node in nodes.values(): node.check.assert_called_once_with('ev')
def test_get_new(self, mock_ProcNode): proc = processor.Processor() result = proc._get('spam') self.assertEqual(result, 'spam') self.assertEqual(proc.nodes, {'spam': 'spam'}) mock_ProcNode.assert_called_once_with(proc, 'spam')
def test_get_exists(self, mock_ProcNode): proc = processor.Processor() proc.nodes['spam'] = 'node' result = proc._get('spam') self.assertEqual(result, 'node') self.assertEqual(proc.nodes, {'spam': 'node'}) self.assertFalse(mock_ProcNode.called)
def test_register_exists(self, mock_get): func = mock.Mock(__name__='proc_a') node = mock_get.return_value proc = processor.Processor() proc.topo_cache = {'spam': 'sorted'} self.assertRaises(exc.ProcessorReregisterException, proc.register, func) self.assertEqual(proc.topo_cache, {'spam': 'sorted'}) self.assertEqual(node.func, 'func') mock_get.assert_called_once_with('proc_a')
def test_register_withname(self, mock_get): func = mock.Mock(__name__='proc_a') node = mock_get.return_value proc = processor.Processor() proc.topo_cache = {'spam': 'sorted'} proc.register(func, 'proc_b') self.assertEqual(proc.topo_cache, {}) self.assertEqual(node.func, func) mock_get.assert_called_once_with('proc_b')
def test_load_from(self, mock_ExtensionManager, mock_register): exts = [] for i in range(5): ext = mock.Mock(plugin='plug%d' % i) ext.name = 'ext%d' % i exts.append(ext) mock_ExtensionManager.return_value = exts proc = processor.Processor() proc.load_from('name.space') mock_ExtensionManager.assert_called_once_with('name.space') mock_register.assert_has_calls( [mock.call('plug%d' % i, 'ext%d' % i) for i in range(5)]) self.assertEqual(mock_register.call_count, 5)
def test_process_base(self, mock_get_procs): nodes = [ mock.Mock(), mock.Mock(), mock.Mock(), mock.Mock(), ] mock_get_procs.return_value = nodes proc = processor.Processor() result = proc.process('ev') self.assertEqual(result, None) mock_get_procs.assert_called_once_with('ev') for node in nodes: node.assert_called_once_with('ev')
def _test_process_additional_events(self, mock_get_procs, nodes, expected_get_proc_call_args_list, expected_node_call_counts, expected_result): mock_get_procs.side_effect = lambda ev: nodes[ev] proc = processor.Processor() result = proc.process(0) self.assertEqual(result, expected_result) self.assertEqual(mock_get_procs.call_args_list, expected_get_proc_call_args_list) for ev, ev_nodes in enumerate(nodes): for i, node in enumerate(ev_nodes): self.assertEqual(node.call_count, expected_node_call_counts[ev][i])
def test_process_stop(self, mock_get_procs): nodes = [ mock.Mock(), mock.Mock(), mock.Mock(side_effect=exc.StopProcessing('stop')), mock.Mock(), ] mock_get_procs.return_value = nodes proc = processor.Processor() result = proc.process('ev') self.assertEqual(result, 'stop') mock_get_procs.assert_called_once_with('ev') for node in nodes[:-1]: node.assert_called_once_with('ev') self.assertFalse(nodes[-1].called)
def test_init(self): proc = processor.Processor() self.assertEqual(proc.nodes, {}) self.assertEqual(proc.topo_cache, {})