Merge "test_pktgen_dpdk_throughput: speedup unittest, mock time.sleep()"
[yardstick.git] / tests / unit / common / test_utils.py
index 002d049..e21e5fa 100644 (file)
@@ -9,6 +9,7 @@
 
 # Unittest for yardstick.common.utils
 
+from __future__ import absolute_import
 import os
 import mock
 import unittest
@@ -17,9 +18,10 @@ from yardstick.common import utils
 
 
 class IterSubclassesTestCase(unittest.TestCase):
-# Disclaimer: this class is a modified copy from
-# rally/tests/unit/common/plugin/test_discover.py
-# Copyright 2015: Mirantis Inc.
+    # Disclaimer: this class is a modified copy from
+    # rally/tests/unit/common/plugin/test_discover.py
+    # Copyright 2015: Mirantis Inc.
+
     def test_itersubclasses(self):
         class A(object):
             pass
@@ -83,6 +85,116 @@ class ImportModulesFromPackageTestCase(unittest.TestCase):
         mock_importutils.import_module.assert_called_with('bar.baz')
 
 
+class GetParaFromYaml(unittest.TestCase):
+
+    @mock.patch('yardstick.common.utils.os.environ.get')
+    def test_get_param_para_not_found(self, get_env):
+        file_path = 'config_sample.yaml'
+        get_env.return_value = self._get_file_abspath(file_path)
+        args = 'releng.file'
+        default = 'hello'
+        self.assertTrue(utils.get_param(args, default), default)
+
+    @mock.patch('yardstick.common.utils.os.environ.get')
+    def test_get_param_para_exists(self, get_env):
+        file_path = 'config_sample.yaml'
+        get_env.return_value = self._get_file_abspath(file_path)
+        args = 'releng.dir'
+        para = '/home/opnfv/repos/releng'
+        self.assertEqual(para, utils.get_param(args))
+
+    def _get_file_abspath(self, filename):
+        curr_path = os.path.dirname(os.path.abspath(__file__))
+        file_path = os.path.join(curr_path, filename)
+        return file_path
+
+
+class CommonUtilTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.data = {
+            "benchmark": {
+                "data": {
+                    "mpstat": {
+                        "cpu0": {
+                            "%sys": "0.00",
+                            "%idle": "99.00"
+                        },
+                        "loadavg": [
+                            "1.09",
+                            "0.29"
+                        ]
+                    },
+                    "rtt": "1.03"
+                }
+            }
+        }
+
+    def test__dict_key_flatten(self):
+        line = 'mpstat.loadavg1=0.29,rtt=1.03,mpstat.loadavg0=1.09,' \
+               'mpstat.cpu0.%idle=99.00,mpstat.cpu0.%sys=0.00'
+        # need to sort for assert to work
+        line = ",".join(sorted(line.split(',')))
+        flattened_data = utils.flatten_dict_key(
+            self.data['benchmark']['data'])
+        result = ",".join(
+            ("=".join(item) for item in sorted(flattened_data.items())))
+        self.assertEqual(result, line)
+
+
+class TranslateToStrTestCase(unittest.TestCase):
+
+    def test_translate_to_str_unicode(self):
+        input_str = u'hello'
+        output_str = utils.translate_to_str(input_str)
+
+        result = 'hello'
+        self.assertEqual(result, output_str)
+
+    def test_translate_to_str_dict_list_unicode(self):
+        input_str = {
+            u'hello': {u'hello': [u'world']}
+        }
+        output_str = utils.translate_to_str(input_str)
+
+        result = {
+            'hello': {'hello': ['world']}
+        }
+        self.assertEqual(result, output_str)
+
+
+class ChangeObjToDictTestCase(unittest.TestCase):
+
+    def test_change_obj_to_dict(self):
+        class A(object):
+            def __init__(self):
+                self.name = 'yardstick'
+
+        obj = A()
+        obj_r = utils.change_obj_to_dict(obj)
+        obj_s = {'name': 'yardstick'}
+        self.assertEqual(obj_r, obj_s)
+
+
+class SetDictValueTestCase(unittest.TestCase):
+
+    def test_set_dict_value(self):
+        input_dic = {
+            'hello': 'world'
+        }
+        output_dic = utils.set_dict_value(input_dic, 'welcome.to', 'yardstick')
+        self.assertEqual(output_dic.get('welcome', {}).get('to'), 'yardstick')
+
+
+class RemoveFileTestCase(unittest.TestCase):
+
+    def test_remove_file(self):
+        try:
+            utils.remove_file('notexistfile.txt')
+        except Exception as e:
+            self.assertTrue(isinstance(e, OSError))
+
+
 def main():
     unittest.main()