update the logic for calculating network sizes

This commit is contained in:
jaypipes@gmail.com
2010-07-21 02:57:31 +00:00
committed by Tarmac

View File

@@ -147,21 +147,42 @@ class NetworkTestCase(test.TrialTestCase):
def test_too_many_addresses(self): def test_too_many_addresses(self):
""" """
Network size is 32, there are 5 addresses reserved for VPN. Here, we test that a proper NoMoreAddresses exception is raised.
So we should get 23 usable addresses
However, the number of available IP addresses depends on the test
environment's setup.
Network size is set in test fixture's setUp method.
There are FLAGS.cnt_vpn_clients addresses reserved for VPN (NUM_RESERVED_VPN_IPS)
And there are NUM_STATIC_IPS that are always reserved by Nova for the necessary
services (gateway, CloudPipe, etc)
So we should get flags.network_size - (NUM_STATIC_IPS +
NUM_PREALLOCATED_IPS +
NUM_RESERVED_VPN_IPS)
usable addresses
""" """
net = network.get_project_network("project0", "default") net = network.get_project_network("project0", "default")
# Determine expected number of available IP addresses
num_static_ips = net.num_static_ips
num_preallocated_ips = len(net.hosts.keys())
num_reserved_vpn_ips = flags.FLAGS.cnt_vpn_clients
num_available_ips = flags.FLAGS.network_size - (num_static_ips + num_preallocated_ips + num_reserved_vpn_ips)
hostname = "toomany-hosts" hostname = "toomany-hosts"
macs = {} macs = {}
addresses = {} addresses = {}
for i in range(0, 22): for i in range(0, (num_available_ips - 1)):
macs[i] = utils.generate_mac() macs[i] = utils.generate_mac()
addresses[i] = network.allocate_ip("netuser", "project0", macs[i]) addresses[i] = network.allocate_ip("netuser", "project0", macs[i])
self.dnsmasq.issue_ip(macs[i], addresses[i], hostname, net.bridge_name) self.dnsmasq.issue_ip(macs[i], addresses[i], hostname, net.bridge_name)
self.assertRaises(NoMoreAddresses, network.allocate_ip, "netuser", "project0", utils.generate_mac()) self.assertRaises(NoMoreAddresses, network.allocate_ip, "netuser", "project0", utils.generate_mac())
for i in range(0, 22): for i in range(0, (num_available_ips - 1)):
rv = network.deallocate_ip(addresses[i]) rv = network.deallocate_ip(addresses[i])
self.dnsmasq.release_ip(macs[i], addresses[i], hostname, net.bridge_name) self.dnsmasq.release_ip(macs[i], addresses[i], hostname, net.bridge_name)