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