addressed termies review (first round)
This commit is contained in:
@@ -1,106 +0,0 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# Copyright (c) 2011 Citrix Systems, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
"""This modules stubs out functions in nova.utils
|
||||
"""
|
||||
|
||||
import re
|
||||
import types
|
||||
|
||||
from eventlet import greenthread
|
||||
|
||||
from nova import exception
|
||||
from nova import log as logging
|
||||
from nova import utils
|
||||
|
||||
LOG = logging.getLogger('nova.tests.fake_utils')
|
||||
|
||||
_fake_execute_repliers = []
|
||||
_fake_execute_log = []
|
||||
|
||||
|
||||
def fake_execute_get_log():
|
||||
global _fake_execute_log
|
||||
return _fake_execute_log
|
||||
|
||||
|
||||
def fake_execute_clear_log():
|
||||
global _fake_execute_log
|
||||
_fake_execute_log = []
|
||||
|
||||
|
||||
def fake_execute_set_repliers(repliers):
|
||||
"""Allows the client to configure replies to commands"""
|
||||
global _fake_execute_repliers
|
||||
_fake_execute_repliers = repliers
|
||||
|
||||
|
||||
def fake_execute_default_reply_handler(*ignore_args, **ignore_kwargs):
|
||||
"""A reply handler for commands that haven't been added to the reply
|
||||
list. Returns empty strings for stdout and stderr
|
||||
"""
|
||||
return '', ''
|
||||
|
||||
|
||||
def fake_execute(*cmd, **kwargs):
|
||||
"""This function stubs out execute, optionally executing
|
||||
a preconfigued function to return expected data
|
||||
"""
|
||||
global _fake_execute_repliers
|
||||
|
||||
process_input = kwargs.get('process_input', None)
|
||||
addl_env = kwargs.get('addl_env', None)
|
||||
check_exit_code = kwargs.get('check_exit_code', 0)
|
||||
cmd_map = map(str, cmd)
|
||||
cmd_str = ' '.join(cmd_map)
|
||||
|
||||
LOG.debug(_("Faking execution of cmd (subprocess): %s"), cmd_str)
|
||||
_fake_execute_log.append(cmd_str)
|
||||
|
||||
reply_handler = fake_execute_default_reply_handler
|
||||
|
||||
for fake_replier in _fake_execute_repliers:
|
||||
if re.match(fake_replier[0], cmd_str):
|
||||
reply_handler = fake_replier[1]
|
||||
LOG.debug(_('Faked command matched %s') % fake_replier[0])
|
||||
break
|
||||
|
||||
if isinstance(reply_handler, types.StringTypes):
|
||||
# If the reply handler is a string, return it as stdout
|
||||
reply = reply_handler, ''
|
||||
else:
|
||||
try:
|
||||
# Alternative is a function, so call it
|
||||
reply = reply_handler(cmd,
|
||||
process_input=process_input,
|
||||
addl_env=addl_env,
|
||||
check_exit_code=check_exit_code)
|
||||
except exception.ProcessExecutionError as e:
|
||||
LOG.debug(_('Faked command raised an exception %s' % str(e)))
|
||||
raise
|
||||
|
||||
LOG.debug(_("Reply to faked command is stdout='%(0)s' stderr='%(1)s'") %
|
||||
{'0': reply[0], '1': reply[1]})
|
||||
|
||||
# Replicate the sleep call in the real function
|
||||
greenthread.sleep(0)
|
||||
return reply
|
||||
|
||||
|
||||
def stub_out_utils_execute(stubs):
|
||||
fake_execute_set_repliers([])
|
||||
fake_execute_clear_log()
|
||||
stubs.Set(utils, 'execute', fake_execute)
|
@@ -15,7 +15,7 @@
|
||||
# under the License.
|
||||
|
||||
"""
|
||||
Test suite for XenAPI
|
||||
Test suite for XenAPI.
|
||||
"""
|
||||
|
||||
import functools
|
||||
@@ -66,7 +66,7 @@ def stub_vm_utils_with_vdi_attached_here(function, should_return=True):
|
||||
|
||||
class XenAPIVolumeTestCase(test.TestCase):
|
||||
"""
|
||||
Unit tests for Volume operations
|
||||
Unit tests for Volume operations.
|
||||
"""
|
||||
def setUp(self):
|
||||
super(XenAPIVolumeTestCase, self).setUp()
|
||||
@@ -76,7 +76,6 @@ class XenAPIVolumeTestCase(test.TestCase):
|
||||
FLAGS.xenapi_connection_url = 'test_url'
|
||||
FLAGS.xenapi_connection_password = 'test_pass'
|
||||
db_fakes.stub_out_db_instance_api(self.stubs)
|
||||
#db_fakes.stub_out_db_network_api(self.stubs)
|
||||
stubs.stub_out_get_target(self.stubs)
|
||||
xenapi_fake.reset()
|
||||
self.values = {'id': 1,
|
||||
@@ -102,7 +101,7 @@ class XenAPIVolumeTestCase(test.TestCase):
|
||||
return db.volume_create(self.context, vol)
|
||||
|
||||
def test_create_iscsi_storage(self):
|
||||
""" This shows how to test helper classes' methods """
|
||||
"""This shows how to test helper classes' methods."""
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVolumeTests)
|
||||
session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass')
|
||||
helper = volume_utils.VolumeHelper
|
||||
@@ -117,7 +116,7 @@ class XenAPIVolumeTestCase(test.TestCase):
|
||||
db.volume_destroy(context.get_admin_context(), vol['id'])
|
||||
|
||||
def test_parse_volume_info_raise_exception(self):
|
||||
""" This shows how to test helper classes' methods """
|
||||
"""This shows how to test helper classes' methods."""
|
||||
stubs.stubout_session(self.stubs, stubs.FakeSessionForVolumeTests)
|
||||
session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass')
|
||||
helper = volume_utils.VolumeHelper
|
||||
@@ -131,7 +130,7 @@ class XenAPIVolumeTestCase(test.TestCase):
|
||||
db.volume_destroy(context.get_admin_context(), vol['id'])
|
||||
|
||||
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.get_connection(False)
|
||||
volume = self._create_volume()
|
||||
@@ -150,7 +149,7 @@ class XenAPIVolumeTestCase(test.TestCase):
|
||||
check()
|
||||
|
||||
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.get_connection(False)
|
||||
@@ -174,7 +173,7 @@ def reset_network(*args):
|
||||
|
||||
class XenAPIVMTestCase(test.TestCase):
|
||||
"""
|
||||
Unit tests for VM operations
|
||||
Unit tests for VM operations.
|
||||
"""
|
||||
def setUp(self):
|
||||
super(XenAPIVMTestCase, self).setUp()
|
||||
@@ -475,21 +474,21 @@ class XenAPIVMTestCase(test.TestCase):
|
||||
network_manager='nova.network.manager.VlanManager',
|
||||
network_driver='nova.network.xenapi_net',
|
||||
vlan_interface='fake0')
|
||||
#reset network table
|
||||
# Reset network table
|
||||
xenapi_fake.reset_table('network')
|
||||
#instance id = 2 will use vlan network (see db/fakes.py)
|
||||
# Instance id = 2 will use vlan network (see db/fakes.py)
|
||||
fake_instance_id = 2
|
||||
network_bk = self.network
|
||||
#ensure we use xenapi_net driver
|
||||
# Ensure we use xenapi_net driver
|
||||
self.network = utils.import_object(FLAGS.network_manager)
|
||||
self.network.setup_compute_network(None, fake_instance_id)
|
||||
self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE,
|
||||
glance_stubs.FakeGlance.IMAGE_KERNEL,
|
||||
glance_stubs.FakeGlance.IMAGE_RAMDISK,
|
||||
instance_id=fake_instance_id)
|
||||
#TODO(salvatore-orlando): a complete test here would require
|
||||
#a check for making sure the bridge for the VM's VIF is
|
||||
#consistent with bridge specified in nova db
|
||||
# TODO(salvatore-orlando): a complete test here would require
|
||||
# A check for making sure the bridge for the VM's VIF is
|
||||
# consistent with bridge specified in nova db
|
||||
self.network = network_bk
|
||||
|
||||
def test_spawn_with_network_qos(self):
|
||||
@@ -521,7 +520,7 @@ class XenAPIVMTestCase(test.TestCase):
|
||||
self.stubs.UnsetAll()
|
||||
|
||||
def _create_instance(self):
|
||||
"""Creates and spawns a test instance"""
|
||||
"""Creates and spawns a test instance."""
|
||||
stubs.stubout_loopingcall_start(self.stubs)
|
||||
values = {
|
||||
'id': 1,
|
||||
@@ -540,7 +539,7 @@ class XenAPIVMTestCase(test.TestCase):
|
||||
|
||||
class XenAPIDiffieHellmanTestCase(test.TestCase):
|
||||
"""
|
||||
Unit tests for Diffie-Hellman code
|
||||
Unit tests for Diffie-Hellman code.
|
||||
"""
|
||||
def setUp(self):
|
||||
super(XenAPIDiffieHellmanTestCase, self).setUp()
|
||||
@@ -566,7 +565,7 @@ class XenAPIDiffieHellmanTestCase(test.TestCase):
|
||||
|
||||
class XenAPIMigrateInstance(test.TestCase):
|
||||
"""
|
||||
Unit test for verifying migration-related actions
|
||||
Unit test for verifying migration-related actions.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
@@ -623,7 +622,7 @@ class XenAPIMigrateInstance(test.TestCase):
|
||||
|
||||
class XenAPIDetermineDiskImageTestCase(test.TestCase):
|
||||
"""
|
||||
Unit tests for code that detects the ImageType
|
||||
Unit tests for code that detects the ImageType.
|
||||
"""
|
||||
def setUp(self):
|
||||
super(XenAPIDetermineDiskImageTestCase, self).setUp()
|
||||
@@ -644,7 +643,7 @@ class XenAPIDetermineDiskImageTestCase(test.TestCase):
|
||||
|
||||
def test_instance_disk(self):
|
||||
"""
|
||||
If a kernel is specified then the image type is DISK (aka machine)
|
||||
If a kernel is specified then the image type is DISK (aka machine).
|
||||
"""
|
||||
FLAGS.xenapi_image_service = 'objectstore'
|
||||
self.fake_instance.image_id = glance_stubs.FakeGlance.IMAGE_MACHINE
|
||||
|
Reference in New Issue
Block a user