Passed
Pull Request — master (#58)
by Humberto
02:13
created

build.tests.unit.test_results_simple   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 8
eloc 49
dl 0
loc 79
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A TestResultsSimple.test_path1() 0 4 1
A TestResultsSimple.test_path4() 0 7 2
A TestResultsSimple.generate_topology() 0 34 1
A TestResultsSimple.test_path5() 0 7 2
A TestResultsSimple.test_path2() 0 4 1
A TestResultsSimple.test_path3() 0 4 1
1
"""Module to test the KytosGraph in graph.py."""
2
from kytos.core.link import Link
3
4
# module under test
5
from tests.unit.test_results import TestResults
6
7
8
class TestResultsSimple(TestResults):
9
    """Tests for the graph class.
10
11
    Tests if the paths returned have only legal edges.
12
    """
13
14
    def test_path1(self):
15
        """Tests a simple, possible path"""
16
        results = self.get_path_constrained("S1", "S2")
17
        self.assertNotEqual(results, [])
18
19
    def test_path2(self):
20
        """Tests a simple, impossible path"""
21
        results = self.get_path_constrained("S1", "S4")
22
        self.assertEqual(results, [])
23
24
    def test_path3(self):
25
        """Tests a path to self again"""
26
        results = self.get_path_constrained("S1", "S1")
27
        self.assertNotEqual(results, [])
28
29
    def test_path4(self):
30
        """Tests constrained path to self again"""
31
        results = self.get_path_constrained(
32
            "S5", "S5", base={"ownership": "blue"})
33
        for result in results:
34
            self.assertNotEqual([], result["paths"])
35
            self.assertIn(['S5'], result["paths"])
36
37
    def test_path5(self):
38
        """Tests constrained path to self again"""
39
        results = self.get_path_constrained(
40
            "S5", "S5", flexible={"priority": 5})
41
        for result in results:
42
            self.assertNotEqual([], result["paths"])
43
            self.assertIn(['S5'], result["paths"])
44
45
    @staticmethod
46
    def generate_topology():
47
        """Generates a predetermined topology"""
48
        switches = {}
49
        interfaces = {}
50
        links = {}
51
52
        TestResults.create_switch("S1", switches)
53
        TestResults.add_interfaces(2, switches["S1"], interfaces)
54
55
        TestResults.create_switch("S2", switches)
56
        TestResults.add_interfaces(3, switches["S2"], interfaces)
57
58
        TestResults.create_switch("S3", switches)
59
        TestResults.add_interfaces(2, switches["S3"], interfaces)
60
61
        TestResults.create_switch("S4", switches)
62
        TestResults.add_interfaces(2, switches["S4"], interfaces)
63
64
        TestResults.create_switch("S5", switches)
65
66
        links["S1:1<->S2:1"] = Link(interfaces["S1:1"], interfaces["S2:1"])
67
        links["S1:1<->S2:1"].extend_metadata(
68
            {"bandwidth": 50, "ownership": "red"})
69
70
        links["S3:1<->S2:2"] = Link(interfaces["S3:1"], interfaces["S2:2"])
71
        links["S3:1<->S2:2"].extend_metadata(
72
            {"bandwidth": 51, "ownership": "blue"})
73
74
        links["S1:2<->S3:2"] = Link(interfaces["S1:2"], interfaces["S3:2"])
75
        links["S1:2<->S3:2"].extend_metadata(
76
            {"bandwidth": 49, "ownership": "blue"})
77
78
        return (switches, links)
79