diff options
| author | Jason Koelker <jason@koelker.net> | 2011-09-14 15:47:41 -0500 |
|---|---|---|
| committer | Jason Koelker <jason@koelker.net> | 2011-09-14 15:47:41 -0500 |
| commit | 543fe5ced18a95faa6ef3f2b774beb052aa7d27f (patch) | |
| tree | 4e6ab763d0c7c8ebaafe75901608f5d2c68f6b97 | |
| parent | 6155c128dbd5baf14e749036c0a3920ca8b7ae40 (diff) | |
add tests
| -rw-r--r-- | nova/network/manager.py | 2 | ||||
| -rw-r--r-- | nova/tests/test_network.py | 134 |
2 files changed, 128 insertions, 8 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py index ec8360fb1..4566151e8 100644 --- a/nova/network/manager.py +++ b/nova/network/manager.py @@ -427,7 +427,7 @@ class NetworkManager(manager.SchedulerDependentManager): for fixed_ip in vif['fixed_ips']: if not fixed_ip or not fixed_ip['address']: continue - if fixed_ip == fixed_ip_filter: + if fixed_ip['address'] == fixed_ip_filter: results.append({'instance_id': vif['instance_id'], 'ip': fixed_ip['address']}) continue diff --git a/nova/tests/test_network.py b/nova/tests/test_network.py index 6644a739a..30673050f 100644 --- a/nova/tests/test_network.py +++ b/nova/tests/test_network.py @@ -460,6 +460,26 @@ class CommonNetworkTestCase(test.TestCase): def network_get_all(self, context): raise exception.NoNetworksFound() + def virtual_interface_get_all(self, context): + floats = [{'address': '172.16.1.1'}, + {'address': '172.16.1.2'}, + {'address': '173.16.1.2'}] + + vifs = [{'instance_id': 0, + 'fixed_ipv6': '2001:db8::dcad:beff:feef:1', + 'fixed_ips': [{'address': '172.16.0.1', + 'floating_ips': [floats[0]]}]}, + {'instance_id': 1, + 'fixed_ipv6': '2001:db8::dcad:beff:feef:2', + 'fixed_ips': [{'address': '172.16.0.2', + 'floating_ips': [floats[1]]}]}, + {'instance_id': 2, + 'fixed_ipv6': '2002:db8::dcad:beff:feef:2', + 'fixed_ips': [{'address': '173.16.0.2', + 'floating_ips': [floats[2]]}]}] + return vifs + + def __init__(self): self.db = self.FakeDB() self.deallocate_called = None @@ -639,7 +659,6 @@ class CommonNetworkTestCase(test.TestCase): self.fake_create_fixed_ips) args = [None, 'foo', cidr, None, 1, 256, 'fd00::/48', None, None, None] - result = manager.create_networks(*args) self.assertTrue(manager.create_networks(*args)) def test_create_networks_cidr_already_used(self): @@ -662,12 +681,113 @@ class CommonNetworkTestCase(test.TestCase): None] self.assertTrue(manager.create_networks(*args)) - def get_instance_ids_by_ip_regex(self): - manager = self.FakeNetworkManager() - self.mox.StubOutWithMock(manager.db, 'virtual_interface_get_all') - def get_instance_ids_by_ipv6_regex(self): + def test_get_instance_ids_by_ip_regex(self): manager = self.FakeNetworkManager() - - def get_instance_ids_by_ip(self): + _vifs = manager.db.virtual_interface_get_all(None) + + # Greedy get eveything + res = manager.get_instance_ids_by_ip_filter(None, {'ip': '.*'}) + self.assertEqual(len(res), len(_vifs)) + + # Doesn't exist + res = manager.get_instance_ids_by_ip_filter(None, {'ip': '10.0.0.1'}) + self.assertFalse(res) + + # Get instance 1 + res = manager.get_instance_ids_by_ip_filter(None, + {'ip': '172.16.0.2'}) + self.assertTrue(res) + self.assertEqual(len(res), 1) + self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + + # Get instance 2 + res = manager.get_instance_ids_by_ip_filter(None, + {'ip': '173.16.0.2'}) + self.assertTrue(res) + self.assertEqual(len(res), 1) + self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id']) + + # Get instance 0 and 1 + res = manager.get_instance_ids_by_ip_filter(None, + {'ip': '172.16.0.*'}) + self.assertTrue(res) + self.assertEqual(len(res), 2) + self.assertEqual(res[0]['instance_id'], _vifs[0]['instance_id']) + self.assertEqual(res[1]['instance_id'], _vifs[1]['instance_id']) + + # Get instance 1 and 2 + res = manager.get_instance_ids_by_ip_filter(None, + {'ip': '17..16.0.2'}) + self.assertTrue(res) + self.assertEqual(len(res), 2) + self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + self.assertEqual(res[1]['instance_id'], _vifs[2]['instance_id']) + + def test_get_instance_ids_by_ipv6_regex(self): + manager = self.FakeNetworkManager() + _vifs = manager.db.virtual_interface_get_all(None) + + # Greedy get eveything + res = manager.get_instance_ids_by_ip_filter(None, {'ip6': '.*'}) + self.assertEqual(len(res), len(_vifs)) + + # Doesn't exist + res = manager.get_instance_ids_by_ip_filter(None, {'ip6': '.*1034.*'}) + self.assertFalse(res) + + # Get instance 1 + res = manager.get_instance_ids_by_ip_filter(None, + {'ip6': '2001:.*:2'}) + self.assertTrue(res) + self.assertEqual(len(res), 1) + self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + + # Get instance 2 + ip6 = '2002:db8::dcad:beff:feef:2' + res = manager.get_instance_ids_by_ip_filter(None, {'ip6': ip6}) + self.assertTrue(res) + self.assertEqual(len(res), 1) + self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id']) + + # Get instance 0 and 1 + res = manager.get_instance_ids_by_ip_filter(None, {'ip6': '2001:.*'}) + self.assertTrue(res) + self.assertEqual(len(res), 2) + self.assertEqual(res[0]['instance_id'], _vifs[0]['instance_id']) + self.assertEqual(res[1]['instance_id'], _vifs[1]['instance_id']) + + # Get instance 1 and 2 + ip6 = '200.:db8::dcad:beff:feef:2' + res = manager.get_instance_ids_by_ip_filter(None, {'ip6': ip6}) + self.assertTrue(res) + self.assertEqual(len(res), 2) + self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + self.assertEqual(res[1]['instance_id'], _vifs[2]['instance_id']) + + def test_get_instance_ids_by_ip(self): manager = self.FakeNetworkManager() + _vifs = manager.db.virtual_interface_get_all(None) + + # No regex for you! + res = manager.get_instance_ids_by_ip_filter(None, {'fixed_ip': '.*'}) + self.assertFalse(res) + + # Doesn't exist + ip = '10.0.0.1' + res = manager.get_instance_ids_by_ip_filter(None, {'fixed_ip': ip}) + self.assertFalse(res) + + # Get instance 1 + ip = '172.16.0.2' + res = manager.get_instance_ids_by_ip_filter(None, {'fixed_ip': ip}) + self.assertTrue(res) + self.assertEqual(len(res), 1) + self.assertEqual(res[0]['instance_id'], _vifs[1]['instance_id']) + + # Get instance 2 + ip = '173.16.0.2' + res = manager.get_instance_ids_by_ip_filter(None, {'fixed_ip': ip}) + self.assertTrue(res) + self.assertEqual(len(res), 1) + self.assertEqual(res[0]['instance_id'], _vifs[2]['instance_id']) |
