You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2016/04/22 23:55:24 UTC

[3/7] qpid-dispatch git commit: DISPATCH-10 - Added tests for topologies with costs.

DISPATCH-10 - Added tests for topologies with costs.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/faf0eefe
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/faf0eefe
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/faf0eefe

Branch: refs/heads/master
Commit: faf0eefee51e54cc8c5bd2d1fd46193619df46a1
Parents: 607e942
Author: Ted Ross <tr...@redhat.com>
Authored: Wed Apr 20 18:37:44 2016 -0400
Committer: Ted Ross <tr...@redhat.com>
Committed: Fri Apr 22 17:50:38 2016 -0400

----------------------------------------------------------------------
 tests/router_engine_test.py | 121 ++++++++++++++++++++++++++++++++++++---
 1 file changed, 113 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/faf0eefe/tests/router_engine_test.py
----------------------------------------------------------------------
diff --git a/tests/router_engine_test.py b/tests/router_engine_test.py
index 76ae101..003728c 100644
--- a/tests/router_engine_test.py
+++ b/tests/router_engine_test.py
@@ -230,7 +230,7 @@ class PathTest(unittest.TestCase):
         collection = { 'R1': LinkState(None, 'R1', 1, {'R2':1}),
                        'R2': LinkState(None, 'R2', 1, {'R1':1, 'R3':1}),
                        'R3': LinkState(None, 'R3', 1, {'R2':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 2)
         self.assertEqual(next_hops['R2'], 'R2')
         self.assertEqual(next_hops['R3'], 'R2')
@@ -258,7 +258,7 @@ class PathTest(unittest.TestCase):
                        'R4': LinkState(None, 'R4', 1, {'R2':1, 'R5':1}),
                        'R5': LinkState(None, 'R5', 1, {'R3':1, 'R4':1, 'R6':1}),
                        'R6': LinkState(None, 'R6', 1, {'R5':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 5)
         self.assertEqual(next_hops['R2'], 'R2')
         self.assertEqual(next_hops['R3'], 'R2')
@@ -295,7 +295,7 @@ class PathTest(unittest.TestCase):
                        'R1': LinkState(None, 'R1', 1, {'R3':1, 'R5':1}),
                        'R5': LinkState(None, 'R5', 1, {'R1':1, 'R4':1, 'R6':1}),
                        'R6': LinkState(None, 'R6', 1, {'R5':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 5)
         self.assertEqual(next_hops['R2'], 'R3')
         self.assertEqual(next_hops['R3'], 'R3')
@@ -332,7 +332,7 @@ class PathTest(unittest.TestCase):
                        'R1': LinkState(None, 'R1', 1, {'R3':1, 'R5':1}),
                        'R5': LinkState(None, 'R5', 1, {'R1':1, 'R4':1, 'R6':1}),
                        'R6': LinkState(None, 'R6', 1, {'R5':1, 'R7':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 6)
         self.assertEqual(next_hops['R2'], 'R3')
         self.assertEqual(next_hops['R3'], 'R3')
@@ -372,7 +372,7 @@ class PathTest(unittest.TestCase):
                        'R1': LinkState(None, 'R1', 1, {'R3':1, 'R5':1, 'R2':1}),
                        'R5': LinkState(None, 'R5', 1, {'R1':1, 'R4':1, 'R6':1}),
                        'R6': LinkState(None, 'R6', 1, {'R5':1, 'R7':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 6)
         self.assertEqual(next_hops['R2'], 'R2')
         self.assertEqual(next_hops['R3'], 'R3')
@@ -381,6 +381,13 @@ class PathTest(unittest.TestCase):
         self.assertEqual(next_hops['R6'], 'R5')
         self.assertEqual(next_hops['R7'], 'R5')
 
+        self.assertEqual(costs['R2'], 1)
+        self.assertEqual(costs['R3'], 1)
+        self.assertEqual(costs['R4'], 2)
+        self.assertEqual(costs['R5'], 1)
+        self.assertEqual(costs['R6'], 2)
+        self.assertEqual(costs['R7'], 3)
+
         valid_origins['R2'].sort()
         valid_origins['R3'].sort()
         valid_origins['R4'].sort()
@@ -412,7 +419,7 @@ class PathTest(unittest.TestCase):
                        'R1': LinkState(None, 'R1', 1, {'R3':1, 'R5':1, 'R2':1}),
                        'R5': LinkState(None, 'R5', 1, {'R1':1, 'R4':1, 'R6':1}),
                        'R6': LinkState(None, 'R6', 1, {'R5':1, 'R7':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 6)
         self.assertEqual(next_hops['R2'], 'R2')
         self.assertEqual(next_hops['R3'], 'R3')
@@ -452,7 +459,7 @@ class PathTest(unittest.TestCase):
                        'R1': LinkState(None, 'R1', 1, {'R3':1, 'R5':1}),
                        'R5': LinkState(None, 'R5', 1, {'R1':1, 'R4':1, 'R6':1}),
                        'R6': LinkState(None, 'R6', 1, {'R5':1, 'R7':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 6)
         self.assertEqual(next_hops['R2'], 'R3')
         self.assertEqual(next_hops['R3'], 'R3')
@@ -492,7 +499,7 @@ class PathTest(unittest.TestCase):
                        'R1': LinkState(None, 'R1', 1, {'R3':1, 'R5':1}),
                        'R5': LinkState(None, 'R5', 1, {'R1':1, 'R4':1}),
                        'R6': LinkState(None, 'R6', 1, {'R5':1, 'R7':1}) }
-        next_hops, valid_origins = self.engine.calculate_routes(collection)
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
         self.assertEqual(len(next_hops), 4)
         self.assertEqual(next_hops['R2'], 'R3')
         self.assertEqual(next_hops['R3'], 'R3')
@@ -508,6 +515,104 @@ class PathTest(unittest.TestCase):
         self.assertEqual(valid_origins['R4'], [])
         self.assertEqual(valid_origins['R5'], ['R2', 'R3'])
 
+    def test_topology5_with_costs1(self):
+        """
+
+        +----+      +----+      +----+
+        | R2 |--4---| R3 |---4--| R4 |
+        +----+      +----+      +----+
+           |           |           |
+           |           3           5
+           |           |           |
+           |        +====+      +----+      +----+
+           +--20----| R1 |--10--| R5 |--2---| R6 |------ R7 (no ls from R7)
+                    +====+      +----+      +----+
+
+        """
+        collection = { 'R2': LinkState(None, 'R2', 1, {'R3':4,  'R1':20}),
+                       'R3': LinkState(None, 'R3', 1, {'R1':3,  'R2':4,  'R4':4}),
+                       'R4': LinkState(None, 'R4', 1, {'R3':4,  'R5':5}),
+                       'R1': LinkState(None, 'R1', 1, {'R3':3,  'R5':10, 'R2':20}),
+                       'R5': LinkState(None, 'R5', 1, {'R1':10, 'R4':5,  'R6':2}),
+                       'R6': LinkState(None, 'R6', 1, {'R5':2,  'R7':1}) }
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
+        self.assertEqual(len(next_hops), 6)
+        self.assertEqual(next_hops['R2'], 'R3')
+        self.assertEqual(next_hops['R3'], 'R3')
+        self.assertEqual(next_hops['R4'], 'R3')
+        self.assertEqual(next_hops['R5'], 'R5')
+        self.assertEqual(next_hops['R6'], 'R5')
+        self.assertEqual(next_hops['R7'], 'R5')
+
+        self.assertEqual(costs['R2'], 7)
+        self.assertEqual(costs['R3'], 3)
+        self.assertEqual(costs['R4'], 7)
+        self.assertEqual(costs['R5'], 10)
+        self.assertEqual(costs['R6'], 12)
+        self.assertEqual(costs['R7'], 13)
+
+        valid_origins['R2'].sort()
+        valid_origins['R3'].sort()
+        valid_origins['R4'].sort()
+        valid_origins['R5'].sort()
+        valid_origins['R6'].sort()
+        valid_origins['R7'].sort()
+        self.assertEqual(valid_origins['R2'], [])
+        self.assertEqual(valid_origins['R3'], [])
+        self.assertEqual(valid_origins['R4'], [])
+        self.assertEqual(valid_origins['R5'], [])
+        self.assertEqual(valid_origins['R6'], [])
+        self.assertEqual(valid_origins['R7'], [])
+
+    def test_topology5_with_costs2(self):
+        """
+
+        +----+      +----+      +----+
+        | R2 |--4---| R3 |---4--| R4 |
+        +----+      +----+      +----+
+           |           |           |
+           |          100         100
+           |           |           |
+           |        +====+      +----+      +----+
+           +---5----| R1 |--10--| R5 |--2---| R6 |------ R7 (no ls from R7)
+                    +====+      +----+      +----+
+
+        """
+        collection = { 'R2': LinkState(None, 'R2', 1, {'R3':4,   'R1':5}),
+                       'R3': LinkState(None, 'R3', 1, {'R1':100, 'R2':4,   'R4':4}),
+                       'R4': LinkState(None, 'R4', 1, {'R3':4,   'R5':100}),
+                       'R1': LinkState(None, 'R1', 1, {'R3':100, 'R5':10,  'R2':5}),
+                       'R5': LinkState(None, 'R5', 1, {'R1':10,  'R4':100, 'R6':2}),
+                       'R6': LinkState(None, 'R6', 1, {'R5':2,   'R7':1}) }
+        next_hops, costs, valid_origins = self.engine.calculate_routes(collection)
+        self.assertEqual(len(next_hops), 6)
+        self.assertEqual(next_hops['R2'], 'R2')
+        self.assertEqual(next_hops['R3'], 'R2')
+        self.assertEqual(next_hops['R4'], 'R2')
+        self.assertEqual(next_hops['R5'], 'R5')
+        self.assertEqual(next_hops['R6'], 'R5')
+        self.assertEqual(next_hops['R7'], 'R5')
+
+        self.assertEqual(costs['R2'], 5)
+        self.assertEqual(costs['R3'], 9)
+        self.assertEqual(costs['R4'], 13)
+        self.assertEqual(costs['R5'], 10)
+        self.assertEqual(costs['R6'], 12)
+        self.assertEqual(costs['R7'], 13)
+
+        valid_origins['R2'].sort()
+        valid_origins['R3'].sort()
+        valid_origins['R4'].sort()
+        valid_origins['R5'].sort()
+        valid_origins['R6'].sort()
+        valid_origins['R7'].sort()
+        self.assertEqual(valid_origins['R2'], ['R5', 'R6', 'R7'])
+        self.assertEqual(valid_origins['R3'], ['R5', 'R6', 'R7'])
+        self.assertEqual(valid_origins['R4'], ['R5', 'R6', 'R7'])
+        self.assertEqual(valid_origins['R5'], ['R2', 'R3', 'R4'])
+        self.assertEqual(valid_origins['R6'], ['R2', 'R3', 'R4'])
+        self.assertEqual(valid_origins['R7'], ['R2', 'R3', 'R4'])
+
 
 if __name__ == '__main__':
     unittest.main(main_module())


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org