Skip to content

Commit

Permalink
Merge "VMware: Consolidate fake_session in test_(vm|ds)_util"
Browse files Browse the repository at this point in the history
  • Loading branch information
Jenkins authored and openstack-gerrit committed Jul 18, 2014
2 parents 27fbfac + 13b8714 commit 0b3f458
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 99 deletions.
34 changes: 34 additions & 0 deletions nova/tests/virt/vmwareapi/fake.py
Original file line number Diff line number Diff line change
Expand Up @@ -994,6 +994,40 @@ def create(self, obj_name):
return DataObject(obj_name)


class FakeSession(object):
"""Fake Session Class."""

def __init__(self):
self.vim = FakeVim()

def _get_vim(self):
return self.vim

def _call_method(self, module, method, *args, **kwargs):
raise NotImplementedError()

def _wait_for_task(self, task_ref):
raise NotImplementedError()


class FakeObjectRetrievalSession(FakeSession):
"""A session for faking object retrieval tasks.
_call_method() returns a given set of objects
sequentially, regardless of the method called.
"""

def __init__(self, *ret):
super(FakeObjectRetrievalSession, self).__init__()
self.ret = ret
self.ind = 0

def _call_method(self, module, method, *args, **kwargs):
# return fake objects in a circular manner
self.ind = (self.ind + 1) % len(self.ret)
return self.ret[self.ind - 1]


class FakeVim(object):
"""Fake VIM Class."""

Expand Down
81 changes: 35 additions & 46 deletions nova/tests/virt/vmwareapi/test_ds_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,32 +23,10 @@
from nova.virt.vmwareapi import error_util


class fake_session(object):
def __init__(self, ret=None):
self.ret = ret

def _get_vim(self):
return fake.FakeVim()

def _call_method(self, module, method, *args, **kwargs):
return self.ret

def _wait_for_task(self, task_ref):
task_info = self._call_method('module', "get_dynamic_property",
task_ref, "Task", "info")
if task_info.state == 'success':
return task_info
else:
error_info = 'fake error'
error = task_info.error
name = error.fault.__class__.__name__
raise error_util.get_fault_class(name)(error_info)


class DsUtilTestCase(test.NoDBTestCase):
def setUp(self):
super(DsUtilTestCase, self).setUp()
self.session = fake_session()
self.session = fake.FakeSession()
self.flags(api_retry_count=1, group='vmware')
fake.reset()

Expand Down Expand Up @@ -126,22 +104,31 @@ def fake_call_method(module, method, *args, **kwargs):
datastorePath = kwargs.get('datastorePath')
self.assertEqual('fake-path', datastorePath)
return 'fake_exists_task'
elif method == 'get_dynamic_property':
info = fake.DataObject()
info.name = 'search_task'
info.state = 'success'

# Should never get here
self.fail()

def fake_wait_for_task(task_ref):
if task_ref == 'fake_exists_task':
result_file = fake.DataObject()
result_file.path = 'fake-file'

result = fake.DataObject()
result.path = 'fake-path'
matched = fake.DataObject()
matched.path = 'fake-file'
result.file = [matched]
info.result = result
return info
result.file = [result_file]

task_info = fake.DataObject()
task_info.result = result

return task_info

# Should never get here
self.fail()

with mock.patch.object(self.session, '_call_method',
fake_call_method):
with contextlib.nested(
mock.patch.object(self.session, '_call_method',
fake_call_method),
mock.patch.object(self.session, '_wait_for_task',
fake_wait_for_task)):
file_exists = ds_util.file_exists(self.session,
'fake-browser', 'fake-path', 'fake-file')
self.assertTrue(file_exists)
Expand All @@ -150,20 +137,22 @@ def test_file_exists_fails(self):
def fake_call_method(module, method, *args, **kwargs):
if method == 'SearchDatastore_Task':
return 'fake_exists_task'
elif method == 'get_dynamic_property':
info = fake.DataObject()
info.name = 'search_task'
info.state = 'error'
error = fake.DataObject()
error.localizedMessage = "Error message"
error.fault = fake.FileNotFound()
info.error = error
return info

# Should never get here
self.fail()

with mock.patch.object(self.session, '_call_method',
fake_call_method):
def fake_wait_for_task(task_ref):
if task_ref == 'fake_exists_task':
raise error_util.FileNotFoundException()

# Should never get here
self.fail()

with contextlib.nested(
mock.patch.object(self.session, '_call_method',
fake_call_method),
mock.patch.object(self.session, '_wait_for_task',
fake_wait_for_task)):
file_exists = ds_util.file_exists(self.session,
'fake-browser', 'fake-path', 'fake-file')
self.assertFalse(file_exists)
Expand Down
3 changes: 1 addition & 2 deletions nova/tests/virt/vmwareapi/test_vif.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
from nova.tests import matchers
from nova.tests import utils
from nova.tests.virt.vmwareapi import fake
from nova.tests.virt.vmwareapi import test_vm_util
from nova.virt.vmwareapi import error_util
from nova.virt.vmwareapi import network_util
from nova.virt.vmwareapi import vif
Expand Down Expand Up @@ -54,7 +53,7 @@ def setUp(self):
ovs_interfaceid=None,
rxtx_cap=3)
])[0]
self.session = test_vm_util.fake_session()
self.session = fake.FakeSession()
self.cluster = None

def tearDown(self):
Expand Down
Loading

0 comments on commit 0b3f458

Please sign in to comment.