import logging import os from petrel_client.common.config import Config, CONFIG_DEFAULT, Section, _value_to_str from petrel_client.common import exception import unittest import common_util from unittest import mock from petrel_client.client import Client test_dir = os.path.dirname(os.path.realpath(__file__)) class TestSection(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_valuetoStr(self): self.assertEqual(_value_to_str(100), "100") self.assertEqual(_value_to_str(False), "False") expect = {'a': '2', 'b': '2', 'c': '3', 'd': '4'} input = dict(a=2, b=2, c=3, d=4) self.assertEqual(expect, _value_to_str(input)) def test_init(self): session = Section(CONFIG_DEFAULT) self.assertEqual(session._conf, CONFIG_DEFAULT) self.assertTrue(isinstance(session, Section)) def test_key(self): session = Section(CONFIG_DEFAULT) self.assertEqual(session['enable_mc'], 'False') def test_ConfigKeyNotFoundError(self): session = Section(CONFIG_DEFAULT) with self.assertRaises(exception.ConfigKeyNotFoundError): _ = session['empty'] def test_update(self): session = Section(CONFIG_DEFAULT) toUpdate = dict(enable_mc='True', file_log_backup_count=3) session.update(toUpdate) self.assertEqual(session['enable_mc'], 'True') self.assertEqual(session['file_log_backup_count'], '3') # def testGetitem(self): # expected = CONFIG_DEFAULT def test_get(self): session = Section(CONFIG_DEFAULT) self.assertEqual(session.get('enable_mc'), 'False') with self.assertRaises(exception.ConfigItemNotFoundError): _ = session.get('enable_mc1') self.assertIsNone(session.get('enable_mc1', default=None)) def test_has_option(self): session = Section(CONFIG_DEFAULT) self.assertTrue(session.has_option('enable_mc')) self.assertFalse(session.has_option('enable_mc1')) def test_get_boolean(self): session = Section(CONFIG_DEFAULT) self.assertFalse(session.get_boolean('enable_mc')) with self.assertRaises(exception.ConfigKeyTypeError): _ = session.get_boolean('endpoint_url') def test_get_int(self): session = Section(CONFIG_DEFAULT) self.assertEqual(session.get_int('file_log_backup_count'), 1) with self.assertRaises(exception.ConfigKeyTypeError): _ = session.get_int('enable_mc') def test_get_log_level(self): session = Section(CONFIG_DEFAULT) self.assertEqual(session.get_log_level('file_log_level'), logging.DEBUG) with self.assertRaises(exception.ConfigKeyTypeError): _ = session.get_log_level('enable_mc') class TestConfig(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_init(self): with self.assertRaises(exception.ConfigFileNotFoundError): conf_path = test_dir + '/tests/conf/petreloss.conf1' self.config = Config(conf_path) with self.assertRaises(exception.ConfigSectionNotFoundError): conf_path = test_dir + '/conf/test_empty.conf' self.config = Config(conf_path) expect_session = Section(CONFIG_DEFAULT) toUpdate = dict(default_cluster='cluster1') expect_session.update(toUpdate) conf_path = test_dir + '/conf/petreloss.conf' config = Config(conf_path) default_session = config.default() self.assertTrue(default_session._conf == expect_session._conf) samll_case_conf_path = test_dir + '/conf/test_petreloss.conf' samll_case_config = Config(samll_case_conf_path) samll_case_default_session = samll_case_config.default() self.assertTrue( samll_case_default_session._conf == expect_session._conf) def test_get(self): conf_path = test_dir + '/conf/petreloss.conf' config = Config(conf_path) cluster1_session = config['cluster1'] self.assertTrue(cluster1_session.get_boolean("enable_mc")) self.assertEqual(cluster1_session.get("access_key"), 'lili1') samll_case_conf_path = test_dir + '/conf/test_petreloss.conf' samll_case_config = Config(samll_case_conf_path) cluster1_session = samll_case_config['cluster1'] self.assertEqual(cluster1_session.get("default_cluster"), 'cluster1') with self.assertRaises(exception.ConfigSectionNotFoundError): config["noncluster1"] def test_update(self): conf_path = test_dir + '/conf/petreloss.conf' config = Config(conf_path) toUpdate = dict(cluster1=dict(default_cluster='cluster3')) config.update(toUpdate) self.assertEqual(config["cluster1"].get("default_cluster"), 'cluster3') def test_items(self): conf_path = test_dir + '/conf/petreloss.conf' config = Config(conf_path) sections = config.items() self.assertEqual(len(sections), 4) if __name__ == '__main__': common_util.run_test()