PEP8 cleanup in nova/tests, except for tests. There should be no functional changes here, just style changes to get violations down.
This commit is contained in:
@@ -29,9 +29,12 @@ from nova.auth import manager
|
|||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
|
|
||||||
|
|
||||||
class Context(object):
|
class Context(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class AccessTestCase(test.TrialTestCase):
|
class AccessTestCase(test.TrialTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(AccessTestCase, self).setUp()
|
super(AccessTestCase, self).setUp()
|
||||||
@@ -56,9 +59,11 @@ class AccessTestCase(test.TrialTestCase):
|
|||||||
self.project.add_role(self.testnet, 'netadmin')
|
self.project.add_role(self.testnet, 'netadmin')
|
||||||
self.project.add_role(self.testsys, 'sysadmin')
|
self.project.add_role(self.testsys, 'sysadmin')
|
||||||
#user is set in each test
|
#user is set in each test
|
||||||
|
|
||||||
def noopWSGIApp(environ, start_response):
|
def noopWSGIApp(environ, start_response):
|
||||||
start_response('200 OK', [])
|
start_response('200 OK', [])
|
||||||
return ['']
|
return ['']
|
||||||
|
|
||||||
self.mw = ec2.Authorizer(noopWSGIApp)
|
self.mw = ec2.Authorizer(noopWSGIApp)
|
||||||
self.mw.action_roles = {'str': {
|
self.mw.action_roles = {'str': {
|
||||||
'_allow_all': ['all'],
|
'_allow_all': ['all'],
|
||||||
@@ -80,7 +85,7 @@ class AccessTestCase(test.TrialTestCase):
|
|||||||
|
|
||||||
def response_status(self, user, methodName):
|
def response_status(self, user, methodName):
|
||||||
ctxt = context.RequestContext(user, self.project)
|
ctxt = context.RequestContext(user, self.project)
|
||||||
environ = {'ec2.context' : ctxt,
|
environ = {'ec2.context': ctxt,
|
||||||
'ec2.controller': 'some string',
|
'ec2.controller': 'some string',
|
||||||
'ec2.action': methodName}
|
'ec2.action': methodName}
|
||||||
req = webob.Request.blank('/', environ)
|
req = webob.Request.blank('/', environ)
|
||||||
|
@@ -28,16 +28,17 @@ CLC_IP = '127.0.0.1'
|
|||||||
CLC_PORT = 8773
|
CLC_PORT = 8773
|
||||||
REGION = 'test'
|
REGION = 'test'
|
||||||
|
|
||||||
|
|
||||||
def get_connection():
|
def get_connection():
|
||||||
return boto.connect_ec2 (
|
return boto.connect_ec2(
|
||||||
aws_access_key_id=ACCESS_KEY,
|
aws_access_key_id=ACCESS_KEY,
|
||||||
aws_secret_access_key=SECRET_KEY,
|
aws_secret_access_key=SECRET_KEY,
|
||||||
is_secure=False,
|
is_secure=False,
|
||||||
region=RegionInfo(None, REGION, CLC_IP),
|
region=RegionInfo(None, REGION, CLC_IP),
|
||||||
port=CLC_PORT,
|
port=CLC_PORT,
|
||||||
path='/services/Cloud',
|
path='/services/Cloud',
|
||||||
debug=99
|
debug=99)
|
||||||
)
|
|
||||||
|
|
||||||
class APIIntegrationTests(unittest.TestCase):
|
class APIIntegrationTests(unittest.TestCase):
|
||||||
def test_001_get_all_images(self):
|
def test_001_get_all_images(self):
|
||||||
@@ -51,4 +52,3 @@ if __name__ == '__main__':
|
|||||||
#print conn.get_all_key_pairs()
|
#print conn.get_all_key_pairs()
|
||||||
#print conn.create_key_pair
|
#print conn.create_key_pair
|
||||||
#print conn.create_security_group('name', 'description')
|
#print conn.create_security_group('name', 'description')
|
||||||
|
|
||||||
|
@@ -99,6 +99,7 @@ class XmlConversionTestCase(test.BaseTestCase):
|
|||||||
self.assertEqual(conv('-'), '-')
|
self.assertEqual(conv('-'), '-')
|
||||||
self.assertEqual(conv('-0'), 0)
|
self.assertEqual(conv('-0'), 0)
|
||||||
|
|
||||||
|
|
||||||
class ApiEc2TestCase(test.BaseTestCase):
|
class ApiEc2TestCase(test.BaseTestCase):
|
||||||
"""Unit test for the cloud controller on an EC2 API"""
|
"""Unit test for the cloud controller on an EC2 API"""
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -138,7 +139,6 @@ class ApiEc2TestCase(test.BaseTestCase):
|
|||||||
self.manager.delete_project(project)
|
self.manager.delete_project(project)
|
||||||
self.manager.delete_user(user)
|
self.manager.delete_user(user)
|
||||||
|
|
||||||
|
|
||||||
def test_get_all_key_pairs(self):
|
def test_get_all_key_pairs(self):
|
||||||
"""Test that, after creating a user and project and generating
|
"""Test that, after creating a user and project and generating
|
||||||
a key pair, that the API call to list key pairs works properly"""
|
a key pair, that the API call to list key pairs works properly"""
|
||||||
@@ -183,7 +183,7 @@ class ApiEc2TestCase(test.BaseTestCase):
|
|||||||
self.manager.add_role('fake', 'netadmin')
|
self.manager.add_role('fake', 'netadmin')
|
||||||
project.add_role('fake', 'netadmin')
|
project.add_role('fake', 'netadmin')
|
||||||
|
|
||||||
security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd") \
|
security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd")
|
||||||
for x in range(random.randint(4, 8)))
|
for x in range(random.randint(4, 8)))
|
||||||
|
|
||||||
self.ec2.create_security_group(security_group_name, 'test group')
|
self.ec2.create_security_group(security_group_name, 'test group')
|
||||||
@@ -217,10 +217,11 @@ class ApiEc2TestCase(test.BaseTestCase):
|
|||||||
self.manager.add_role('fake', 'netadmin')
|
self.manager.add_role('fake', 'netadmin')
|
||||||
project.add_role('fake', 'netadmin')
|
project.add_role('fake', 'netadmin')
|
||||||
|
|
||||||
security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd") \
|
security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd")
|
||||||
for x in range(random.randint(4, 8)))
|
for x in range(random.randint(4, 8)))
|
||||||
|
|
||||||
group = self.ec2.create_security_group(security_group_name, 'test group')
|
group = self.ec2.create_security_group(security_group_name,
|
||||||
|
'test group')
|
||||||
|
|
||||||
self.expect_http()
|
self.expect_http()
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
@@ -282,12 +283,14 @@ class ApiEc2TestCase(test.BaseTestCase):
|
|||||||
self.manager.add_role('fake', 'netadmin')
|
self.manager.add_role('fake', 'netadmin')
|
||||||
project.add_role('fake', 'netadmin')
|
project.add_role('fake', 'netadmin')
|
||||||
|
|
||||||
security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd") \
|
rand_string = 'sdiuisudfsdcnpaqwertasd'
|
||||||
|
security_group_name = "".join(random.choice(rand_string)
|
||||||
|
for x in range(random.randint(4, 8)))
|
||||||
|
other_security_group_name = "".join(random.choice(rand_string)
|
||||||
for x in range(random.randint(4, 8)))
|
for x in range(random.randint(4, 8)))
|
||||||
other_security_group_name = "".join(random.choice("sdiuisudfsdcnpaqwertasd") \
|
|
||||||
for x in range(random.randint(4, 8)))
|
|
||||||
|
|
||||||
group = self.ec2.create_security_group(security_group_name, 'test group')
|
group = self.ec2.create_security_group(security_group_name,
|
||||||
|
'test group')
|
||||||
|
|
||||||
self.expect_http()
|
self.expect_http()
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
@@ -313,9 +316,8 @@ class ApiEc2TestCase(test.BaseTestCase):
|
|||||||
if group.name == security_group_name:
|
if group.name == security_group_name:
|
||||||
self.assertEquals(len(group.rules), 1)
|
self.assertEquals(len(group.rules), 1)
|
||||||
self.assertEquals(len(group.rules[0].grants), 1)
|
self.assertEquals(len(group.rules[0].grants), 1)
|
||||||
self.assertEquals(str(group.rules[0].grants[0]),
|
self.assertEquals(str(group.rules[0].grants[0]), '%s-%s' %
|
||||||
'%s-%s' % (other_security_group_name, 'fake'))
|
(other_security_group_name, 'fake'))
|
||||||
|
|
||||||
|
|
||||||
self.expect_http()
|
self.expect_http()
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
@@ -28,6 +28,7 @@ from nova.api.ec2 import cloud
|
|||||||
|
|
||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
|
|
||||||
|
|
||||||
class user_generator(object):
|
class user_generator(object):
|
||||||
def __init__(self, manager, **user_state):
|
def __init__(self, manager, **user_state):
|
||||||
if 'name' not in user_state:
|
if 'name' not in user_state:
|
||||||
@@ -41,6 +42,7 @@ class user_generator(object):
|
|||||||
def __exit__(self, value, type, trace):
|
def __exit__(self, value, type, trace):
|
||||||
self.manager.delete_user(self.user)
|
self.manager.delete_user(self.user)
|
||||||
|
|
||||||
|
|
||||||
class project_generator(object):
|
class project_generator(object):
|
||||||
def __init__(self, manager, **project_state):
|
def __init__(self, manager, **project_state):
|
||||||
if 'name' not in project_state:
|
if 'name' not in project_state:
|
||||||
@@ -56,6 +58,7 @@ class project_generator(object):
|
|||||||
def __exit__(self, value, type, trace):
|
def __exit__(self, value, type, trace):
|
||||||
self.manager.delete_project(self.project)
|
self.manager.delete_project(self.project)
|
||||||
|
|
||||||
|
|
||||||
class user_and_project_generator(object):
|
class user_and_project_generator(object):
|
||||||
def __init__(self, manager, user_state={}, project_state={}):
|
def __init__(self, manager, user_state={}, project_state={}):
|
||||||
self.manager = manager
|
self.manager = manager
|
||||||
@@ -75,6 +78,7 @@ class user_and_project_generator(object):
|
|||||||
self.manager.delete_user(self.user)
|
self.manager.delete_user(self.user)
|
||||||
self.manager.delete_project(self.project)
|
self.manager.delete_project(self.project)
|
||||||
|
|
||||||
|
|
||||||
class AuthManagerTestCase(object):
|
class AuthManagerTestCase(object):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
FLAGS.auth_driver = self.auth_driver
|
FLAGS.auth_driver = self.auth_driver
|
||||||
@@ -96,7 +100,7 @@ class AuthManagerTestCase(object):
|
|||||||
self.assertEqual('private-party', u.access)
|
self.assertEqual('private-party', u.access)
|
||||||
|
|
||||||
def test_004_signature_is_valid(self):
|
def test_004_signature_is_valid(self):
|
||||||
#self.assertTrue(self.manager.authenticate( **boto.generate_url ... ? ? ? ))
|
#self.assertTrue(self.manager.authenticate(**boto.generate_url ...? ))
|
||||||
pass
|
pass
|
||||||
#raise NotImplementedError
|
#raise NotImplementedError
|
||||||
|
|
||||||
@@ -127,7 +131,7 @@ class AuthManagerTestCase(object):
|
|||||||
self.assertFalse(self.manager.has_role('test1', 'itsec'))
|
self.assertFalse(self.manager.has_role('test1', 'itsec'))
|
||||||
|
|
||||||
def test_can_create_and_get_project(self):
|
def test_can_create_and_get_project(self):
|
||||||
with user_and_project_generator(self.manager) as (u,p):
|
with user_and_project_generator(self.manager) as (u, p):
|
||||||
self.assert_(self.manager.get_user('test1'))
|
self.assert_(self.manager.get_user('test1'))
|
||||||
self.assert_(self.manager.get_user('test1'))
|
self.assert_(self.manager.get_user('test1'))
|
||||||
self.assert_(self.manager.get_project('testproj'))
|
self.assert_(self.manager.get_project('testproj'))
|
||||||
@@ -321,6 +325,7 @@ class AuthManagerTestCase(object):
|
|||||||
self.assertEqual('secret', user.secret)
|
self.assertEqual('secret', user.secret)
|
||||||
self.assertTrue(user.is_admin())
|
self.assertTrue(user.is_admin())
|
||||||
|
|
||||||
|
|
||||||
class AuthManagerLdapTestCase(AuthManagerTestCase, test.TrialTestCase):
|
class AuthManagerLdapTestCase(AuthManagerTestCase, test.TrialTestCase):
|
||||||
auth_driver = 'nova.auth.ldapdriver.FakeLdapDriver'
|
auth_driver = 'nova.auth.ldapdriver.FakeLdapDriver'
|
||||||
|
|
||||||
@@ -337,6 +342,7 @@ class AuthManagerLdapTestCase(AuthManagerTestCase, test.TrialTestCase):
|
|||||||
except:
|
except:
|
||||||
self.skip = True
|
self.skip = True
|
||||||
|
|
||||||
|
|
||||||
class AuthManagerDbTestCase(AuthManagerTestCase, test.TrialTestCase):
|
class AuthManagerDbTestCase(AuthManagerTestCase, test.TrialTestCase):
|
||||||
auth_driver = 'nova.auth.dbdriver.DbDriver'
|
auth_driver = 'nova.auth.dbdriver.DbDriver'
|
||||||
|
|
||||||
|
@@ -46,13 +46,13 @@ from nova.objectstore import image
|
|||||||
|
|
||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
|
|
||||||
|
|
||||||
# Temp dirs for working with image attributes through the cloud controller
|
# Temp dirs for working with image attributes through the cloud controller
|
||||||
# (stole this from objectstore_unittest.py)
|
# (stole this from objectstore_unittest.py)
|
||||||
OSS_TEMPDIR = tempfile.mkdtemp(prefix='test_oss-')
|
OSS_TEMPDIR = tempfile.mkdtemp(prefix='test_oss-')
|
||||||
IMAGES_PATH = os.path.join(OSS_TEMPDIR, 'images')
|
IMAGES_PATH = os.path.join(OSS_TEMPDIR, 'images')
|
||||||
os.makedirs(IMAGES_PATH)
|
os.makedirs(IMAGES_PATH)
|
||||||
|
|
||||||
|
|
||||||
class CloudTestCase(test.TrialTestCase):
|
class CloudTestCase(test.TrialTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(CloudTestCase, self).setUp()
|
super(CloudTestCase, self).setUp()
|
||||||
@@ -97,17 +97,17 @@ class CloudTestCase(test.TrialTestCase):
|
|||||||
max_count = 1
|
max_count = 1
|
||||||
kwargs = {'image_id': image_id,
|
kwargs = {'image_id': image_id,
|
||||||
'instance_type': instance_type,
|
'instance_type': instance_type,
|
||||||
'max_count': max_count }
|
'max_count': max_count}
|
||||||
rv = yield self.cloud.run_instances(self.context, **kwargs)
|
rv = yield self.cloud.run_instances(self.context, **kwargs)
|
||||||
instance_id = rv['instancesSet'][0]['instanceId']
|
instance_id = rv['instancesSet'][0]['instanceId']
|
||||||
output = yield self.cloud.get_console_output(context=self.context, instance_id=[instance_id])
|
output = yield self.cloud.get_console_output(context=self.context,
|
||||||
|
instance_id=[instance_id])
|
||||||
self.assertEquals(b64decode(output['output']), 'FAKE CONSOLE OUTPUT')
|
self.assertEquals(b64decode(output['output']), 'FAKE CONSOLE OUTPUT')
|
||||||
# TODO(soren): We need this until we can stop polling in the rpc code
|
# TODO(soren): We need this until we can stop polling in the rpc code
|
||||||
# for unit tests.
|
# for unit tests.
|
||||||
greenthread.sleep(0.3)
|
greenthread.sleep(0.3)
|
||||||
rv = yield self.cloud.terminate_instances(self.context, [instance_id])
|
rv = yield self.cloud.terminate_instances(self.context, [instance_id])
|
||||||
|
|
||||||
|
|
||||||
def test_key_generation(self):
|
def test_key_generation(self):
|
||||||
result = self._create_key('test')
|
result = self._create_key('test')
|
||||||
private_key = result['private_key']
|
private_key = result['private_key']
|
||||||
@@ -146,8 +146,10 @@ class CloudTestCase(test.TrialTestCase):
|
|||||||
'max_count': max_count}
|
'max_count': max_count}
|
||||||
rv = yield self.cloud.run_instances(self.context, **kwargs)
|
rv = yield self.cloud.run_instances(self.context, **kwargs)
|
||||||
# TODO: check for proper response
|
# TODO: check for proper response
|
||||||
instance = rv['reservationSet'][0][rv['reservationSet'][0].keys()[0]][0]
|
instance_id = rv['reservationSet'][0].keys()[0]
|
||||||
logging.debug("Need to watch instance %s until it's running..." % instance['instance_id'])
|
instance = rv['reservationSet'][0][instance_id][0]
|
||||||
|
logging.debug("Need to watch instance %s until it's running..." %
|
||||||
|
instance['instance_id'])
|
||||||
while True:
|
while True:
|
||||||
rv = yield defer.succeed(time.sleep(1))
|
rv = yield defer.succeed(time.sleep(1))
|
||||||
info = self.cloud._get_instance(instance['instance_id'])
|
info = self.cloud._get_instance(instance['instance_id'])
|
||||||
@@ -157,14 +159,15 @@ class CloudTestCase(test.TrialTestCase):
|
|||||||
self.assert_(rv)
|
self.assert_(rv)
|
||||||
|
|
||||||
if connection_type != 'fake':
|
if connection_type != 'fake':
|
||||||
time.sleep(45) # Should use boto for polling here
|
time.sleep(45) # Should use boto for polling here
|
||||||
for reservations in rv['reservationSet']:
|
for reservations in rv['reservationSet']:
|
||||||
# for res_id in reservations.keys():
|
# for res_id in reservations.keys():
|
||||||
# logging.debug(reservations[res_id])
|
# logging.debug(reservations[res_id])
|
||||||
# for instance in reservations[res_id]:
|
# for instance in reservations[res_id]:
|
||||||
for instance in reservations[reservations.keys()[0]]:
|
for instance in reservations[reservations.keys()[0]]:
|
||||||
logging.debug("Terminating instance %s" % instance['instance_id'])
|
instance_id = instance['instance_id']
|
||||||
rv = yield self.compute.terminate_instance(instance['instance_id'])
|
logging.debug("Terminating instance %s" % instance_id)
|
||||||
|
rv = yield self.compute.terminate_instance(instance_id)
|
||||||
|
|
||||||
def test_instance_update_state(self):
|
def test_instance_update_state(self):
|
||||||
def instance(num):
|
def instance(num):
|
||||||
@@ -183,8 +186,7 @@ class CloudTestCase(test.TrialTestCase):
|
|||||||
'groups': ['default'],
|
'groups': ['default'],
|
||||||
'product_codes': None,
|
'product_codes': None,
|
||||||
'state': 0x01,
|
'state': 0x01,
|
||||||
'user_data': ''
|
'user_data': ''}
|
||||||
}
|
|
||||||
rv = self.cloud._format_describe_instances(self.context)
|
rv = self.cloud._format_describe_instances(self.context)
|
||||||
self.assert_(len(rv['reservationSet']) == 0)
|
self.assert_(len(rv['reservationSet']) == 0)
|
||||||
|
|
||||||
@@ -199,7 +201,9 @@ class CloudTestCase(test.TrialTestCase):
|
|||||||
#self.assert_(len(rv['reservationSet'][0]['instances_set']) == 5)
|
#self.assert_(len(rv['reservationSet'][0]['instances_set']) == 5)
|
||||||
# report 4 nodes each having 1 of the instances
|
# report 4 nodes each having 1 of the instances
|
||||||
#for i in xrange(4):
|
#for i in xrange(4):
|
||||||
# self.cloud.update_state('instances', {('node-%s' % i): {('i-%s' % i): instance(i)}})
|
# self.cloud.update_state('instances',
|
||||||
|
# {('node-%s' % i): {('i-%s' % i):
|
||||||
|
# instance(i)}})
|
||||||
|
|
||||||
# one instance should be pending still
|
# one instance should be pending still
|
||||||
#self.assert_(len(self.cloud.instances['pending'].keys()) == 1)
|
#self.assert_(len(self.cloud.instances['pending'].keys()) == 1)
|
||||||
@@ -217,8 +221,10 @@ class CloudTestCase(test.TrialTestCase):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def _fake_set_image_description(ctxt, image_id, description):
|
def _fake_set_image_description(ctxt, image_id, description):
|
||||||
from nova.objectstore import handler
|
from nova.objectstore import handler
|
||||||
|
|
||||||
class req:
|
class req:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
request = req()
|
request = req()
|
||||||
request.context = ctxt
|
request.context = ctxt
|
||||||
request.args = {'image_id': [image_id],
|
request.args = {'image_id': [image_id],
|
||||||
|
@@ -23,7 +23,9 @@ from nova import test
|
|||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
flags.DEFINE_string('flags_unittest', 'foo', 'for testing purposes only')
|
flags.DEFINE_string('flags_unittest', 'foo', 'for testing purposes only')
|
||||||
|
|
||||||
|
|
||||||
class FlagsTestCase(test.TrialTestCase):
|
class FlagsTestCase(test.TrialTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(FlagsTestCase, self).setUp()
|
super(FlagsTestCase, self).setUp()
|
||||||
self.FLAGS = flags.FlagValues()
|
self.FLAGS = flags.FlagValues()
|
||||||
@@ -35,7 +37,8 @@ class FlagsTestCase(test.TrialTestCase):
|
|||||||
self.assert_('false' not in self.FLAGS)
|
self.assert_('false' not in self.FLAGS)
|
||||||
self.assert_('true' not in self.FLAGS)
|
self.assert_('true' not in self.FLAGS)
|
||||||
|
|
||||||
flags.DEFINE_string('string', 'default', 'desc', flag_values=self.FLAGS)
|
flags.DEFINE_string('string', 'default', 'desc',
|
||||||
|
flag_values=self.FLAGS)
|
||||||
flags.DEFINE_integer('int', 1, 'desc', flag_values=self.FLAGS)
|
flags.DEFINE_integer('int', 1, 'desc', flag_values=self.FLAGS)
|
||||||
flags.DEFINE_bool('false', False, 'desc', flag_values=self.FLAGS)
|
flags.DEFINE_bool('false', False, 'desc', flag_values=self.FLAGS)
|
||||||
flags.DEFINE_bool('true', True, 'desc', flag_values=self.FLAGS)
|
flags.DEFINE_bool('true', True, 'desc', flag_values=self.FLAGS)
|
||||||
|
@@ -98,7 +98,6 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
self.context.project_id = self.projects[project_num].id
|
self.context.project_id = self.projects[project_num].id
|
||||||
self.network.deallocate_fixed_ip(self.context, address)
|
self.network.deallocate_fixed_ip(self.context, address)
|
||||||
|
|
||||||
|
|
||||||
def test_public_network_association(self):
|
def test_public_network_association(self):
|
||||||
"""Makes sure that we can allocaate a public ip"""
|
"""Makes sure that we can allocaate a public ip"""
|
||||||
# TODO(vish): better way of adding floating ips
|
# TODO(vish): better way of adding floating ips
|
||||||
@@ -118,10 +117,12 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
lease_ip(fix_addr)
|
lease_ip(fix_addr)
|
||||||
self.assertEqual(float_addr, str(pubnet[0]))
|
self.assertEqual(float_addr, str(pubnet[0]))
|
||||||
self.network.associate_floating_ip(self.context, float_addr, fix_addr)
|
self.network.associate_floating_ip(self.context, float_addr, fix_addr)
|
||||||
address = db.instance_get_floating_address(context.get_admin_context(), self.instance_id)
|
address = db.instance_get_floating_address(context.get_admin_context(),
|
||||||
|
self.instance_id)
|
||||||
self.assertEqual(address, float_addr)
|
self.assertEqual(address, float_addr)
|
||||||
self.network.disassociate_floating_ip(self.context, float_addr)
|
self.network.disassociate_floating_ip(self.context, float_addr)
|
||||||
address = db.instance_get_floating_address(context.get_admin_context(), self.instance_id)
|
address = db.instance_get_floating_address(context.get_admin_context(),
|
||||||
|
self.instance_id)
|
||||||
self.assertEqual(address, None)
|
self.assertEqual(address, None)
|
||||||
self.network.deallocate_floating_ip(self.context, float_addr)
|
self.network.deallocate_floating_ip(self.context, float_addr)
|
||||||
self.network.deallocate_fixed_ip(self.context, fix_addr)
|
self.network.deallocate_fixed_ip(self.context, fix_addr)
|
||||||
@@ -254,18 +255,24 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
There are ips reserved at the bottom and top of the range.
|
There are ips reserved at the bottom and top of the range.
|
||||||
services (network, gateway, CloudPipe, broadcast)
|
services (network, gateway, CloudPipe, broadcast)
|
||||||
"""
|
"""
|
||||||
network = db.project_get_network(context.get_admin_context(), self.projects[0].id)
|
network = db.project_get_network(context.get_admin_context(),
|
||||||
|
self.projects[0].id)
|
||||||
net_size = flags.FLAGS.network_size
|
net_size = flags.FLAGS.network_size
|
||||||
total_ips = (db.network_count_available_ips(context.get_admin_context(), network['id']) +
|
admin_context = context.get_admin_context()
|
||||||
db.network_count_reserved_ips(context.get_admin_context(), network['id']) +
|
total_ips = (db.network_count_available_ips(admin_context,
|
||||||
db.network_count_allocated_ips(context.get_admin_context(), network['id']))
|
network['id']) +
|
||||||
|
db.network_count_reserved_ips(admin_context,
|
||||||
|
network['id']) +
|
||||||
|
db.network_count_allocated_ips(admin_context,
|
||||||
|
network['id']))
|
||||||
self.assertEqual(total_ips, net_size)
|
self.assertEqual(total_ips, net_size)
|
||||||
|
|
||||||
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.
|
||||||
"""
|
"""
|
||||||
network = db.project_get_network(context.get_admin_context(), self.projects[0].id)
|
admin_context = context.get_admin_context()
|
||||||
num_available_ips = db.network_count_available_ips(context.get_admin_context(),
|
network = db.project_get_network(admin_context, self.projects[0].id)
|
||||||
|
num_available_ips = db.network_count_available_ips(admin_context,
|
||||||
network['id'])
|
network['id'])
|
||||||
addresses = []
|
addresses = []
|
||||||
instance_ids = []
|
instance_ids = []
|
||||||
@@ -276,8 +283,9 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
addresses.append(address)
|
addresses.append(address)
|
||||||
lease_ip(address)
|
lease_ip(address)
|
||||||
|
|
||||||
self.assertEqual(db.network_count_available_ips(context.get_admin_context(),
|
ip_count = db.network_count_available_ips(context.get_admin_context(),
|
||||||
network['id']), 0)
|
network['id'])
|
||||||
|
self.assertEqual(ip_count, 0)
|
||||||
self.assertRaises(db.NoMoreAddresses,
|
self.assertRaises(db.NoMoreAddresses,
|
||||||
self.network.allocate_fixed_ip,
|
self.network.allocate_fixed_ip,
|
||||||
self.context,
|
self.context,
|
||||||
@@ -287,14 +295,15 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
self.network.deallocate_fixed_ip(self.context, addresses[i])
|
self.network.deallocate_fixed_ip(self.context, addresses[i])
|
||||||
release_ip(addresses[i])
|
release_ip(addresses[i])
|
||||||
db.instance_destroy(context.get_admin_context(), instance_ids[i])
|
db.instance_destroy(context.get_admin_context(), instance_ids[i])
|
||||||
self.assertEqual(db.network_count_available_ips(context.get_admin_context(),
|
ip_count = db.network_count_available_ips(context.get_admin_context(),
|
||||||
network['id']),
|
network['id'])
|
||||||
num_available_ips)
|
self.assertEqual(ip_count, num_available_ips)
|
||||||
|
|
||||||
|
|
||||||
def is_allocated_in_project(address, project_id):
|
def is_allocated_in_project(address, project_id):
|
||||||
"""Returns true if address is in specified project"""
|
"""Returns true if address is in specified project"""
|
||||||
project_net = db.project_get_network(context.get_admin_context(), project_id)
|
project_net = db.project_get_network(context.get_admin_context(),
|
||||||
|
project_id)
|
||||||
network = db.fixed_ip_get_network(context.get_admin_context(), address)
|
network = db.fixed_ip_get_network(context.get_admin_context(), address)
|
||||||
instance = db.fixed_ip_get_instance(context.get_admin_context(), address)
|
instance = db.fixed_ip_get_instance(context.get_admin_context(), address)
|
||||||
# instance exists until release
|
# instance exists until release
|
||||||
@@ -308,8 +317,10 @@ def binpath(script):
|
|||||||
|
|
||||||
def lease_ip(private_ip):
|
def lease_ip(private_ip):
|
||||||
"""Run add command on dhcpbridge"""
|
"""Run add command on dhcpbridge"""
|
||||||
network_ref = db.fixed_ip_get_network(context.get_admin_context(), private_ip)
|
network_ref = db.fixed_ip_get_network(context.get_admin_context(),
|
||||||
instance_ref = db.fixed_ip_get_instance(context.get_admin_context(), private_ip)
|
private_ip)
|
||||||
|
instance_ref = db.fixed_ip_get_instance(context.get_admin_context(),
|
||||||
|
private_ip)
|
||||||
cmd = "%s add %s %s fake" % (binpath('nova-dhcpbridge'),
|
cmd = "%s add %s %s fake" % (binpath('nova-dhcpbridge'),
|
||||||
instance_ref['mac_address'],
|
instance_ref['mac_address'],
|
||||||
private_ip)
|
private_ip)
|
||||||
@@ -322,8 +333,10 @@ def lease_ip(private_ip):
|
|||||||
|
|
||||||
def release_ip(private_ip):
|
def release_ip(private_ip):
|
||||||
"""Run del command on dhcpbridge"""
|
"""Run del command on dhcpbridge"""
|
||||||
network_ref = db.fixed_ip_get_network(context.get_admin_context(), private_ip)
|
network_ref = db.fixed_ip_get_network(context.get_admin_context(),
|
||||||
instance_ref = db.fixed_ip_get_instance(context.get_admin_context(), private_ip)
|
private_ip)
|
||||||
|
instance_ref = db.fixed_ip_get_instance(context.get_admin_context(),
|
||||||
|
private_ip)
|
||||||
cmd = "%s del %s %s fake" % (binpath('nova-dhcpbridge'),
|
cmd = "%s del %s %s fake" % (binpath('nova-dhcpbridge'),
|
||||||
instance_ref['mac_address'],
|
instance_ref['mac_address'],
|
||||||
private_ip)
|
private_ip)
|
||||||
|
@@ -181,7 +181,7 @@ class ObjectStoreTestCase(test.TrialTestCase):
|
|||||||
class TestHTTPChannel(http.HTTPChannel):
|
class TestHTTPChannel(http.HTTPChannel):
|
||||||
"""Dummy site required for twisted.web"""
|
"""Dummy site required for twisted.web"""
|
||||||
|
|
||||||
def checkPersistence(self, _, __): # pylint: disable-msg=C0103
|
def checkPersistence(self, _, __): # pylint: disable-msg=C0103
|
||||||
"""Otherwise we end up with an unclean reactor."""
|
"""Otherwise we end up with an unclean reactor."""
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -217,7 +217,6 @@ class S3APITestCase(test.TrialTestCase):
|
|||||||
# pylint: enable-msg=E1101
|
# pylint: enable-msg=E1101
|
||||||
self.tcp_port = self.listening_port.getHost().port
|
self.tcp_port = self.listening_port.getHost().port
|
||||||
|
|
||||||
|
|
||||||
if not boto.config.has_section('Boto'):
|
if not boto.config.has_section('Boto'):
|
||||||
boto.config.add_section('Boto')
|
boto.config.add_section('Boto')
|
||||||
boto.config.set('Boto', 'num_retries', '0')
|
boto.config.set('Boto', 'num_retries', '0')
|
||||||
@@ -234,11 +233,11 @@ class S3APITestCase(test.TrialTestCase):
|
|||||||
|
|
||||||
self.conn.get_http_connection = get_http_connection
|
self.conn.get_http_connection = get_http_connection
|
||||||
|
|
||||||
def _ensure_no_buckets(self, buckets): # pylint: disable-msg=C0111
|
def _ensure_no_buckets(self, buckets): # pylint: disable-msg=C0111
|
||||||
self.assertEquals(len(buckets), 0, "Bucket list was not empty")
|
self.assertEquals(len(buckets), 0, "Bucket list was not empty")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _ensure_one_bucket(self, buckets, name): # pylint: disable-msg=C0111
|
def _ensure_one_bucket(self, buckets, name): # pylint: disable-msg=C0111
|
||||||
self.assertEquals(len(buckets), 1,
|
self.assertEquals(len(buckets), 1,
|
||||||
"Bucket list didn't have exactly one element in it")
|
"Bucket list didn't have exactly one element in it")
|
||||||
self.assertEquals(buckets[0].name, name, "Wrong name")
|
self.assertEquals(buckets[0].name, name, "Wrong name")
|
||||||
|
@@ -38,6 +38,7 @@ class ProcessTestCase(test.TrialTestCase):
|
|||||||
def test_execute_stdout(self):
|
def test_execute_stdout(self):
|
||||||
pool = process.ProcessPool(2)
|
pool = process.ProcessPool(2)
|
||||||
d = pool.simple_execute('echo test')
|
d = pool.simple_execute('echo test')
|
||||||
|
|
||||||
def _check(rv):
|
def _check(rv):
|
||||||
self.assertEqual(rv[0], 'test\n')
|
self.assertEqual(rv[0], 'test\n')
|
||||||
self.assertEqual(rv[1], '')
|
self.assertEqual(rv[1], '')
|
||||||
@@ -49,6 +50,7 @@ class ProcessTestCase(test.TrialTestCase):
|
|||||||
def test_execute_stderr(self):
|
def test_execute_stderr(self):
|
||||||
pool = process.ProcessPool(2)
|
pool = process.ProcessPool(2)
|
||||||
d = pool.simple_execute('cat BAD_FILE', check_exit_code=False)
|
d = pool.simple_execute('cat BAD_FILE', check_exit_code=False)
|
||||||
|
|
||||||
def _check(rv):
|
def _check(rv):
|
||||||
self.assertEqual(rv[0], '')
|
self.assertEqual(rv[0], '')
|
||||||
self.assert_('No such file' in rv[1])
|
self.assert_('No such file' in rv[1])
|
||||||
@@ -72,6 +74,7 @@ class ProcessTestCase(test.TrialTestCase):
|
|||||||
d4 = pool.simple_execute('sleep 0.005')
|
d4 = pool.simple_execute('sleep 0.005')
|
||||||
|
|
||||||
called = []
|
called = []
|
||||||
|
|
||||||
def _called(rv, name):
|
def _called(rv, name):
|
||||||
called.append(name)
|
called.append(name)
|
||||||
|
|
||||||
|
@@ -141,12 +141,13 @@ class QuotaTestCase(test.TrialTestCase):
|
|||||||
try:
|
try:
|
||||||
db.floating_ip_get_by_address(context.get_admin_context(), address)
|
db.floating_ip_get_by_address(context.get_admin_context(), address)
|
||||||
except exception.NotFound:
|
except exception.NotFound:
|
||||||
db.floating_ip_create(context.get_admin_context(), {'address': address,
|
db.floating_ip_create(context.get_admin_context(),
|
||||||
'host': FLAGS.host})
|
{'address': address, 'host': FLAGS.host})
|
||||||
float_addr = self.network.allocate_floating_ip(self.context,
|
float_addr = self.network.allocate_floating_ip(self.context,
|
||||||
self.project.id)
|
self.project.id)
|
||||||
# NOTE(vish): This assert never fails. When cloud attempts to
|
# NOTE(vish): This assert never fails. When cloud attempts to
|
||||||
# make an rpc.call, the test just finishes with OK. It
|
# make an rpc.call, the test just finishes with OK. It
|
||||||
# appears to be something in the magic inline callbacks
|
# appears to be something in the magic inline callbacks
|
||||||
# that is breaking.
|
# that is breaking.
|
||||||
self.assertRaises(cloud.QuotaError, self.cloud.allocate_address, self.context)
|
self.assertRaises(cloud.QuotaError, self.cloud.allocate_address,
|
||||||
|
self.context)
|
||||||
|
@@ -41,7 +41,7 @@ class RpcTestCase(test.TrialTestCase):
|
|||||||
topic='test',
|
topic='test',
|
||||||
proxy=self.receiver)
|
proxy=self.receiver)
|
||||||
self.consumer.attach_to_twisted()
|
self.consumer.attach_to_twisted()
|
||||||
self.context= context.get_admin_context()
|
self.context = context.get_admin_context()
|
||||||
|
|
||||||
def test_call_succeed(self):
|
def test_call_succeed(self):
|
||||||
"""Get a value through rpc call"""
|
"""Get a value through rpc call"""
|
||||||
@@ -67,9 +67,9 @@ class RpcTestCase(test.TrialTestCase):
|
|||||||
to an int in the test.
|
to an int in the test.
|
||||||
"""
|
"""
|
||||||
value = 42
|
value = 42
|
||||||
self.assertFailure(rpc.call_twisted(self.context,
|
self.assertFailure(rpc.call_twisted(self.context, 'test',
|
||||||
'test', {"method": "fail",
|
{"method": "fail",
|
||||||
"args": {"value": value}}),
|
"args": {"value": value}}),
|
||||||
rpc.RemoteError)
|
rpc.RemoteError)
|
||||||
try:
|
try:
|
||||||
yield rpc.call_twisted(self.context,
|
yield rpc.call_twisted(self.context,
|
||||||
@@ -101,4 +101,3 @@ class TestReceiver(object):
|
|||||||
def fail(context, value):
|
def fail(context, value):
|
||||||
"""Raises an exception with the value sent in"""
|
"""Raises an exception with the value sent in"""
|
||||||
raise Exception(value)
|
raise Exception(value)
|
||||||
|
|
||||||
|
@@ -34,6 +34,7 @@ from nova.scheduler import driver
|
|||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
flags.DECLARE('max_cores', 'nova.scheduler.simple')
|
flags.DECLARE('max_cores', 'nova.scheduler.simple')
|
||||||
|
|
||||||
|
|
||||||
class TestDriver(driver.Scheduler):
|
class TestDriver(driver.Scheduler):
|
||||||
"""Scheduler Driver for Tests"""
|
"""Scheduler Driver for Tests"""
|
||||||
def schedule(context, topic, *args, **kwargs):
|
def schedule(context, topic, *args, **kwargs):
|
||||||
@@ -42,6 +43,7 @@ class TestDriver(driver.Scheduler):
|
|||||||
def schedule_named_method(context, topic, num):
|
def schedule_named_method(context, topic, num):
|
||||||
return 'named_host'
|
return 'named_host'
|
||||||
|
|
||||||
|
|
||||||
class SchedulerTestCase(test.TrialTestCase):
|
class SchedulerTestCase(test.TrialTestCase):
|
||||||
"""Test case for scheduler"""
|
"""Test case for scheduler"""
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@@ -179,7 +179,8 @@ class ServiceTestCase(test.BaseTestCase):
|
|||||||
binary).AndRaise(exception.NotFound())
|
binary).AndRaise(exception.NotFound())
|
||||||
service.db.service_create(self.context,
|
service.db.service_create(self.context,
|
||||||
service_create).AndReturn(service_ref)
|
service_create).AndReturn(service_ref)
|
||||||
service.db.service_get(self.context, service_ref['id']).AndReturn(service_ref)
|
service.db.service_get(self.context,
|
||||||
|
service_ref['id']).AndReturn(service_ref)
|
||||||
service.db.service_update(self.context, service_ref['id'],
|
service.db.service_update(self.context, service_ref['id'],
|
||||||
mox.ContainsKeyValue('report_count', 1))
|
mox.ContainsKeyValue('report_count', 1))
|
||||||
|
|
||||||
@@ -227,4 +228,3 @@ class ServiceTestCase(test.BaseTestCase):
|
|||||||
rv = yield s.report_state(host, binary)
|
rv = yield s.report_state(host, binary)
|
||||||
|
|
||||||
self.assert_(not s.model_disconnected)
|
self.assert_(not s.model_disconnected)
|
||||||
|
|
||||||
|
@@ -35,7 +35,8 @@ class ValidationTestCase(test.TrialTestCase):
|
|||||||
self.assertTrue(type_case("foo", 5, 1))
|
self.assertTrue(type_case("foo", 5, 1))
|
||||||
self.assertRaises(TypeError, type_case, "bar", "5", 1)
|
self.assertRaises(TypeError, type_case, "bar", "5", 1)
|
||||||
self.assertRaises(TypeError, type_case, None, 5, 1)
|
self.assertRaises(TypeError, type_case, None, 5, 1)
|
||||||
|
|
||||||
|
|
||||||
@validate.typetest(instanceid=str, size=int, number_of_instances=int)
|
@validate.typetest(instanceid=str, size=int, number_of_instances=int)
|
||||||
def type_case(instanceid, size, number_of_instances):
|
def type_case(instanceid, size, number_of_instances):
|
||||||
return True
|
return True
|
||||||
|
@@ -29,11 +29,13 @@ from nova.virt import libvirt_conn
|
|||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
flags.DECLARE('instances_path', 'nova.compute.manager')
|
flags.DECLARE('instances_path', 'nova.compute.manager')
|
||||||
|
|
||||||
|
|
||||||
class LibvirtConnTestCase(test.TrialTestCase):
|
class LibvirtConnTestCase(test.TrialTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(LibvirtConnTestCase, self).setUp()
|
super(LibvirtConnTestCase, self).setUp()
|
||||||
self.manager = manager.AuthManager()
|
self.manager = manager.AuthManager()
|
||||||
self.user = self.manager.create_user('fake', 'fake', 'fake', admin=True)
|
self.user = self.manager.create_user('fake', 'fake', 'fake',
|
||||||
|
admin=True)
|
||||||
self.project = self.manager.create_project('fake', 'fake', 'fake')
|
self.project = self.manager.create_project('fake', 'fake', 'fake')
|
||||||
self.network = utils.import_object(FLAGS.network_manager)
|
self.network = utils.import_object(FLAGS.network_manager)
|
||||||
FLAGS.instances_path = ''
|
FLAGS.instances_path = ''
|
||||||
@@ -41,15 +43,15 @@ class LibvirtConnTestCase(test.TrialTestCase):
|
|||||||
def test_get_uri_and_template(self):
|
def test_get_uri_and_template(self):
|
||||||
ip = '10.11.12.13'
|
ip = '10.11.12.13'
|
||||||
|
|
||||||
instance = { 'internal_id' : 1,
|
instance = {'internal_id': 1,
|
||||||
'memory_kb' : '1024000',
|
'memory_kb': '1024000',
|
||||||
'basepath' : '/some/path',
|
'basepath': '/some/path',
|
||||||
'bridge_name' : 'br100',
|
'bridge_name': 'br100',
|
||||||
'mac_address' : '02:12:34:46:56:67',
|
'mac_address': '02:12:34:46:56:67',
|
||||||
'vcpus' : 2,
|
'vcpus': 2,
|
||||||
'project_id' : 'fake',
|
'project_id': 'fake',
|
||||||
'bridge' : 'br101',
|
'bridge': 'br101',
|
||||||
'instance_type' : 'm1.small'}
|
'instance_type': 'm1.small'}
|
||||||
|
|
||||||
user_context = context.RequestContext(project=self.project,
|
user_context = context.RequestContext(project=self.project,
|
||||||
user=self.user)
|
user=self.user)
|
||||||
@@ -58,36 +60,34 @@ class LibvirtConnTestCase(test.TrialTestCase):
|
|||||||
self.network.set_network_host(context.get_admin_context(),
|
self.network.set_network_host(context.get_admin_context(),
|
||||||
network_ref['id'])
|
network_ref['id'])
|
||||||
|
|
||||||
fixed_ip = { 'address' : ip,
|
fixed_ip = {'address': ip,
|
||||||
'network_id' : network_ref['id'] }
|
'network_id': network_ref['id']}
|
||||||
|
|
||||||
ctxt = context.get_admin_context()
|
ctxt = context.get_admin_context()
|
||||||
fixed_ip_ref = db.fixed_ip_create(ctxt, fixed_ip)
|
fixed_ip_ref = db.fixed_ip_create(ctxt, fixed_ip)
|
||||||
db.fixed_ip_update(ctxt, ip, {'allocated': True,
|
db.fixed_ip_update(ctxt, ip, {'allocated': True,
|
||||||
'instance_id': instance_ref['id'] })
|
'instance_id': instance_ref['id']})
|
||||||
|
|
||||||
type_uri_map = { 'qemu' : ('qemu:///system',
|
type_uri_map = {'qemu': ('qemu:///system',
|
||||||
[(lambda t: t.find('.').get('type'), 'qemu'),
|
[(lambda t: t.find('.').get('type'), 'qemu'),
|
||||||
(lambda t: t.find('./os/type').text, 'hvm'),
|
(lambda t: t.find('./os/type').text, 'hvm'),
|
||||||
(lambda t: t.find('./devices/emulator'), None)]),
|
(lambda t: t.find('./devices/emulator'), None)]),
|
||||||
'kvm' : ('qemu:///system',
|
'kvm': ('qemu:///system',
|
||||||
[(lambda t: t.find('.').get('type'), 'kvm'),
|
[(lambda t: t.find('.').get('type'), 'kvm'),
|
||||||
(lambda t: t.find('./os/type').text, 'hvm'),
|
(lambda t: t.find('./os/type').text, 'hvm'),
|
||||||
(lambda t: t.find('./devices/emulator'), None)]),
|
(lambda t: t.find('./devices/emulator'), None)]),
|
||||||
'uml' : ('uml:///system',
|
'uml': ('uml:///system',
|
||||||
[(lambda t: t.find('.').get('type'), 'uml'),
|
[(lambda t: t.find('.').get('type'), 'uml'),
|
||||||
(lambda t: t.find('./os/type').text, 'uml')]),
|
(lambda t: t.find('./os/type').text, 'uml')])}
|
||||||
}
|
|
||||||
|
|
||||||
common_checks = [(lambda t: t.find('.').tag, 'domain'),
|
common_checks = [
|
||||||
(lambda t: \
|
(lambda t: t.find('.').tag, 'domain'),
|
||||||
t.find('./devices/interface/filterref/parameter') \
|
(lambda t: t.find('./devices/interface/filterref/parameter').\
|
||||||
.get('name'), 'IP'),
|
get('name'), 'IP'),
|
||||||
(lambda t: \
|
(lambda t: t.find('./devices/interface/filterref/parameter').\
|
||||||
t.find('./devices/interface/filterref/parameter') \
|
get('value'), '10.11.12.13')]
|
||||||
.get('value'), '10.11.12.13')]
|
|
||||||
|
|
||||||
for (libvirt_type,(expected_uri, checks)) in type_uri_map.iteritems():
|
for (libvirt_type, (expected_uri, checks)) in type_uri_map.iteritems():
|
||||||
FLAGS.libvirt_type = libvirt_type
|
FLAGS.libvirt_type = libvirt_type
|
||||||
conn = libvirt_conn.LibvirtConnection(True)
|
conn = libvirt_conn.LibvirtConnection(True)
|
||||||
|
|
||||||
@@ -111,19 +111,20 @@ class LibvirtConnTestCase(test.TrialTestCase):
|
|||||||
# implementation doesn't fiddle around with the FLAGS.
|
# implementation doesn't fiddle around with the FLAGS.
|
||||||
testuri = 'something completely different'
|
testuri = 'something completely different'
|
||||||
FLAGS.libvirt_uri = testuri
|
FLAGS.libvirt_uri = testuri
|
||||||
for (libvirt_type,(expected_uri, checks)) in type_uri_map.iteritems():
|
for (libvirt_type, (expected_uri, checks)) in type_uri_map.iteritems():
|
||||||
FLAGS.libvirt_type = libvirt_type
|
FLAGS.libvirt_type = libvirt_type
|
||||||
conn = libvirt_conn.LibvirtConnection(True)
|
conn = libvirt_conn.LibvirtConnection(True)
|
||||||
uri, template = conn.get_uri_and_template()
|
uri, template = conn.get_uri_and_template()
|
||||||
self.assertEquals(uri, testuri)
|
self.assertEquals(uri, testuri)
|
||||||
|
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(LibvirtConnTestCase, self).tearDown()
|
super(LibvirtConnTestCase, self).tearDown()
|
||||||
self.manager.delete_project(self.project)
|
self.manager.delete_project(self.project)
|
||||||
self.manager.delete_user(self.user)
|
self.manager.delete_user(self.user)
|
||||||
|
|
||||||
|
|
||||||
class NWFilterTestCase(test.TrialTestCase):
|
class NWFilterTestCase(test.TrialTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(NWFilterTestCase, self).setUp()
|
super(NWFilterTestCase, self).setUp()
|
||||||
|
|
||||||
@@ -131,7 +132,8 @@ class NWFilterTestCase(test.TrialTestCase):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
self.manager = manager.AuthManager()
|
self.manager = manager.AuthManager()
|
||||||
self.user = self.manager.create_user('fake', 'fake', 'fake', admin=True)
|
self.user = self.manager.create_user('fake', 'fake', 'fake',
|
||||||
|
admin=True)
|
||||||
self.project = self.manager.create_project('fake', 'fake', 'fake')
|
self.project = self.manager.create_project('fake', 'fake', 'fake')
|
||||||
self.context = context.RequestContext(self.user, self.project)
|
self.context = context.RequestContext(self.user, self.project)
|
||||||
|
|
||||||
@@ -143,7 +145,6 @@ class NWFilterTestCase(test.TrialTestCase):
|
|||||||
self.manager.delete_project(self.project)
|
self.manager.delete_project(self.project)
|
||||||
self.manager.delete_user(self.user)
|
self.manager.delete_user(self.user)
|
||||||
|
|
||||||
|
|
||||||
def test_cidr_rule_nwfilter_xml(self):
|
def test_cidr_rule_nwfilter_xml(self):
|
||||||
cloud_controller = cloud.CloudController()
|
cloud_controller = cloud.CloudController()
|
||||||
cloud_controller.create_security_group(self.context,
|
cloud_controller.create_security_group(self.context,
|
||||||
@@ -156,7 +157,6 @@ class NWFilterTestCase(test.TrialTestCase):
|
|||||||
ip_protocol='tcp',
|
ip_protocol='tcp',
|
||||||
cidr_ip='0.0.0.0/0')
|
cidr_ip='0.0.0.0/0')
|
||||||
|
|
||||||
|
|
||||||
security_group = db.security_group_get_by_name(self.context,
|
security_group = db.security_group_get_by_name(self.context,
|
||||||
'fake',
|
'fake',
|
||||||
'testgroup')
|
'testgroup')
|
||||||
@@ -182,15 +182,12 @@ class NWFilterTestCase(test.TrialTestCase):
|
|||||||
self.assertEqual(ip_conditions[0].getAttribute('srcipmask'), '0.0.0.0')
|
self.assertEqual(ip_conditions[0].getAttribute('srcipmask'), '0.0.0.0')
|
||||||
self.assertEqual(ip_conditions[0].getAttribute('dstportstart'), '80')
|
self.assertEqual(ip_conditions[0].getAttribute('dstportstart'), '80')
|
||||||
self.assertEqual(ip_conditions[0].getAttribute('dstportend'), '81')
|
self.assertEqual(ip_conditions[0].getAttribute('dstportend'), '81')
|
||||||
|
|
||||||
|
|
||||||
self.teardown_security_group()
|
self.teardown_security_group()
|
||||||
|
|
||||||
def teardown_security_group(self):
|
def teardown_security_group(self):
|
||||||
cloud_controller = cloud.CloudController()
|
cloud_controller = cloud.CloudController()
|
||||||
cloud_controller.delete_security_group(self.context, 'testgroup')
|
cloud_controller.delete_security_group(self.context, 'testgroup')
|
||||||
|
|
||||||
|
|
||||||
def setup_and_return_security_group(self):
|
def setup_and_return_security_group(self):
|
||||||
cloud_controller = cloud.CloudController()
|
cloud_controller = cloud.CloudController()
|
||||||
cloud_controller.create_security_group(self.context,
|
cloud_controller.create_security_group(self.context,
|
||||||
@@ -244,16 +241,19 @@ class NWFilterTestCase(test.TrialTestCase):
|
|||||||
for required in [secgroup_filter, 'allow-dhcp-server',
|
for required in [secgroup_filter, 'allow-dhcp-server',
|
||||||
'no-arp-spoofing', 'no-ip-spoofing',
|
'no-arp-spoofing', 'no-ip-spoofing',
|
||||||
'no-mac-spoofing']:
|
'no-mac-spoofing']:
|
||||||
self.assertTrue(required in self.recursive_depends[instance_filter],
|
self.assertTrue(required in
|
||||||
"Instance's filter does not include %s" % required)
|
self.recursive_depends[instance_filter],
|
||||||
|
"Instance's filter does not include %s" %
|
||||||
|
required)
|
||||||
|
|
||||||
self.security_group = self.setup_and_return_security_group()
|
self.security_group = self.setup_and_return_security_group()
|
||||||
|
|
||||||
db.instance_add_security_group(self.context, inst_id, self.security_group.id)
|
db.instance_add_security_group(self.context, inst_id,
|
||||||
|
self.security_group.id)
|
||||||
instance = db.instance_get(self.context, inst_id)
|
instance = db.instance_get(self.context, inst_id)
|
||||||
|
|
||||||
d = self.fw.setup_nwfilters_for_instance(instance)
|
d = self.fw.setup_nwfilters_for_instance(instance)
|
||||||
d.addCallback(_ensure_all_called)
|
d.addCallback(_ensure_all_called)
|
||||||
d.addCallback(lambda _:self.teardown_security_group())
|
d.addCallback(lambda _: self.teardown_security_group())
|
||||||
|
|
||||||
return d
|
return d
|
||||||
|
@@ -59,7 +59,8 @@ class VolumeTestCase(test.TrialTestCase):
|
|||||||
"""Test volume can be created and deleted"""
|
"""Test volume can be created and deleted"""
|
||||||
volume_id = self._create_volume()
|
volume_id = self._create_volume()
|
||||||
yield self.volume.create_volume(self.context, volume_id)
|
yield self.volume.create_volume(self.context, volume_id)
|
||||||
self.assertEqual(volume_id, db.volume_get(context.get_admin_context(), volume_id).id)
|
self.assertEqual(volume_id, db.volume_get(context.get_admin_context(),
|
||||||
|
volume_id).id)
|
||||||
|
|
||||||
yield self.volume.delete_volume(self.context, volume_id)
|
yield self.volume.delete_volume(self.context, volume_id)
|
||||||
self.assertRaises(exception.NotFound,
|
self.assertRaises(exception.NotFound,
|
||||||
@@ -114,7 +115,8 @@ class VolumeTestCase(test.TrialTestCase):
|
|||||||
volume_id = self._create_volume()
|
volume_id = self._create_volume()
|
||||||
yield self.volume.create_volume(self.context, volume_id)
|
yield self.volume.create_volume(self.context, volume_id)
|
||||||
if FLAGS.fake_tests:
|
if FLAGS.fake_tests:
|
||||||
db.volume_attached(self.context, volume_id, instance_id, mountpoint)
|
db.volume_attached(self.context, volume_id, instance_id,
|
||||||
|
mountpoint)
|
||||||
else:
|
else:
|
||||||
yield self.compute.attach_volume(self.context,
|
yield self.compute.attach_volume(self.context,
|
||||||
instance_id,
|
instance_id,
|
||||||
@@ -154,7 +156,8 @@ class VolumeTestCase(test.TrialTestCase):
|
|||||||
def _check(volume_id):
|
def _check(volume_id):
|
||||||
"""Make sure blades aren't duplicated"""
|
"""Make sure blades aren't duplicated"""
|
||||||
volume_ids.append(volume_id)
|
volume_ids.append(volume_id)
|
||||||
(shelf_id, blade_id) = db.volume_get_shelf_and_blade(context.get_admin_context(),
|
admin_context = context.get_admin_context()
|
||||||
|
(shelf_id, blade_id) = db.volume_get_shelf_and_blade(admin_context,
|
||||||
volume_id)
|
volume_id)
|
||||||
shelf_blade = '%s.%s' % (shelf_id, blade_id)
|
shelf_blade = '%s.%s' % (shelf_id, blade_id)
|
||||||
self.assert_(shelf_blade not in shelf_blades)
|
self.assert_(shelf_blade not in shelf_blades)
|
||||||
|
Reference in New Issue
Block a user