summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-02-02 14:09:28 +0000
committerGerrit Code Review <review@openstack.org>2013-02-02 14:09:28 +0000
commit7a378c212be4f52d24e35a177853dfba003f6445 (patch)
tree1cbbfdbf5297e3cb81a5da01e046d3120155abfd /nova/tests
parentbdb3b3c09216154ce9eb749798742f40ef43da94 (diff)
parente12339def3d9182f5ab23869e6bdc946e8e42825 (diff)
Merge "populate dnsmasq lease db with valid leases"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/network/test_linux_net.py50
1 files changed, 48 insertions, 2 deletions
diff --git a/nova/tests/network/test_linux_net.py b/nova/tests/network/test_linux_net.py
index 3c219f5f4..bc21b80ad 100644
--- a/nova/tests/network/test_linux_net.py
+++ b/nova/tests/network/test_linux_net.py
@@ -15,6 +15,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import calendar
import os
import mox
@@ -25,6 +26,7 @@ from nova.network import driver
from nova.network import linux_net
from nova.openstack.common import fileutils
from nova.openstack.common import log as logging
+from nova.openstack.common import timeutils
from nova import test
from nova import utils
@@ -107,6 +109,7 @@ fixed_ips = [{'id': 0,
'address': '192.168.0.100',
'instance_id': 0,
'allocated': True,
+ 'leased': True,
'virtual_interface_id': 0,
'instance_uuid': '00000000-0000-0000-0000-0000000000000000',
'floating_ips': []},
@@ -115,6 +118,7 @@ fixed_ips = [{'id': 0,
'address': '192.168.1.100',
'instance_id': 0,
'allocated': True,
+ 'leased': True,
'virtual_interface_id': 1,
'instance_uuid': '00000000-0000-0000-0000-0000000000000000',
'floating_ips': []},
@@ -123,6 +127,7 @@ fixed_ips = [{'id': 0,
'address': '192.168.0.101',
'instance_id': 1,
'allocated': True,
+ 'leased': True,
'virtual_interface_id': 2,
'instance_uuid': '00000000-0000-0000-0000-0000000000000001',
'floating_ips': []},
@@ -131,6 +136,7 @@ fixed_ips = [{'id': 0,
'address': '192.168.1.101',
'instance_id': 1,
'allocated': True,
+ 'leased': True,
'virtual_interface_id': 3,
'instance_uuid': '00000000-0000-0000-0000-0000000000000001',
'floating_ips': []},
@@ -139,6 +145,7 @@ fixed_ips = [{'id': 0,
'address': '192.168.0.102',
'instance_id': 0,
'allocated': True,
+ 'leased': False,
'virtual_interface_id': 4,
'instance_uuid': '00000000-0000-0000-0000-0000000000000000',
'floating_ips': []},
@@ -147,6 +154,7 @@ fixed_ips = [{'id': 0,
'address': '192.168.1.102',
'instance_id': 1,
'allocated': True,
+ 'leased': False,
'virtual_interface_id': 5,
'instance_uuid': '00000000-0000-0000-0000-0000000000000001',
'floating_ips': []}]
@@ -184,7 +192,7 @@ vifs = [{'id': 0,
'instance_uuid': '00000000-0000-0000-0000-0000000000000001'}]
-def get_associated(context, network_id, host=None):
+def get_associated(context, network_id, host=None, address=None):
result = []
for datum in fixed_ips:
if (datum['network_id'] == network_id and datum['allocated']
@@ -193,6 +201,8 @@ def get_associated(context, network_id, host=None):
instance = instances[datum['instance_uuid']]
if host and host != instance['host']:
continue
+ if address and address != datum['address']:
+ continue
cleaned = {}
cleaned['address'] = datum['address']
cleaned['instance_uuid'] = datum['instance_uuid']
@@ -203,6 +213,8 @@ def get_associated(context, network_id, host=None):
cleaned['instance_hostname'] = instance['hostname']
cleaned['instance_updated'] = instance['updated_at']
cleaned['instance_created'] = instance['created_at']
+ cleaned['allocated'] = datum['allocated']
+ cleaned['leased'] = datum['leased']
result.append(cleaned)
return result
@@ -299,7 +311,6 @@ class LinuxNetworkTestCase(test.TestCase):
"192.168.1.102,net:NW-5"
)
actual_hosts = self.driver.get_dhcp_hosts(self.context, networks[1])
-
self.assertEquals(actual_hosts, expected)
def test_get_dns_hosts_for_nw00(self):
@@ -333,6 +344,41 @@ class LinuxNetworkTestCase(test.TestCase):
self.assertEquals(actual_opts, expected_opts)
+ def test_get_dhcp_leases_for_nw00(self):
+ timestamp = timeutils.utcnow()
+ seconds_since_epoch = calendar.timegm(timestamp.utctimetuple())
+
+ leases = self.driver.get_dhcp_leases(self.context, networks[0])
+ leases = leases.split('\n')
+ for lease in leases:
+ lease = lease.split(' ')
+ data = get_associated(self.context, 0, address=lease[2])[0]
+ self.assertTrue(data['allocated'])
+ self.assertTrue(data['leased'])
+ self.assertTrue(lease[0] > seconds_since_epoch)
+ self.assertTrue(lease[1] == data['vif_address'])
+ self.assertTrue(lease[2] == data['address'])
+ self.assertTrue(lease[3] == data['instance_hostname'])
+ self.assertTrue(lease[4] == '*')
+
+ def test_get_dhcp_leases_for_nw01(self):
+ self.flags(host='fake_instance01')
+ timestamp = timeutils.utcnow()
+ seconds_since_epoch = calendar.timegm(timestamp.utctimetuple())
+
+ leases = self.driver.get_dhcp_leases(self.context, networks[1])
+ leases = leases.split('\n')
+ for lease in leases:
+ lease = lease.split(' ')
+ data = get_associated(self.context, 1, address=lease[2])[0]
+ self.assertTrue(data['allocated'])
+ self.assertTrue(data['leased'])
+ self.assertTrue(lease[0] > seconds_since_epoch)
+ self.assertTrue(lease[1] == data['vif_address'])
+ self.assertTrue(lease[2] == data['address'])
+ self.assertTrue(lease[3] == data['instance_hostname'])
+ self.assertTrue(lease[4] == '*')
+
def test_dhcp_opts_not_default_gateway_network(self):
expected = "NW-0,3"
data = get_associated(self.context, 0)[0]