summaryrefslogtreecommitdiff
path: root/tests/objects/test_datastore.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/objects/test_datastore.py')
-rw-r--r--tests/objects/test_datastore.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/objects/test_datastore.py b/tests/objects/test_datastore.py
index 7044cfb..411c786 100644
--- a/tests/objects/test_datastore.py
+++ b/tests/objects/test_datastore.py
@@ -12,11 +12,29 @@
# License for the specific language governing permissions and limitations
# under the License.
+import mock
+
from oslo.vmware.objects import datastore
from oslo.vmware.openstack.common import units
+from oslo.vmware import vim_util
from tests import base
+class HostMount(object):
+
+ def __init__(self, key, mountInfo):
+ self.key = key
+ self.mountInfo = mountInfo
+
+
+class MountInfo(object):
+
+ def __init__(self, accessMode, mounted, accessible):
+ self.accessMode = accessMode
+ self.mounted = mounted
+ self.accessible = accessible
+
+
class DatastoreTestCase(base.TestCase):
"""Test the Datastore object."""
@@ -49,6 +67,57 @@ class DatastoreTestCase(base.TestCase):
ds_path = ds.build_path("some_dir", "foo.vmdk")
self.assertEqual('[ds_name] some_dir/foo.vmdk', str(ds_path))
+ def test_get_summary(self):
+ ds_ref = vim_util.get_moref('ds-0', 'Datastore')
+ ds = datastore.Datastore(ds_ref, 'ds-name')
+ summary = mock.sentinel.summary
+ session = mock.Mock()
+ session.invoke_api = mock.Mock()
+ session.invoke_api.return_value = summary
+ ret = ds.get_summary(session)
+ self.assertEqual(summary, ret)
+ session.invoke_api.assert_called_once_with(vim_util,
+ 'get_object_property',
+ session.vim,
+ ds.ref, 'summary')
+
+ def test_get_connected_hosts(self):
+ session = mock.Mock()
+ ds_ref = vim_util.get_moref('ds-0', 'Datastore')
+ ds = datastore.Datastore(ds_ref, 'ds-name')
+ ds.get_summary = mock.Mock()
+ ds.get_summary.return_value.accessible = False
+ self.assertEqual([], ds.get_connected_hosts(session))
+ ds.get_summary.return_value.accessible = True
+ m1 = HostMount("m1", MountInfo('readWrite', True, True))
+ m2 = HostMount("m2", MountInfo('read', True, True))
+ m3 = HostMount("m3", MountInfo('readWrite', False, True))
+ m4 = HostMount("m4", MountInfo('readWrite', True, False))
+
+ class Prop(object):
+ DatastoreHostMount = [m1, m2, m3, m4]
+ session.invoke_api = mock.Mock()
+ session.invoke_api.return_value = Prop()
+ hosts = ds.get_connected_hosts(session)
+ self.assertEqual(1, len(hosts))
+ self.assertEqual("m1", hosts.pop())
+
+ def test_is_datastore_mount_usable(self):
+ m = MountInfo('readWrite', True, True)
+ self.assertTrue(datastore.Datastore.is_datastore_mount_usable(m))
+ m = MountInfo('read', True, True)
+ self.assertFalse(datastore.Datastore.is_datastore_mount_usable(m))
+ m = MountInfo('readWrite', False, True)
+ self.assertFalse(datastore.Datastore.is_datastore_mount_usable(m))
+ m = MountInfo('readWrite', True, False)
+ self.assertFalse(datastore.Datastore.is_datastore_mount_usable(m))
+ m = MountInfo('readWrite', False, False)
+ self.assertFalse(datastore.Datastore.is_datastore_mount_usable(m))
+ m = MountInfo('readWrite', None, None)
+ self.assertFalse(datastore.Datastore.is_datastore_mount_usable(m))
+ m = MountInfo('readWrite', None, True)
+ self.assertFalse(datastore.Datastore.is_datastore_mount_usable(m))
+
class DatastorePathTestCase(base.TestCase):