Merge "testcase: add rate parameter for spec cpu 2006"
[yardstick.git] / tests / unit / network_services / vnf_generic / vnf / test_iniparser.py
index 53481dd..15d6ade 100644 (file)
 #
 
 from __future__ import absolute_import
+
 import unittest
 from contextlib import contextmanager
-
 import mock
 
-STL_MOCKS = {
-    'stl': mock.MagicMock(),
-    'stl.trex_stl_lib': mock.MagicMock(),
-    'stl.trex_stl_lib.base64': mock.MagicMock(),
-    'stl.trex_stl_lib.binascii': mock.MagicMock(),
-    'stl.trex_stl_lib.collections': mock.MagicMock(),
-    'stl.trex_stl_lib.copy': mock.MagicMock(),
-    'stl.trex_stl_lib.datetime': mock.MagicMock(),
-    'stl.trex_stl_lib.functools': mock.MagicMock(),
-    'stl.trex_stl_lib.imp': mock.MagicMock(),
-    'stl.trex_stl_lib.inspect': mock.MagicMock(),
-    'stl.trex_stl_lib.json': mock.MagicMock(),
-    'stl.trex_stl_lib.linecache': mock.MagicMock(),
-    'stl.trex_stl_lib.math': mock.MagicMock(),
-    'stl.trex_stl_lib.os': mock.MagicMock(),
-    'stl.trex_stl_lib.platform': mock.MagicMock(),
-    'stl.trex_stl_lib.pprint': mock.MagicMock(),
-    'stl.trex_stl_lib.random': mock.MagicMock(),
-    'stl.trex_stl_lib.re': mock.MagicMock(),
-    'stl.trex_stl_lib.scapy': mock.MagicMock(),
-    'stl.trex_stl_lib.socket': mock.MagicMock(),
-    'stl.trex_stl_lib.string': mock.MagicMock(),
-    'stl.trex_stl_lib.struct': mock.MagicMock(),
-    'stl.trex_stl_lib.sys': mock.MagicMock(),
-    'stl.trex_stl_lib.threading': mock.MagicMock(),
-    'stl.trex_stl_lib.time': mock.MagicMock(),
-    'stl.trex_stl_lib.traceback': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_async_client': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_client': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_exceptions': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_ext': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_jsonrpc_client': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_packet_builder_interface': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_packet_builder_scapy': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_port': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_stats': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_streams': mock.MagicMock(),
-    'stl.trex_stl_lib.trex_stl_types': mock.MagicMock(),
-    'stl.trex_stl_lib.types': mock.MagicMock(),
-    'stl.trex_stl_lib.utils': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.argparse': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.collections': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.common': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.json': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.os': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.parsing_opts': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.pwd': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.random': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.re': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.string': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.sys': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.text_opts': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.text_tables': mock.MagicMock(),
-    'stl.trex_stl_lib.utils.texttable': mock.MagicMock(),
-    'stl.trex_stl_lib.warnings': mock.MagicMock(),
-    'stl.trex_stl_lib.yaml': mock.MagicMock(),
-    'stl.trex_stl_lib.zlib': mock.MagicMock(),
-    'stl.trex_stl_lib.zmq': mock.MagicMock(),
-}
+from tests.unit import STL_MOCKS
+
 
 STLClient = mock.MagicMock()
 stl_patch = mock.patch.dict("sys.modules", STL_MOCKS)
@@ -102,6 +45,7 @@ key4=
 [section2]
 # here is a comment line
 list2: value5
+key with no value
 ; another comment line
 key5=
 """
@@ -125,16 +69,11 @@ PARSE_TEXT_BAD_3 = """\
 """
 
 PARSE_TEXT_BAD_4 = """\
-[section1]
-no list or key
-"""
-
-PARSE_TEXT_BAD_5 = """\
 [section1]
     bad continuation
 """
 
-PARSE_TEXT_BAD_6 = """\
+PARSE_TEXT_BAD_5 = """\
 [section1]
 =value with no key
 """
@@ -163,7 +102,7 @@ class TestBaseParser(unittest.TestCase):
 
         parser = BaseParser()
 
-        self.assertIsNone(parser.parse())
+        parser.parse([])
 
     def test_not_implemented_methods(self):
         parser = BaseParser()
@@ -189,39 +128,49 @@ class TestConfigParser(unittest.TestCase):
     def test_parse(self, mock_open):
         mock_open.side_effect = self.make_open(PARSE_TEXT_1)
 
-        config_parser = ConfigParser('my_file', {})
+        config_parser = ConfigParser('my_file', [])
         config_parser.parse()
 
-        expected = {
-            'section1': [
-                ['key1', 'value1'],
-                ['list1', 'value2\nvalue3\nvalue4'],
-                ['key2', 'double quote value'],
-                ['key3', 'single quote value'],
-                ['key4', ''],
+        expected = [
+            [
+                'section1',
+                [
+                    ['key1', 'value1'],
+                    ['list1', 'value2\nvalue3\nvalue4'],
+                    ['key2', 'double quote value'],
+                    ['key3', 'single quote value'],
+                    ['key4', ''],
+                ],
             ],
-            'section2': [
-                ['list2', 'value5'],
-                ['key5', ''],
+            [
+                'section2',
+                [
+                    ['list2', 'value5'],
+                    ['key with no value', '@'],
+                    ['key5', ''],
+                ],
             ],
-        }
+        ]
 
-        self.assertDictEqual(config_parser.sections, expected)
+        self.assertEqual(config_parser.sections, expected)
 
     @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
     def test_parse_2(self, mock_open):
         mock_open.side_effect = self.make_open(PARSE_TEXT_2)
 
-        config_parser = ConfigParser('my_file', {})
+        config_parser = ConfigParser('my_file', [])
         config_parser.parse()
 
-        expected = {
-            'section1': [
-                ['list1', 'item1\nitem2\nended by eof'],
+        expected = [
+            [
+                'section1',
+                [
+                    ['list1', 'item1\nitem2\nended by eof'],
+                ],
             ],
-        }
+        ]
 
-        self.assertDictEqual(config_parser.sections, expected)
+        self.assertEqual(config_parser.sections, expected)
 
     @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
     def test_parse_negative(self, mock_open):
@@ -229,15 +178,14 @@ class TestConfigParser(unittest.TestCase):
             'no section': PARSE_TEXT_BAD_1,
             'incomplete section': PARSE_TEXT_BAD_2,
             'empty section name': PARSE_TEXT_BAD_3,
-            'no list or key': PARSE_TEXT_BAD_4,
-            'bad_continuation': PARSE_TEXT_BAD_5,
-            'value with no key': PARSE_TEXT_BAD_6,
+            'bad_continuation': PARSE_TEXT_BAD_4,
+            'value with no key': PARSE_TEXT_BAD_5,
         }
 
         for bad_reason, bad_text in bad_text_dict.items():
             mock_open.side_effect = self.make_open(bad_text)
 
-            config_parser = ConfigParser('my_file', {})
+            config_parser = ConfigParser('my_file', [])
 
             try:
                 # TODO: replace with assertRaises, when the UT framework supports