Completed
Pull Request — master (#58)
by
unknown
02:30
created

build.tests.unit.test_graph.TestGraph.test_shortest_paths()   A

Complexity

Conditions 1

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 7
nop 2
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
"""Test Graph methods."""
2
from unittest import TestCase
3
from unittest.mock import call, patch
4
5
from napps.kytos.pathfinder.graph import KytosGraph
6
from tests.helpers import get_topology_mock
7
8
9
# pylint: disable=arguments-differ, protected-access
10
class TestGraph(TestCase):
11
    """Tests for the Main class."""
12
13
    @patch('networkx.Graph')
14
    def setUp(self, mock_graph):
15
        """Execute steps before each tests."""
16
        self.mock_graph = mock_graph.return_value
17
        self.kytos_graph = KytosGraph()
18
19
    def test_clear(self):
20
        """Test clear."""
21
        self.kytos_graph.clear()
22
23
        self.mock_graph.clear.assert_called()
24
25
    @patch('napps.kytos.pathfinder.graph.KytosGraph.update_links')
26
    @patch('napps.kytos.pathfinder.graph.KytosGraph.update_nodes')
27
    def test_update_topology(self, *args):
28
        """Test update topology."""
29
        (mock_update_nodes, mock_update_links) = args
30
        topology = get_topology_mock()
31
        self.kytos_graph.update_topology(topology)
32
33
        self.mock_graph.clear.assert_called()
34
        mock_update_nodes.assert_called_with(topology.switches)
35
        mock_update_links.assert_called_with(topology.links)
36
37
    def test_update_nodes(self):
38
        """Test update nodes."""
39
        topology = get_topology_mock()
40
        self.kytos_graph.update_nodes(topology.switches)
41
        switch = topology.switches["00:00:00:00:00:00:00:01"]
42
43
        calls = [call(switch.id)]
44
        calls += [call(interface.id)
45
                  for interface in switch.interfaces.values()]
46
        self.mock_graph.add_node.assert_has_calls(calls)
47
48
        calls = [call(switch.id, interface.id)
49
                 for interface in switch.interfaces.values()]
50
        self.mock_graph.add_edge.assert_has_calls(calls)
51
52
    # @patch('napps.kytos.pathfinder.graph.KytosGraph._set_default_metadata')
53
    # def test_update_links(self, mock_set_default_metadata):
54
    #     """Test update nodes."""
55
    #     topology = get_topology_mock()
56
    #     self.kytos_graph.update_links(topology.links)
57
58
    #     keys = []
59
    #     all_metadata = [link.metadata for link in topology.links.values()]
60
    #     for metadata in all_metadata:
61
    #         keys.extend(key for key in metadata.keys())
62
    #     mock_set_default_metadata.assert_called_with(keys)
63
64
    def test_remove_switch_hops(self):
65
        """Test remove switch hops."""
66
        circuit = {"hops": ["00:00:00:00:00:00:00:01:1",
67
                            "00:00:00:00:00:00:00:01",
68
                            "00:00:00:00:00:00:00:01:2"]}
69
70
        self.kytos_graph._remove_switch_hops(circuit)
71
72
        expected_circuit = {"hops": ["00:00:00:00:00:00:00:01:1",
73
                                     "00:00:00:00:00:00:00:01:2"]}
74
        self.assertEqual(circuit, expected_circuit)
75
76
    # @patch('networkx.shortest_simple_paths', return_value=["any"])
77
    # def test_shortest_paths(self, mock_shortest_simple_paths):
78
    #    """Test shortest paths."""
79
    #    source, dest = "00:00:00:00:00:00:00:01:1",
80
    # "00:00:00:00:00:00:00:02:2"
81
    #    shortest_paths = self.kytos_graph.shortest_paths(source, dest)
82
83
    #    mock_shortest_simple_paths.assert_called_with(self.kytos_graph.graph,
84
    #                                                  source, dest, None)
85
    #    self.assertEqual(shortest_paths, ["any"])
86