]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Add basic unit tests for Downburst 459/head
authorZack Cerza <zack@redhat.com>
Thu, 9 Apr 2015 16:33:26 +0000 (10:33 -0600)
committerZack Cerza <zack@redhat.com>
Thu, 9 Apr 2015 19:39:32 +0000 (13:39 -0600)
Signed-off-by: Zack Cerza <zack@redhat.com>
teuthology/test/test_provision.py [new file with mode: 0644]

diff --git a/teuthology/test/test_provision.py b/teuthology/test/test_provision.py
new file mode 100644 (file)
index 0000000..3a6ff0c
--- /dev/null
@@ -0,0 +1,103 @@
+from mock import Mock, MagicMock, patch
+
+from teuthology import provision
+
+
+class TestDownburst(object):
+    def setup(self):
+        self.ctx = Mock()
+        self.ctx.os_type = 'rhel'
+        self.ctx.os_version = '7.0'
+        self.ctx.config = dict()
+        self.name = 'vpm999'
+        self.status = dict(
+            vm_host=dict(name='host999'),
+            is_vm=True,
+        )
+
+    def test_create_if_vm_success(self):
+        name = self.name
+        ctx = self.ctx
+        status = self.status
+
+        dbrst = provision.Downburst(name, ctx.os_type, ctx.os_version, status)
+        dbrst.create = MagicMock(name='create')
+        dbrst.create.return_value = True
+        dbrst._run_create = MagicMock(name='_run_create')
+        dbrst._run_create.return_value = True
+        dbrst.build_config = MagicMock(name='build_config')
+        dbrst.remove_config = MagicMock(name='remove_config')
+
+        result = provision.create_if_vm(ctx, name, dbrst)
+        assert result is True
+
+        dbrst.create.assert_called_once()
+        dbrst._run_create.assert_called_once()
+        dbrst.build_config.assert_called_once()
+        dbrst.remove_config.assert_called_once()
+
+    def test_destroy_if_vm_success(self):
+        name = self.name
+        ctx = self.ctx
+        status = self.status
+
+        dbrst = provision.Downburst(name, ctx.os_type, ctx.os_version, status)
+        dbrst.destroy = MagicMock(name='destroy')
+        dbrst.destroy.return_value = True
+
+        result = provision.destroy_if_vm(ctx, name, _downburst=dbrst)
+        assert result is True
+
+        dbrst.destroy.assert_called_once()
+
+    def test_destroy_if_vm_wrong_owner(self):
+        name = self.name
+        ctx = self.ctx
+        status = self.status
+        status['locked_by'] = 'user@a'
+
+        dbrst = provision.Downburst(name, ctx.os_type, ctx.os_version, status)
+        dbrst.destroy = MagicMock(name='destroy')
+        dbrst.destroy.return_value = True
+
+        result = provision.destroy_if_vm(ctx, name, user='user@b',
+                                         _downburst=dbrst)
+        assert result is False
+
+        dbrst.destroy.assert_called_once()
+
+    def test_destroy_if_vm_wrong_description(self):
+        name = self.name
+        ctx = self.ctx
+        status = self.status
+        status['description'] = 'desc_a'
+
+        dbrst = provision.Downburst(name, ctx.os_type, ctx.os_version, status)
+        dbrst.destroy = MagicMock(name='destroy')
+        dbrst.destroy.return_value = True
+
+        result = provision.destroy_if_vm(ctx, name, description='desc_b',
+                                         _downburst=dbrst)
+        assert result is False
+
+        dbrst.destroy.assert_called_once()
+
+    @patch('teuthology.provision.downburst_executable')
+    def test_create_fails_without_executable(self, m_exec):
+        name = self.name
+        ctx = self.ctx
+        status = self.status
+        m_exec.return_value = ''
+        dbrst = provision.Downburst(name, ctx.os_type, ctx.os_version, status)
+        result = dbrst.create()
+        assert result is False
+
+    @patch('teuthology.provision.downburst_executable')
+    def test_destroy_fails_without_executable(self, m_exec):
+        name = self.name
+        ctx = self.ctx
+        status = self.status
+        m_exec.return_value = ''
+        dbrst = provision.Downburst(name, ctx.os_type, ctx.os_version, status)
+        result = dbrst.destroy()
+        assert result is False