fix N402 for nova/tests
convert docstrings on test_ functions to comments to prevent the function name from being masked by test infrastructure convert the rest of the docstrings to end in punctuation as per N401 Change-Id: Ib400537c6f7feb30739207a627b5aac3a7eb165a
This commit is contained in:
@@ -87,7 +87,7 @@ class HyperVUtils(object):
|
||||
% (path, ret_val))
|
||||
|
||||
def _check_job_status(self, jobpath):
|
||||
"""Poll WMI job state for completion"""
|
||||
"""Poll WMI job state for completion."""
|
||||
job_wmi_path = jobpath.replace('\\', '/')
|
||||
job = wmi.WMI(moniker=job_wmi_path)
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ def serialize_obj(obj):
|
||||
|
||||
|
||||
def serialize_args(*args, **kwargs):
|
||||
"""Workaround for float string conversion issues in Python 2.6"""
|
||||
"""Workaround for float string conversion issues in Python 2.6."""
|
||||
return serialize_obj((args, kwargs))
|
||||
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ class FakeDefaultScheduler(driver.Scheduler):
|
||||
|
||||
|
||||
class MultiDriverTestCase(test_scheduler.SchedulerTestCase):
|
||||
"""Test case for multi driver"""
|
||||
"""Test case for multi driver."""
|
||||
|
||||
driver_cls = multi.MultiScheduler
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""Unit tests for the API endpoint"""
|
||||
"""Unit tests for the API endpoint."""
|
||||
|
||||
import random
|
||||
import StringIO
|
||||
@@ -45,13 +45,13 @@ from nova.tests import matchers
|
||||
|
||||
|
||||
class FakeHttplibSocket(object):
|
||||
"""a fake socket implementation for httplib.HTTPResponse, trivial"""
|
||||
"""a fake socket implementation for httplib.HTTPResponse, trivial."""
|
||||
def __init__(self, response_string):
|
||||
self.response_string = response_string
|
||||
self._buffer = StringIO.StringIO(response_string)
|
||||
|
||||
def makefile(self, _mode, _other):
|
||||
"""Returns the socket's internal buffer"""
|
||||
"""Returns the socket's internal buffer."""
|
||||
return self._buffer
|
||||
|
||||
|
||||
@@ -91,12 +91,12 @@ class FakeHttplibConnection(object):
|
||||
return self.sock.response_string
|
||||
|
||||
def close(self):
|
||||
"""Required for compatibility with boto/tornado"""
|
||||
"""Required for compatibility with boto/tornado."""
|
||||
pass
|
||||
|
||||
|
||||
class XmlConversionTestCase(test.TestCase):
|
||||
"""Unit test api xml conversion"""
|
||||
"""Unit test api xml conversion."""
|
||||
def test_number_conversion(self):
|
||||
conv = ec2utils._try_convert
|
||||
self.assertEqual(conv('None'), None)
|
||||
@@ -212,7 +212,7 @@ class Ec2utilsTestCase(test.TestCase):
|
||||
|
||||
|
||||
class ApiEc2TestCase(test.TestCase):
|
||||
"""Unit test for the cloud controller on an EC2 API"""
|
||||
"""Unit test for the cloud controller on an EC2 API."""
|
||||
def setUp(self):
|
||||
super(ApiEc2TestCase, self).setUp()
|
||||
self.host = '127.0.0.1'
|
||||
@@ -225,7 +225,7 @@ class ApiEc2TestCase(test.TestCase):
|
||||
self.useFixture(fixtures.FakeLogger('boto'))
|
||||
|
||||
def expect_http(self, host=None, is_secure=False, api_version=None):
|
||||
"""Returns a new EC2 connection"""
|
||||
"""Returns a new EC2 connection."""
|
||||
self.ec2 = boto.connect_ec2(
|
||||
aws_access_key_id='fake',
|
||||
aws_secret_access_key='fake',
|
||||
@@ -281,7 +281,7 @@ class ApiEc2TestCase(test.TestCase):
|
||||
self.assertEqual(self.ec2.get_all_instances(), [])
|
||||
|
||||
def test_terminate_invalid_instance(self):
|
||||
"""Attempt to terminate an invalid instance"""
|
||||
# Attempt to terminate an invalid instance.
|
||||
self.expect_http()
|
||||
self.mox.ReplayAll()
|
||||
self.assertRaises(boto_exc.EC2ResponseError,
|
||||
@@ -318,7 +318,7 @@ class ApiEc2TestCase(test.TestCase):
|
||||
self.fail('Exception not raised.')
|
||||
|
||||
def test_get_all_security_groups(self):
|
||||
"""Test that we can retrieve security groups"""
|
||||
# Test that we can retrieve security groups.
|
||||
self.expect_http()
|
||||
self.mox.ReplayAll()
|
||||
|
||||
@@ -328,7 +328,7 @@ class ApiEc2TestCase(test.TestCase):
|
||||
self.assertEquals(rv[0].name, 'default')
|
||||
|
||||
def test_create_delete_security_group(self):
|
||||
"""Test that we can create a security group"""
|
||||
# Test that we can create a security group.
|
||||
self.expect_http()
|
||||
self.mox.ReplayAll()
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""Unit tests for the DB API"""
|
||||
"""Unit tests for the DB API."""
|
||||
|
||||
import datetime
|
||||
import uuid as stdlib_uuid
|
||||
@@ -114,7 +114,7 @@ class DbApiTestCase(test.TestCase):
|
||||
self.assertEqual(2, len(result))
|
||||
|
||||
def test_instance_get_all_by_filters_regex_unsupported_db(self):
|
||||
"""Ensure that the 'LIKE' operator is used for unsupported dbs."""
|
||||
# Ensure that the 'LIKE' operator is used for unsupported dbs.
|
||||
self.flags(sql_connection="notdb://")
|
||||
self.create_instances_with_args(display_name='test1')
|
||||
self.create_instances_with_args(display_name='test.*')
|
||||
@@ -321,7 +321,7 @@ class DbApiTestCase(test.TestCase):
|
||||
inst['uuid'], 'vm_state', [None, 'disable'], 'run')
|
||||
|
||||
def test_instance_update_with_instance_uuid(self):
|
||||
"""test instance_update() works when an instance UUID is passed """
|
||||
# test instance_update() works when an instance UUID is passed.
|
||||
ctxt = context.get_admin_context()
|
||||
|
||||
# Create an instance with some metadata
|
||||
@@ -428,7 +428,7 @@ class DbApiTestCase(test.TestCase):
|
||||
self.assertEquals("needscoffee", new_ref["vm_state"])
|
||||
|
||||
def test_instance_update_with_extra_specs(self):
|
||||
"""Ensure _extra_specs are returned from _instance_update"""
|
||||
# Ensure _extra_specs are returned from _instance_update.
|
||||
ctxt = context.get_admin_context()
|
||||
|
||||
# create a flavor
|
||||
@@ -463,7 +463,7 @@ class DbApiTestCase(test.TestCase):
|
||||
self.assertEquals(spec, new_ref['extra_specs'])
|
||||
|
||||
def test_instance_fault_create(self):
|
||||
"""Ensure we can create an instance fault"""
|
||||
# Ensure we can create an instance fault.
|
||||
ctxt = context.get_admin_context()
|
||||
uuid = str(stdlib_uuid.uuid4())
|
||||
|
||||
@@ -481,7 +481,7 @@ class DbApiTestCase(test.TestCase):
|
||||
self.assertEqual(404, faults[uuid][0]['code'])
|
||||
|
||||
def test_instance_fault_get_by_instance(self):
|
||||
"""ensure we can retrieve an instance fault by instance UUID """
|
||||
# ensure we can retrieve an instance fault by instance UUID.
|
||||
ctxt = context.get_admin_context()
|
||||
instance1 = db.instance_create(ctxt, {})
|
||||
instance2 = db.instance_create(ctxt, {})
|
||||
@@ -530,7 +530,7 @@ class DbApiTestCase(test.TestCase):
|
||||
self.assertEqual(instance_faults, expected)
|
||||
|
||||
def test_instance_faults_get_by_instance_uuids_no_faults(self):
|
||||
"""None should be returned when no faults exist"""
|
||||
# None should be returned when no faults exist.
|
||||
ctxt = context.get_admin_context()
|
||||
instance1 = db.instance_create(ctxt, {})
|
||||
instance2 = db.instance_create(ctxt, {})
|
||||
|
||||
@@ -52,7 +52,7 @@ class FiltersTestCase(test.TestCase):
|
||||
self.assertEqual(list(result), ['obj1', 'obj3'])
|
||||
|
||||
def test_filter_all_recursive_yields(self):
|
||||
"""Test filter_all() allows generators from previous filter_all()s."""
|
||||
# Test filter_all() allows generators from previous filter_all()s.
|
||||
# filter_all() yields results. We want to make sure that we can
|
||||
# call filter_all() with generators returned from previous calls
|
||||
# to filter_all().
|
||||
|
||||
@@ -30,9 +30,9 @@ LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class InstanceTypeTestCase(test.TestCase):
|
||||
"""Test cases for instance type code"""
|
||||
"""Test cases for instance type code."""
|
||||
def _generate_name(self):
|
||||
"""return a name not in the DB"""
|
||||
"""return a name not in the DB."""
|
||||
nonexistent_flavor = str(int(time.time()))
|
||||
flavors = instance_types.get_all_types()
|
||||
while nonexistent_flavor in flavors:
|
||||
@@ -41,7 +41,7 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
return nonexistent_flavor
|
||||
|
||||
def _generate_flavorid(self):
|
||||
"""return a flavorid not in the DB"""
|
||||
"""return a flavorid not in the DB."""
|
||||
nonexistent_flavor = 2700
|
||||
flavor_ids = [value["id"] for key, value in
|
||||
instance_types.get_all_types().iteritems()]
|
||||
@@ -51,11 +51,11 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
return nonexistent_flavor
|
||||
|
||||
def _existing_flavor(self):
|
||||
"""return first instance type name"""
|
||||
"""return first instance type name."""
|
||||
return instance_types.get_all_types().keys()[0]
|
||||
|
||||
def test_instance_type_create(self):
|
||||
"""Ensure instance types can be created"""
|
||||
# Ensure instance types can be created.
|
||||
name = 'Instance create test'
|
||||
flavor_id = '512'
|
||||
|
||||
@@ -79,7 +79,7 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
'instance type was not created')
|
||||
|
||||
def test_instance_type_create_then_delete(self):
|
||||
"""Ensure instance types can be created"""
|
||||
# Ensure instance types can be created.
|
||||
name = 'Small Flavor'
|
||||
flavorid = 'flavor1'
|
||||
|
||||
@@ -136,21 +136,21 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
self.assertEqual(inst_type['rxtx_factor'], 9.9)
|
||||
|
||||
def test_instance_type_create_with_special_characters(self):
|
||||
"""Ensure instance types raises InvalidInput for invalid characters"""
|
||||
# Ensure instance types raises InvalidInput for invalid characters.
|
||||
name = "foo.bar!@#$%^-test_name"
|
||||
flavorid = "flavor1"
|
||||
self.assertRaises(exception.InvalidInput, instance_types.create,
|
||||
name, 256, 1, 120, 100, flavorid)
|
||||
|
||||
def test_get_all_instance_types(self):
|
||||
"""Ensures that all instance types can be retrieved"""
|
||||
# Ensures that all instance types can be retrieved.
|
||||
session = sql_session.get_session()
|
||||
total_instance_types = session.query(models.InstanceTypes).count()
|
||||
inst_types = instance_types.get_all_types()
|
||||
self.assertEqual(total_instance_types, len(inst_types))
|
||||
|
||||
def test_invalid_create_args_should_fail(self):
|
||||
"""Ensures that instance type creation fails with invalid args"""
|
||||
# Ensures that instance type creation fails with invalid args.
|
||||
invalid_sigs = [
|
||||
(('Zero memory', 0, 1, 10, 20, 'flavor1'), {}),
|
||||
(('Negative memory', -256, 1, 10, 20, 'flavor1'), {}),
|
||||
@@ -177,13 +177,13 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
instance_types.create, *args, **kwargs)
|
||||
|
||||
def test_non_existent_inst_type_shouldnt_delete(self):
|
||||
"""Ensures that instance type creation fails with invalid args"""
|
||||
# Ensures that instance type creation fails with invalid args.
|
||||
self.assertRaises(exception.InstanceTypeNotFoundByName,
|
||||
instance_types.destroy,
|
||||
'unknown_flavor')
|
||||
|
||||
def test_duplicate_names_fail(self):
|
||||
"""Ensures that name duplicates raise InstanceTypeCreateFailed"""
|
||||
# Ensures that name duplicates raise InstanceTypeCreateFailed.
|
||||
name = 'some_name'
|
||||
instance_types.create(name, 256, 1, 120, 200, 'flavor1')
|
||||
self.assertRaises(exception.InstanceTypeExists,
|
||||
@@ -191,7 +191,7 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
name, 256, 1, 120, 200, 'flavor2')
|
||||
|
||||
def test_duplicate_flavorids_fail(self):
|
||||
"""Ensures that flavorid duplicates raise InstanceTypeCreateFailed"""
|
||||
# Ensures that flavorid duplicates raise InstanceTypeCreateFailed.
|
||||
flavorid = 'flavor1'
|
||||
instance_types.create('name one', 256, 1, 120, 200, flavorid)
|
||||
self.assertRaises(exception.InstanceTypeIdExists,
|
||||
@@ -199,12 +199,12 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
'name two', 256, 1, 120, 200, flavorid)
|
||||
|
||||
def test_will_not_destroy_with_no_name(self):
|
||||
"""Ensure destroy said path of no name raises error"""
|
||||
# Ensure destroy said path of no name raises error.
|
||||
self.assertRaises(exception.InstanceTypeNotFoundByName,
|
||||
instance_types.destroy, None)
|
||||
|
||||
def test_will_not_get_bad_default_instance_type(self):
|
||||
"""ensures error raised on bad default instance type"""
|
||||
# ensures error raised on bad default instance type.
|
||||
self.flags(default_instance_type='unknown_flavor')
|
||||
self.assertRaises(exception.InstanceTypeNotFound,
|
||||
instance_types.get_default_instance_type)
|
||||
@@ -216,28 +216,28 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
self.assertEqual(default_instance_type, fetched)
|
||||
|
||||
def test_will_not_get_instance_type_by_unknown_id(self):
|
||||
"""Ensure get by name returns default flavor with no name"""
|
||||
# Ensure get by name returns default flavor with no name.
|
||||
self.assertRaises(exception.InstanceTypeNotFound,
|
||||
instance_types.get_instance_type, 10000)
|
||||
|
||||
def test_will_not_get_instance_type_with_bad_id(self):
|
||||
"""Ensure get by name returns default flavor with bad name"""
|
||||
# Ensure get by name returns default flavor with bad name.
|
||||
self.assertRaises(exception.InstanceTypeNotFound,
|
||||
instance_types.get_instance_type, 'asdf')
|
||||
|
||||
def test_instance_type_get_by_None_name_returns_default(self):
|
||||
"""Ensure get by name returns default flavor with no name"""
|
||||
# Ensure get by name returns default flavor with no name.
|
||||
default = instance_types.get_default_instance_type()
|
||||
actual = instance_types.get_instance_type_by_name(None)
|
||||
self.assertEqual(default, actual)
|
||||
|
||||
def test_will_not_get_instance_type_with_bad_name(self):
|
||||
"""Ensure get by name returns default flavor with bad name"""
|
||||
# Ensure get by name returns default flavor with bad name.
|
||||
self.assertRaises(exception.InstanceTypeNotFound,
|
||||
instance_types.get_instance_type_by_name, 10000)
|
||||
|
||||
def test_will_not_get_instance_by_unknown_flavor_id(self):
|
||||
"""Ensure get by flavor raises error with wrong flavorid"""
|
||||
# Ensure get by flavor raises error with wrong flavorid.
|
||||
self.assertRaises(exception.FlavorNotFound,
|
||||
instance_types.get_instance_type_by_flavor_id,
|
||||
'unknown_flavor')
|
||||
@@ -249,7 +249,7 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
self.assertEqual(default_instance_type, fetched)
|
||||
|
||||
def test_can_read_deleted_types_using_flavor_id(self):
|
||||
"""Ensure deleted instance types can be read when querying flavor_id"""
|
||||
# Ensure deleted instance types can be read when querying flavor_id.
|
||||
inst_type_name = "test"
|
||||
inst_type_flavor_id = "test1"
|
||||
|
||||
@@ -280,7 +280,7 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
self.assertEqual("instance_type1_redo", instance_type["name"])
|
||||
|
||||
def test_will_list_deleted_type_for_active_instance(self):
|
||||
"""Ensure deleted instance types with active instances can be read"""
|
||||
# Ensure deleted instance types with active instances can be read.
|
||||
ctxt = context.get_admin_context()
|
||||
inst_type = instance_types.create("test", 256, 1, 120, 100, "test1")
|
||||
|
||||
@@ -299,7 +299,7 @@ class InstanceTypeTestCase(test.TestCase):
|
||||
|
||||
|
||||
class InstanceTypeFilteringTest(test.TestCase):
|
||||
"""Test cases for the filter option available for instance_type_get_all"""
|
||||
"""Test cases for the filter option available for instance_type_get_all."""
|
||||
def setUp(self):
|
||||
super(InstanceTypeFilteringTest, self).setUp()
|
||||
self.context = context.get_admin_context()
|
||||
@@ -317,19 +317,19 @@ class InstanceTypeFilteringTest(test.TestCase):
|
||||
self.assertFilterResults(filters, expected)
|
||||
|
||||
def test_min_memory_mb_filter(self):
|
||||
"""Exclude tiny instance which is 512 MB"""
|
||||
# Exclude tiny instance which is 512 MB.
|
||||
filters = dict(min_memory_mb=513)
|
||||
expected = ['m1.large', 'm1.medium', 'm1.small', 'm1.xlarge']
|
||||
self.assertFilterResults(filters, expected)
|
||||
|
||||
def test_min_root_gb_filter(self):
|
||||
"""Exclude everything but large and xlarge which have >= 80 GB"""
|
||||
# Exclude everything but large and xlarge which have >= 80 GB.
|
||||
filters = dict(min_root_gb=80)
|
||||
expected = ['m1.large', 'm1.xlarge']
|
||||
self.assertFilterResults(filters, expected)
|
||||
|
||||
def test_min_memory_mb_AND_root_gb_filter(self):
|
||||
"""Exclude everything but large and xlarge which have >= 80 GB"""
|
||||
# Exclude everything but large and xlarge which have >= 80 GB.
|
||||
filters = dict(min_memory_mb=16384, min_root_gb=80)
|
||||
expected = ['m1.xlarge']
|
||||
self.assertFilterResults(filters, expected)
|
||||
|
||||
@@ -473,7 +473,7 @@ class CacheConcurrencyTestCase(test.TestCase):
|
||||
super(CacheConcurrencyTestCase, self).tearDown()
|
||||
|
||||
def test_same_fname_concurrency(self):
|
||||
"""Ensures that the same fname cache runs at a sequentially"""
|
||||
# Ensures that the same fname cache runs at a sequentially.
|
||||
backend = imagebackend.Backend(False)
|
||||
wait1 = eventlet.event.Event()
|
||||
done1 = eventlet.event.Event()
|
||||
@@ -507,7 +507,7 @@ class CacheConcurrencyTestCase(test.TestCase):
|
||||
thr2.wait()
|
||||
|
||||
def test_different_fname_concurrency(self):
|
||||
"""Ensures that two different fname caches are concurrent"""
|
||||
# Ensures that two different fname caches are concurrent.
|
||||
backend = imagebackend.Backend(False)
|
||||
wait1 = eventlet.event.Event()
|
||||
done1 = eventlet.event.Event()
|
||||
@@ -2043,7 +2043,7 @@ class LibvirtConnTestCase(test.TestCase):
|
||||
db.instance_destroy(user_context, instance_ref['uuid'])
|
||||
|
||||
def test_ensure_filtering_rules_for_instance_timeout(self):
|
||||
"""ensure_filtering_fules_for_instance() finishes with timeout."""
|
||||
# ensure_filtering_fules_for_instance() finishes with timeout.
|
||||
# Preparing mocks
|
||||
def fake_none(self, *args):
|
||||
return
|
||||
@@ -2288,7 +2288,7 @@ class LibvirtConnTestCase(test.TestCase):
|
||||
self.context, instance_ref, dest_check_data)
|
||||
|
||||
def test_live_migration_raises_exception(self):
|
||||
"""Confirms recover method is called when exceptions are raised."""
|
||||
# Confirms recover method is called when exceptions are raised.
|
||||
# Preparing data
|
||||
self.compute = importutils.import_object(CONF.compute_manager)
|
||||
instance_dict = {'host': 'fake',
|
||||
@@ -2933,7 +2933,7 @@ class LibvirtConnTestCase(test.TestCase):
|
||||
conn._destroy(instance)
|
||||
|
||||
def test_available_least_handles_missing(self):
|
||||
"""Ensure destroy calls managedSaveRemove for saved instance"""
|
||||
# Ensure destroy calls managedSaveRemove for saved instance.
|
||||
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
|
||||
def list_instances():
|
||||
@@ -3424,7 +3424,7 @@ class HostStateTestCase(test.TestCase):
|
||||
instance_caps = [("x86_64", "kvm", "hvm"), ("i686", "kvm", "hvm")]
|
||||
|
||||
class FakeConnection(object):
|
||||
"""Fake connection object"""
|
||||
"""Fake connection object."""
|
||||
|
||||
def get_vcpu_total(self):
|
||||
return 1
|
||||
@@ -3936,7 +3936,7 @@ class NWFilterTestCase(test.TestCase):
|
||||
'instance_type_id': 1})
|
||||
|
||||
def _create_instance_type(self, params=None):
|
||||
"""Create a test instance"""
|
||||
"""Create a test instance."""
|
||||
if not params:
|
||||
params = {}
|
||||
|
||||
@@ -4274,7 +4274,7 @@ class LibvirtDriverTestCase(test.TestCase):
|
||||
fake.FakeVirtAPI(), read_only=True)
|
||||
|
||||
def _create_instance(self, params=None):
|
||||
"""Create a test instance"""
|
||||
"""Create a test instance."""
|
||||
if not params:
|
||||
params = {}
|
||||
|
||||
@@ -4630,14 +4630,14 @@ class LibvirtVolumeUsageTestCase(test.TestCase):
|
||||
|
||||
|
||||
class LibvirtNonblockingTestCase(test.TestCase):
|
||||
"""Test libvirt_nonblocking option"""
|
||||
"""Test libvirt_nonblocking option."""
|
||||
|
||||
def setUp(self):
|
||||
super(LibvirtNonblockingTestCase, self).setUp()
|
||||
self.flags(libvirt_nonblocking=True, libvirt_uri="test:///default")
|
||||
|
||||
def test_connection_to_primitive(self):
|
||||
"""Test bug 962840"""
|
||||
# Test bug 962840.
|
||||
import nova.virt.libvirt.driver as libvirt_driver
|
||||
connection = libvirt_driver.LibvirtDriver('')
|
||||
jsonutils.to_primitive(connection._conn, convert_instances=True)
|
||||
|
||||
@@ -77,7 +77,7 @@ def _have_mysql():
|
||||
|
||||
|
||||
class TestMigrations(test.TestCase):
|
||||
"""Test sqlalchemy-migrate migrations"""
|
||||
"""Test sqlalchemy-migrate migrations."""
|
||||
|
||||
DEFAULT_CONFIG_FILE = os.path.join(os.path.dirname(__file__),
|
||||
'test_migrations.conf')
|
||||
@@ -211,9 +211,7 @@ class TestMigrations(test.TestCase):
|
||||
self.fail("Shouldn't have connected")
|
||||
|
||||
def test_mysql_innodb(self):
|
||||
"""
|
||||
Test that table creation on mysql only builds InnoDB tables
|
||||
"""
|
||||
# Test that table creation on mysql only builds InnoDB tables
|
||||
if not _have_mysql():
|
||||
self.skipTest("mysql not available")
|
||||
# add this to the global lists to make reset work with it, it's removed
|
||||
|
||||
@@ -109,7 +109,7 @@ class RootwrapTestCase(test.TestCase):
|
||||
p.wait()
|
||||
|
||||
def test_KillFilter_no_raise(self):
|
||||
"""Makes sure ValueError from bug 926412 is gone"""
|
||||
# Makes sure ValueError from bug 926412 is gone.
|
||||
f = filters.KillFilter("root", "")
|
||||
# Providing anything other than kill should be False
|
||||
usercmd = ['notkill', 999999]
|
||||
@@ -119,7 +119,7 @@ class RootwrapTestCase(test.TestCase):
|
||||
self.assertFalse(f.match(usercmd))
|
||||
|
||||
def test_KillFilter_deleted_exe(self):
|
||||
"""Makes sure deleted exe's are killed correctly"""
|
||||
# Makes sure deleted exe's are killed correctly.
|
||||
# See bug #967931.
|
||||
def fake_readlink(blah):
|
||||
return '/bin/commandddddd (deleted)'
|
||||
|
||||
@@ -57,7 +57,7 @@ class MockEntrypoint(pkg_resources.EntryPoint):
|
||||
|
||||
|
||||
class APITestCase(test.TestCase):
|
||||
"""Test case for the plugin api extension interface"""
|
||||
"""Test case for the plugin api extension interface."""
|
||||
def test_add_extension(self):
|
||||
def mock_load(_s):
|
||||
return TestPluginClass()
|
||||
|
||||
@@ -162,7 +162,7 @@ class PowerVMDriverTestCase(test.TestCase):
|
||||
self.assertEqual(state, power_state.RUNNING)
|
||||
|
||||
def test_spawn_cleanup_on_fail(self):
|
||||
"""Verify on a failed spawn, we get the original exception raised"""
|
||||
# Verify on a failed spawn, we get the original exception raised.
|
||||
# helper function
|
||||
def raise_(ex):
|
||||
raise ex
|
||||
|
||||
@@ -265,7 +265,7 @@ class XenAPIVolumeTestCase(stubs.XenAPITestBase):
|
||||
'dev/sd')
|
||||
|
||||
def test_attach_volume(self):
|
||||
"""This shows how to test Ops classes' methods."""
|
||||
# This shows how to test Ops classes' methods.
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVolumeTests)
|
||||
conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
|
||||
instance = db.instance_create(self.context, self.instance_values)
|
||||
@@ -281,7 +281,7 @@ class XenAPIVolumeTestCase(stubs.XenAPITestBase):
|
||||
self.assertEqual(vm_ref, vm)
|
||||
|
||||
def test_attach_volume_raise_exception(self):
|
||||
"""This shows how to test when exceptions are raised."""
|
||||
# This shows how to test when exceptions are raised.
|
||||
stubs.stubout_session(self.stubs,
|
||||
stubs.FakeSessionForVolumeFailedTests)
|
||||
conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
|
||||
@@ -636,7 +636,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
|
||||
self.assertTrue(instance['architecture'])
|
||||
|
||||
def test_spawn_empty_dns(self):
|
||||
"""Test spawning with an empty dns list"""
|
||||
# Test spawning with an empty dns list.
|
||||
self._test_spawn(IMAGE_VHD, None, None,
|
||||
os_type="linux", architecture="x86-64",
|
||||
empty_dns=True)
|
||||
@@ -858,7 +858,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
|
||||
str(3 * 10 * 1024))
|
||||
|
||||
def test_spawn_injected_files(self):
|
||||
"""Test spawning with injected_files"""
|
||||
# Test spawning with injected_files.
|
||||
actual_injected_files = []
|
||||
|
||||
def fake_inject_file(self, method, args):
|
||||
@@ -1340,7 +1340,7 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase):
|
||||
network_info, image_meta, resize_instance=False)
|
||||
|
||||
def test_migrate_no_auto_disk_config_no_resize_down(self):
|
||||
"""Resize down should fail when auto_disk_config not set"""
|
||||
# Resize down should fail when auto_disk_config not set.
|
||||
instance_values = self.instance_values
|
||||
instance_values['root_gb'] = 40
|
||||
instance_values['auto_disk_config'] = False
|
||||
@@ -1358,7 +1358,7 @@ class XenAPIImageTypeTestCase(test.TestCase):
|
||||
"""Test ImageType class."""
|
||||
|
||||
def test_to_string(self):
|
||||
"""Can convert from type id to type string."""
|
||||
# Can convert from type id to type string.
|
||||
self.assertEquals(
|
||||
vm_utils.ImageType.to_string(vm_utils.ImageType.KERNEL),
|
||||
vm_utils.ImageType.KERNEL_STR)
|
||||
@@ -1439,23 +1439,23 @@ class XenAPIDetermineIsPVTestCase(test.TestCase):
|
||||
|
||||
class CompareVersionTestCase(test.TestCase):
|
||||
def test_less_than(self):
|
||||
"""Test that cmp_version compares a as less than b"""
|
||||
# Test that cmp_version compares a as less than b.
|
||||
self.assertTrue(vmops.cmp_version('1.2.3.4', '1.2.3.5') < 0)
|
||||
|
||||
def test_greater_than(self):
|
||||
"""Test that cmp_version compares a as greater than b"""
|
||||
# Test that cmp_version compares a as greater than b.
|
||||
self.assertTrue(vmops.cmp_version('1.2.3.5', '1.2.3.4') > 0)
|
||||
|
||||
def test_equal(self):
|
||||
"""Test that cmp_version compares a as equal to b"""
|
||||
# Test that cmp_version compares a as equal to b.
|
||||
self.assertTrue(vmops.cmp_version('1.2.3.4', '1.2.3.4') == 0)
|
||||
|
||||
def test_non_lexical(self):
|
||||
"""Test that cmp_version compares non-lexically"""
|
||||
# Test that cmp_version compares non-lexically.
|
||||
self.assertTrue(vmops.cmp_version('1.2.3.10', '1.2.3.4') > 0)
|
||||
|
||||
def test_length(self):
|
||||
"""Test that cmp_version compares by length as last resort"""
|
||||
# Test that cmp_version compares by length as last resort.
|
||||
self.assertTrue(vmops.cmp_version('1.2.3', '1.2.3.4') < 0)
|
||||
|
||||
|
||||
@@ -1619,7 +1619,7 @@ class XenAPIAutoDiskConfigTestCase(stubs.XenAPITestBase):
|
||||
|
||||
@stub_vm_utils_with_vdi_attached_here
|
||||
def test_instance_auto_disk_config_doesnt_pass_fail_safes(self):
|
||||
"""Should not partition unless fail safes pass"""
|
||||
# Should not partition unless fail safes pass.
|
||||
self.instance_values['auto_disk_config'] = True
|
||||
|
||||
def fake_get_partitions(dev):
|
||||
@@ -1645,7 +1645,7 @@ class XenAPIAutoDiskConfigTestCase(stubs.XenAPITestBase):
|
||||
|
||||
|
||||
class XenAPIGenerateLocal(stubs.XenAPITestBase):
|
||||
"""Test generating of local disks, like swap and ephemeral"""
|
||||
"""Test generating of local disks, like swap and ephemeral."""
|
||||
def setUp(self):
|
||||
super(XenAPIGenerateLocal, self).setUp()
|
||||
self.flags(xenapi_connection_url='test_url',
|
||||
@@ -1697,7 +1697,7 @@ class XenAPIGenerateLocal(stubs.XenAPITestBase):
|
||||
self.assertTrue(self.called)
|
||||
|
||||
def test_generate_swap(self):
|
||||
"""Test swap disk generation."""
|
||||
# Test swap disk generation.
|
||||
instance = db.instance_create(self.context, self.instance_values)
|
||||
instance = db.instance_update(self.context, instance['uuid'],
|
||||
{'instance_type_id': 5})
|
||||
@@ -1714,7 +1714,7 @@ class XenAPIGenerateLocal(stubs.XenAPITestBase):
|
||||
self.assertCalled(instance)
|
||||
|
||||
def test_generate_ephemeral(self):
|
||||
"""Test ephemeral disk generation."""
|
||||
# Test ephemeral disk generation.
|
||||
instance = db.instance_create(self.context, self.instance_values)
|
||||
instance = db.instance_update(self.context, instance['uuid'],
|
||||
{'instance_type_id': 4})
|
||||
@@ -2136,7 +2136,7 @@ class XenAPIDom0IptablesFirewallTestCase(stubs.XenAPITestBase):
|
||||
class XenAPISRSelectionTestCase(stubs.XenAPITestBase):
|
||||
"""Unit tests for testing we find the right SR."""
|
||||
def test_safe_find_sr_raise_exception(self):
|
||||
"""Ensure StorageRepositoryNotFound is raise when wrong filter."""
|
||||
# Ensure StorageRepositoryNotFound is raise when wrong filter.
|
||||
self.flags(sr_matching_filter='yadayadayada')
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
|
||||
session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass',
|
||||
@@ -2145,7 +2145,7 @@ class XenAPISRSelectionTestCase(stubs.XenAPITestBase):
|
||||
vm_utils.safe_find_sr, session)
|
||||
|
||||
def test_safe_find_sr_local_storage(self):
|
||||
"""Ensure the default local-storage is found."""
|
||||
# Ensure the default local-storage is found.
|
||||
self.flags(sr_matching_filter='other-config:i18n-key=local-storage')
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
|
||||
session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass',
|
||||
@@ -2162,7 +2162,7 @@ class XenAPISRSelectionTestCase(stubs.XenAPITestBase):
|
||||
self.assertEqual(local_sr, expected)
|
||||
|
||||
def test_safe_find_sr_by_other_criteria(self):
|
||||
"""Ensure the SR is found when using a different filter."""
|
||||
# Ensure the SR is found when using a different filter.
|
||||
self.flags(sr_matching_filter='other-config:my_fake_sr=true')
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
|
||||
session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass',
|
||||
@@ -2176,7 +2176,7 @@ class XenAPISRSelectionTestCase(stubs.XenAPITestBase):
|
||||
self.assertEqual(local_sr, expected)
|
||||
|
||||
def test_safe_find_sr_default(self):
|
||||
"""Ensure the default SR is found regardless of other-config."""
|
||||
# Ensure the default SR is found regardless of other-config.
|
||||
self.flags(sr_matching_filter='default-sr:true')
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
|
||||
session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass',
|
||||
@@ -2283,7 +2283,7 @@ class XenAPIAggregateTestCase(stubs.XenAPITestBase):
|
||||
matchers.DictMatches(result['metadetails']))
|
||||
|
||||
def test_join_slave(self):
|
||||
"""Ensure join_slave gets called when the request gets to master."""
|
||||
# Ensure join_slave gets called when the request gets to master.
|
||||
def fake_join_slave(id, compute_uuid, host, url, user, password):
|
||||
fake_join_slave.called = True
|
||||
self.stubs.Set(self.conn._pool, "_join_slave", fake_join_slave)
|
||||
@@ -2338,7 +2338,7 @@ class XenAPIAggregateTestCase(stubs.XenAPITestBase):
|
||||
self.context, result, "test_host")
|
||||
|
||||
def test_remove_slave(self):
|
||||
"""Ensure eject slave gets called."""
|
||||
# Ensure eject slave gets called.
|
||||
def fake_eject_slave(id, compute_uuid, host_uuid):
|
||||
fake_eject_slave.called = True
|
||||
self.stubs.Set(self.conn._pool, "_eject_slave", fake_eject_slave)
|
||||
@@ -2350,7 +2350,7 @@ class XenAPIAggregateTestCase(stubs.XenAPITestBase):
|
||||
self.assertTrue(fake_eject_slave.called)
|
||||
|
||||
def test_remove_master_solo(self):
|
||||
"""Ensure metadata are cleared after removal."""
|
||||
# Ensure metadata are cleared after removal.
|
||||
def fake_clear_pool(id):
|
||||
fake_clear_pool.called = True
|
||||
self.stubs.Set(self.conn._pool, "_clear_pool", fake_clear_pool)
|
||||
@@ -2365,7 +2365,7 @@ class XenAPIAggregateTestCase(stubs.XenAPITestBase):
|
||||
matchers.DictMatches(result['metadetails']))
|
||||
|
||||
def test_remote_master_non_empty_pool(self):
|
||||
"""Ensure AggregateError is raised if removing the master."""
|
||||
# Ensure AggregateError is raised if removing the master.
|
||||
aggregate = self._aggregate_setup(hosts=['host', 'host2'],
|
||||
metadata=self.fake_metadata)
|
||||
|
||||
@@ -2415,7 +2415,7 @@ class XenAPIAggregateTestCase(stubs.XenAPITestBase):
|
||||
aggregate, 'fake_host')
|
||||
|
||||
def test_remove_host_from_aggregate_error(self):
|
||||
"""Ensure we can remove a host from an aggregate even if in error."""
|
||||
# Ensure we can remove a host from an aggregate even if in error.
|
||||
values = _create_service_entries(self.context)
|
||||
fake_zone = values.keys()[0]
|
||||
aggr = self.api.create_aggregate(self.context,
|
||||
@@ -2453,7 +2453,7 @@ class XenAPIAggregateTestCase(stubs.XenAPITestBase):
|
||||
aggregate, 'fake_host')
|
||||
|
||||
def test_add_aggregate_host_raise_err(self):
|
||||
"""Ensure the undo operation works correctly on add."""
|
||||
# Ensure the undo operation works correctly on add.
|
||||
def fake_driver_add_to_aggregate(context, aggregate, host, **_ignore):
|
||||
raise exception.AggregateError(
|
||||
aggregate_id='', action='', reason='')
|
||||
@@ -2492,7 +2492,7 @@ class MockComputeAPI(object):
|
||||
|
||||
|
||||
class StubDependencies(object):
|
||||
"""Stub dependencies for ResourcePool"""
|
||||
"""Stub dependencies for ResourcePool."""
|
||||
|
||||
def __init__(self):
|
||||
self.compute_rpcapi = MockComputeAPI()
|
||||
@@ -2511,7 +2511,7 @@ class StubDependencies(object):
|
||||
|
||||
|
||||
class ResourcePoolWithStubs(StubDependencies, pool.ResourcePool):
|
||||
"""A ResourcePool, use stub dependencies """
|
||||
"""A ResourcePool, use stub dependencies."""
|
||||
|
||||
|
||||
class HypervisorPoolTestCase(test.TestCase):
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""Stubouts, mocks and fixtures for the test suite"""
|
||||
"""Stubouts, mocks and fixtures for the test suite."""
|
||||
|
||||
import pickle
|
||||
import random
|
||||
@@ -54,7 +54,7 @@ def stubout_instance_snapshot(stubs):
|
||||
|
||||
def stubout_session(stubs, cls, product_version=(5, 6, 2),
|
||||
product_brand='XenServer', **opt_args):
|
||||
"""Stubs out methods from XenAPISession"""
|
||||
"""Stubs out methods from XenAPISession."""
|
||||
stubs.Set(xenapi_conn.XenAPISession, '_create_session',
|
||||
lambda s, url: cls(url, **opt_args))
|
||||
stubs.Set(xenapi_conn.XenAPISession, '_get_product_version_and_brand',
|
||||
@@ -90,7 +90,7 @@ def stubout_is_vdi_pv(stubs):
|
||||
|
||||
|
||||
def stubout_determine_is_pv_objectstore(stubs):
|
||||
"""Assumes VMs stu have PV kernels"""
|
||||
"""Assumes VMs stu have PV kernels."""
|
||||
|
||||
def f(*args):
|
||||
return False
|
||||
@@ -158,7 +158,7 @@ def _make_fake_vdi():
|
||||
|
||||
|
||||
class FakeSessionForVMTests(fake.SessionBase):
|
||||
"""Stubs out a XenAPISession for VM tests """
|
||||
"""Stubs out a XenAPISession for VM tests."""
|
||||
|
||||
_fake_iptables_save_output = ("# Generated by iptables-save v1.4.10 on "
|
||||
"Sun Nov 6 22:49:02 2011\n"
|
||||
@@ -204,7 +204,7 @@ class FakeSessionForVMTests(fake.SessionBase):
|
||||
|
||||
|
||||
class FakeSessionForFirewallTests(FakeSessionForVMTests):
|
||||
"""Stubs out a XenApi Session for doing IPTable Firewall tests """
|
||||
"""Stubs out a XenApi Session for doing IPTable Firewall tests."""
|
||||
|
||||
def __init__(self, uri, test_case=None):
|
||||
super(FakeSessionForFirewallTests, self).__init__(uri)
|
||||
@@ -270,7 +270,7 @@ def stub_out_vm_methods(stubs):
|
||||
|
||||
|
||||
class FakeSessionForVolumeTests(fake.SessionBase):
|
||||
"""Stubs out a XenAPISession for Volume tests """
|
||||
"""Stubs out a XenAPISession for Volume tests."""
|
||||
def VDI_introduce(self, _1, uuid, _2, _3, _4, _5,
|
||||
_6, _7, _8, _9, _10, _11):
|
||||
valid_vdi = False
|
||||
@@ -284,7 +284,7 @@ class FakeSessionForVolumeTests(fake.SessionBase):
|
||||
|
||||
|
||||
class FakeSessionForVolumeFailedTests(FakeSessionForVolumeTests):
|
||||
"""Stubs out a XenAPISession for Volume tests: it injects failures """
|
||||
"""Stubs out a XenAPISession for Volume tests: it injects failures."""
|
||||
def VDI_introduce(self, _1, uuid, _2, _3, _4, _5,
|
||||
_6, _7, _8, _9, _10, _11):
|
||||
# This is for testing failure
|
||||
|
||||
Reference in New Issue
Block a user