示例#1
0
    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')
示例#2
0
    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')
示例#3
0
    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)
示例#4
0
    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')
示例#5
0
    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')
示例#6
0
    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)
示例#7
0
    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')
示例#8
0
    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])
示例#9
0
    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)
示例#10
0
    def test_init(self):
        proc = processor.Processor()

        self.assertEqual(proc.nodes, {})
        self.assertEqual(proc.topo_cache, {})