merged trunk and fixed tests

This commit is contained in:
Vishvananda Ishaya
2010-08-25 16:22:49 -07:00
4 changed files with 44 additions and 12 deletions

View File

@@ -141,6 +141,7 @@ def _wrapper(func):
return _wrapped return _wrapped
DEFINE = _wrapper(gflags.DEFINE)
DEFINE_string = _wrapper(gflags.DEFINE_string) DEFINE_string = _wrapper(gflags.DEFINE_string)
DEFINE_integer = _wrapper(gflags.DEFINE_integer) DEFINE_integer = _wrapper(gflags.DEFINE_integer)
DEFINE_bool = _wrapper(gflags.DEFINE_bool) DEFINE_bool = _wrapper(gflags.DEFINE_bool)

View File

@@ -44,6 +44,8 @@ flags.DEFINE_bool('use_syslog', True, 'output to syslog when daemonizing')
flags.DEFINE_string('logfile', None, 'log file to output to') flags.DEFINE_string('logfile', None, 'log file to output to')
flags.DEFINE_string('pidfile', None, 'pid file to output to') flags.DEFINE_string('pidfile', None, 'pid file to output to')
flags.DEFINE_string('working_directory', './', 'working directory...') flags.DEFINE_string('working_directory', './', 'working directory...')
flags.DEFINE_integer('uid', os.getuid(), 'uid under which to run')
flags.DEFINE_integer('gid', os.getgid(), 'gid under which to run')
def stop(pidfile): def stop(pidfile):
@@ -135,6 +137,8 @@ def daemonize(args, name, main):
threaded=False), threaded=False),
stdin=stdin, stdin=stdin,
stdout=stdout, stdout=stdout,
stderr=stderr stderr=stderr,
uid=FLAGS.uid,
gid=FLAGS.gid
): ):
main(args) main(args)

View File

@@ -184,13 +184,23 @@ class NetworkTestCase(test.TrialTestCase):
def test_ips_are_reused(self): def test_ips_are_reused(self):
"""Makes sure that ip addresses that are deallocated get reused""" """Makes sure that ip addresses that are deallocated get reused"""
result = self.service.allocate_fixed_ip( net = model.get_project_network(self.projects[0].id, "default")
self.user.id, self.projects[0].id)
mac = result['mac_address']
address = result['private_dns_name']
hostname = "reuse-host" hostname = "reuse-host"
net = model.get_project_network(self.projects[0].id, "default") macs = {}
addresses = {}
num_available_ips = net.num_available_ips
for i in range(num_available_ips - 1):
result = self.service.allocate_fixed_ip(self.user.id,
self.projects[0].id)
macs[i] = result['mac_address']
addresses[i] = result['private_dns_name']
issue_ip(macs[i], addresses[i], hostname, net.bridge_name)
result = self.service.allocate_fixed_ip(self.user.id,
self.projects[0].id)
mac = result['mac_address']
address = result['private_dns_name']
issue_ip(mac, address, hostname, net.bridge_name) issue_ip(mac, address, hostname, net.bridge_name)
self.service.deallocate_fixed_ip(address) self.service.deallocate_fixed_ip(address)
@@ -205,6 +215,10 @@ class NetworkTestCase(test.TrialTestCase):
self.service.deallocate_fixed_ip(secondaddress) self.service.deallocate_fixed_ip(secondaddress)
release_ip(secondmac, secondaddress, hostname, net.bridge_name) release_ip(secondmac, secondaddress, hostname, net.bridge_name)
for i in range(len(addresses)):
self.service.deallocate_fixed_ip(addresses[i])
release_ip(macs[i], addresses[i], hostname, net.bridge_name)
def test_available_ips(self): def test_available_ips(self):
"""Make sure the number of available ips for the network is correct """Make sure the number of available ips for the network is correct
@@ -222,7 +236,7 @@ class NetworkTestCase(test.TrialTestCase):
num_available_ips = net_size - (net.num_bottom_reserved_ips + num_available_ips = net_size - (net.num_bottom_reserved_ips +
num_preallocated_ips + num_preallocated_ips +
net.num_top_reserved_ips) net.num_top_reserved_ips)
self.assertEqual(num_available_ips, len(list(net.available))) self.assertEqual(num_available_ips, net.num_available_ips)
def test_too_many_addresses(self): def test_too_many_addresses(self):
"""Test for a NoMoreAddresses exception when all fixed ips are used. """Test for a NoMoreAddresses exception when all fixed ips are used.
@@ -232,8 +246,7 @@ class NetworkTestCase(test.TrialTestCase):
hostname = "toomany-hosts" hostname = "toomany-hosts"
macs = {} macs = {}
addresses = {} addresses = {}
# Number of availaible ips is len of the available list num_available_ips = net.num_available_ips
num_available_ips = len(list(net.available))
for i in range(num_available_ips): for i in range(num_available_ips):
result = self.service.allocate_fixed_ip(self.user.id, result = self.service.allocate_fixed_ip(self.user.id,
self.projects[0].id) self.projects[0].id)
@@ -241,14 +254,14 @@ class NetworkTestCase(test.TrialTestCase):
addresses[i] = result['private_dns_name'] addresses[i] = result['private_dns_name']
issue_ip(macs[i], addresses[i], hostname, net.bridge_name) issue_ip(macs[i], addresses[i], hostname, net.bridge_name)
self.assertEqual(len(list(net.available)), 0) self.assertEqual(net.num_available_ips, 0)
self.assertRaises(NoMoreAddresses, self.service.allocate_fixed_ip, self.assertRaises(NoMoreAddresses, self.service.allocate_fixed_ip,
self.user.id, self.projects[0].id) self.user.id, self.projects[0].id)
for i in range(len(addresses)): for i in range(len(addresses)):
self.service.deallocate_fixed_ip(addresses[i]) self.service.deallocate_fixed_ip(addresses[i])
release_ip(macs[i], addresses[i], hostname, net.bridge_name) release_ip(macs[i], addresses[i], hostname, net.bridge_name)
self.assertEqual(len(list(net.available)), num_available_ips) self.assertEqual(net.num_available_ips, num_available_ips)
def is_in_project(address, project_id): def is_in_project(address, project_id):

View File

@@ -21,6 +21,7 @@ Twisted daemon helpers, specifically to parse out gFlags from twisted flags,
manage pid files and support syslogging. manage pid files and support syslogging.
""" """
import gflags
import logging import logging
import os import os
import signal import signal
@@ -49,6 +50,14 @@ class TwistdServerOptions(ServerOptions):
return return
class FlagParser(object):
def __init__(self, parser):
self.parser = parser
def Parse(self, s):
return self.parser(s)
def WrapTwistedOptions(wrapped): def WrapTwistedOptions(wrapped):
class TwistedOptionsToFlags(wrapped): class TwistedOptionsToFlags(wrapped):
subCommands = None subCommands = None
@@ -79,7 +88,12 @@ def WrapTwistedOptions(wrapped):
reflect.accumulateClassList(self.__class__, 'optParameters', twistd_params) reflect.accumulateClassList(self.__class__, 'optParameters', twistd_params)
for param in twistd_params: for param in twistd_params:
key = param[0].replace('-', '_') key = param[0].replace('-', '_')
flags.DEFINE_string(key, param[2], str(param[-1])) if len(param) > 4:
flags.DEFINE(FlagParser(param[4]),
key, param[2], str(param[3]),
serializer=gflags.ArgumentSerializer())
else:
flags.DEFINE_string(key, param[2], str(param[3]))
def _absorbHandlers(self): def _absorbHandlers(self):
twistd_handlers = {} twistd_handlers = {}