Clean unit tests in "benchmark.scenarios.lib.test_create_volume.py 25/47525/6
authorEmma Foley <emma.l.foley@intel.com>
Mon, 20 Nov 2017 15:20:49 +0000 (15:20 +0000)
committerEmma Foley <emma.l.foley@intel.com>
Mon, 22 Jan 2018 17:56:02 +0000 (17:56 +0000)
* Use mock_object.assert_called_with instead of
    self.assertTrue(mock_object.called)
* Remove an unneeded if clause in CreateVolume
* Add individual tests for each method in CreateVolume

Change-Id: I54cc56434d316f059b3822879145e6a299866fcb
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
tests/unit/benchmark/scenarios/lib/test_create_volume.py
yardstick/benchmark/scenarios/lib/create_volume.py

index fc63313..ef2c0cc 100644 (file)
@@ -9,28 +9,79 @@
 import unittest
 import mock
 
-from yardstick.benchmark.scenarios.lib.create_volume import CreateVolume
+import yardstick.benchmark.scenarios.lib.create_volume
 
 
 class CreateVolumeTestCase(unittest.TestCase):
 
+    def setUp(self):
+        self._mock_cinder_client = mock.patch(
+            'yardstick.common.openstack_utils.get_cinder_client')
+        self.mock_cinder_client = self._mock_cinder_client.start()
+        self._mock_glance_client = mock.patch(
+            'yardstick.common.openstack_utils.get_glance_client')
+        self.mock_glance_client = self._mock_glance_client.start()
+        self.addCleanup(self._stop_mock)
+
+        self.scenario_cfg = {
+            "options" :
+                {
+                    'volume_name': 'yardstick_test_volume_01',
+                    'size': '256',
+                    'image': 'cirros-0.3.5'
+                }
+            }
+
+        self.scenario = (
+            yardstick.benchmark.scenarios.lib.create_volume.CreateVolume(
+                scenario_cfg=self.scenario_cfg,
+                context_cfg={}))
+
+    def _stop_mock(self):
+        self._mock_cinder_client.stop()
+        self._mock_glance_client.stop()
+
+    def test_init(self):
+        self.mock_cinder_client.return_value = "All volumes are equal"
+        self.mock_glance_client.return_value = "Images are more equal"
+
+        expected_vol_name = self.scenario_cfg["options"]["volume_name"]
+        expected_vol_size = self.scenario_cfg["options"]["size"]
+        expected_im_name = self.scenario_cfg["options"]["image"]
+        expected_im_id = None
+
+        scenario = (
+            yardstick.benchmark.scenarios.lib.create_volume.CreateVolume(
+                scenario_cfg=self.scenario_cfg,
+                context_cfg={}))
+
+        self.assertEqual(expected_vol_name, scenario.volume_name)
+        self.assertEqual(expected_vol_size, scenario.volume_size)
+        self.assertEqual(expected_im_name, scenario.image_name)
+        self.assertEqual(expected_im_id, scenario.image_id)
+        self.assertEqual("All volumes are equal", scenario.cinder_client)
+        self.assertEqual("Images are more equal", scenario.glance_client)
+
+    def test_setup(self):
+        self.assertFalse(self.scenario.setup_done)
+        self.scenario.setup()
+        self.assertTrue(self.scenario.setup_done)
+
     @mock.patch('yardstick.common.openstack_utils.create_volume')
     @mock.patch('yardstick.common.openstack_utils.get_image_id')
-    @mock.patch('yardstick.common.openstack_utils.get_cinder_client')
-    @mock.patch('yardstick.common.openstack_utils.get_glance_client')
-    def test_create_volume(self, mock_get_glance_client, mock_get_cinder_client, mock_image_id, mock_create_volume):
-        options = {
-                'volume_name': 'yardstick_test_volume_01',
-                'size': '256',
-                'image': 'cirros-0.3.5'
-        }
-        args = {"options": options}
-        obj = CreateVolume(args, {})
-        obj.run({})
-        self.assertTrue(mock_create_volume.called)
-        self.assertTrue(mock_image_id.called)
-        self.assertTrue(mock_get_glance_client.called)
-        self.assertTrue(mock_get_cinder_client.called)
+    def test_run(self, mock_image_id, mock_create_volume):
+        self.scenario.run()
+
+        mock_image_id.assert_called_once()
+        mock_create_volume.assert_called_once()
+
+    @mock.patch.object(
+        yardstick.benchmark.scenarios.lib.create_volume.CreateVolume, 'setup')
+    def test_run_no_setup(self, scenario_setup):
+        self.scenario.setup_done = False
+        self.scenario.run()
+        scenario_setup.assert_called_once()
+
 
 def main():
     unittest.main()
index c7086d0..df523a5 100644 (file)
@@ -44,22 +44,21 @@ class CreateVolume(base.Scenario):
 
         self.setup_done = True
 
-    def run(self, result):
+    def run(self):
         """execute the test"""
 
         if not self.setup_done:
             self.setup()
 
-        if self.image_name:
-            self.image_id = op_utils.get_image_id(self.glance_client,
-                                                  self.image_name)
+        self.image_id = op_utils.get_image_id(self.glance_client,
+                                              self.image_name)
 
         volume = op_utils.create_volume(self.cinder_client, self.volume_name,
                                         self.volume_size, self.image_id)
 
         status = volume.status
         while(status == 'creating' or status == 'downloading'):
-            LOG.info("Volume status is: %s" % status)
+            LOG.info("Volume status is: %s", status)
             time.sleep(5)
             volume = op_utils.get_volume_by_name(self.volume_name)
             status = volume.status