|
@@ -39,8 +39,8 @@ class TestConfigData(unittest.TestCase):
|
|
|
|
|
|
|
|
|
def test_check_type(self):
|
|
|
- config_spec = self.cd.get_module_spec().get_config_spec()
|
|
|
- spec_part = find_spec_part(config_spec, "item1")
|
|
|
+ config_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec22.spec").get_config_spec()
|
|
|
+ spec_part = find_spec_part(config_spec, "value1")
|
|
|
check_type(spec_part, 1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1.1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, True)
|
|
@@ -48,7 +48,7 @@ class TestConfigData(unittest.TestCase):
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ])
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 })
|
|
|
|
|
|
- spec_part = find_spec_part(config_spec, "item2")
|
|
|
+ spec_part = find_spec_part(config_spec, "value2")
|
|
|
check_type(spec_part, 1.1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, True)
|
|
@@ -56,7 +56,7 @@ class TestConfigData(unittest.TestCase):
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ])
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 })
|
|
|
|
|
|
- spec_part = find_spec_part(config_spec, "item3")
|
|
|
+ spec_part = find_spec_part(config_spec, "value3")
|
|
|
check_type(spec_part, True)
|
|
|
check_type(spec_part, False)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1)
|
|
@@ -65,7 +65,7 @@ class TestConfigData(unittest.TestCase):
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ])
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 })
|
|
|
|
|
|
- spec_part = find_spec_part(config_spec, "item4")
|
|
|
+ spec_part = find_spec_part(config_spec, "value4")
|
|
|
check_type(spec_part, "asdf")
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1.1)
|
|
@@ -73,16 +73,16 @@ class TestConfigData(unittest.TestCase):
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ])
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 })
|
|
|
|
|
|
- spec_part = find_spec_part(config_spec, "item5")
|
|
|
- check_type(spec_part, ["a", "b"])
|
|
|
+ spec_part = find_spec_part(config_spec, "value5")
|
|
|
+ check_type(spec_part, [1, 2])
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1.1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, True)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, "a")
|
|
|
- self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ])
|
|
|
+ self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ "a", "b" ])
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, { "a": 1 })
|
|
|
|
|
|
- spec_part = find_spec_part(config_spec, "item6")
|
|
|
+ spec_part = find_spec_part(config_spec, "value6")
|
|
|
check_type(spec_part, { "value1": "aaa", "value2": 2 })
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1)
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, 1.1)
|
|
@@ -91,14 +91,19 @@ class TestConfigData(unittest.TestCase):
|
|
|
self.assertRaises(isc.cc.data.DataTypeError, check_type, spec_part, [ 1, 2 ])
|
|
|
|
|
|
|
|
|
+ self.assertRaises(isc.cc.data.DataTypeError, check_type, config_spec, 1)
|
|
|
+
|
|
|
def test_find_spec_part(self):
|
|
|
config_spec = self.cd.get_module_spec().get_config_spec()
|
|
|
spec_part = find_spec_part(config_spec, "item1")
|
|
|
self.assertEqual({'item_name': 'item1', 'item_type': 'integer', 'item_optional': False, 'item_default': 1, }, spec_part)
|
|
|
+ spec_part = find_spec_part(config_spec, "/item1")
|
|
|
+ self.assertEqual({'item_name': 'item1', 'item_type': 'integer', 'item_optional': False, 'item_default': 1, }, spec_part)
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError, find_spec_part, config_spec, "no_such_item")
|
|
|
self.assertRaises(isc.cc.data.DataNotFoundError, find_spec_part, config_spec, "no_such_item/multilevel")
|
|
|
+ self.assertRaises(isc.cc.data.DataNotFoundError, find_spec_part, config_spec, "item6/multilevel")
|
|
|
+ self.assertRaises(isc.cc.data.DataNotFoundError, find_spec_part, 1, "item6/multilevel")
|
|
|
spec_part = find_spec_part(config_spec, "item6/value1")
|
|
|
-
|
|
|
self.assertEqual({'item_name': 'value1', 'item_type': 'string', 'item_optional': True, 'item_default': 'default'}, spec_part)
|
|
|
|
|
|
def test_spec_name_list(self):
|
|
@@ -106,7 +111,29 @@ class TestConfigData(unittest.TestCase):
|
|
|
self.assertEqual(['item1', 'item2', 'item3', 'item4', 'item5/', 'item6/'], name_list)
|
|
|
name_list = spec_name_list(self.cd.get_module_spec().get_config_spec(), "", True)
|
|
|
self.assertEqual(['item1', 'item2', 'item3', 'item4', 'item5/', 'item6/value1', 'item6/value2'], name_list)
|
|
|
+ spec_part = find_spec_part(self.cd.get_module_spec().get_config_spec(), "item6")
|
|
|
+ name_list = spec_name_list(spec_part, "item6", True)
|
|
|
+ self.assertEqual(['item6/value1', 'item6/value2'], name_list)
|
|
|
+ spec_part = find_spec_part(self.cd.get_module_spec().get_config_spec(), "item6")
|
|
|
+ name_list = spec_name_list(spec_part, "item6", True)
|
|
|
+ self.assertEqual(['item6/value1', 'item6/value2'], name_list)
|
|
|
+
|
|
|
+ config_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec22.spec").get_config_spec()
|
|
|
+ spec_part = find_spec_part(config_spec, "value9")
|
|
|
+ name_list = spec_name_list(spec_part, "value9", True)
|
|
|
+ self.assertEqual(['value9/v91', 'value9/v92/v92a', 'value9/v92/v92b'], name_list)
|
|
|
+
|
|
|
+ name_list = spec_name_list({ "myModule": config_spec }, "", False)
|
|
|
+ self.assertEqual(['myModule/'], name_list)
|
|
|
+ name_list = spec_name_list({ "myModule": config_spec }, "", True)
|
|
|
+ self.assertEqual(['myModule/', 'myModule/value1', 'myModule/value2', 'myModule/value3', 'myModule/value4', 'myModule/value5/', 'myModule/value6/v61', 'myModule/value6/v62', 'myModule/value7/', 'myModule/value8/', 'myModule/value9/v91', 'myModule/value9/v92/v92a', 'myModule/value9/v92/v92b'], name_list)
|
|
|
+
|
|
|
+ self.assertRaises(ConfigDataError, spec_name_list, 1)
|
|
|
+ self.assertRaises(ConfigDataError, spec_name_list, [ 'a' ])
|
|
|
|
|
|
+ def test_init(self):
|
|
|
+ self.assertRaises(ConfigDataError, ConfigData, "asdf")
|
|
|
+
|
|
|
def test_get_value(self):
|
|
|
value, default = self.cd.get_value("item1")
|
|
|
self.assertEqual(1, value)
|
|
@@ -178,6 +205,7 @@ class TestMultiConfigData(unittest.TestCase):
|
|
|
self.mcd.set_specification(module_spec)
|
|
|
self.assert_(module_spec.get_module_name() in self.mcd._specifications)
|
|
|
self.assertEquals(module_spec, self.mcd._specifications[module_spec.get_module_name()])
|
|
|
+ self.assertRaises(ConfigDataError, self.mcd.set_specification, "asdf")
|
|
|
|
|
|
def test_get_module_spec(self):
|
|
|
module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
|
|
@@ -190,11 +218,18 @@ class TestMultiConfigData(unittest.TestCase):
|
|
|
def test_find_spec_part(self):
|
|
|
spec_part = self.mcd.find_spec_part("Spec2/item1")
|
|
|
self.assertEqual(None, spec_part)
|
|
|
+ spec_part = self.mcd.find_spec_part("/Spec2/item1")
|
|
|
+ self.assertEqual(None, spec_part)
|
|
|
module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec2.spec")
|
|
|
self.mcd.set_specification(module_spec)
|
|
|
spec_part = self.mcd.find_spec_part("Spec2/item1")
|
|
|
self.assertEqual({'item_name': 'item1', 'item_type': 'integer', 'item_optional': False, 'item_default': 1, }, spec_part)
|
|
|
|
|
|
+ def test_get_current_config(self):
|
|
|
+ cf = { 'module1': { 'item1': 2, 'item2': True } }
|
|
|
+ self.mcd._set_current_config(cf);
|
|
|
+ self.assertEqual(cf, self.mcd.get_current_config())
|
|
|
+
|
|
|
def test_get_local_changes(self):
|
|
|
module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec2.spec")
|
|
|
self.mcd.set_specification(module_spec)
|
|
@@ -234,6 +269,8 @@ class TestMultiConfigData(unittest.TestCase):
|
|
|
self.mcd.set_specification(module_spec)
|
|
|
value = self.mcd.get_default_value("Spec2/item1")
|
|
|
self.assertEqual(1, value)
|
|
|
+ value = self.mcd.get_default_value("/Spec2/item1")
|
|
|
+ self.assertEqual(1, value)
|
|
|
value = self.mcd.get_default_value("Spec2/item6/value1")
|
|
|
self.assertEqual('default', value)
|
|
|
value = self.mcd.get_default_value("Spec2/item6/value2")
|
|
@@ -264,6 +301,34 @@ class TestMultiConfigData(unittest.TestCase):
|
|
|
self.mcd.set_specification(module_spec)
|
|
|
maps = self.mcd.get_value_maps()
|
|
|
self.assertEqual([{'default': False, 'type': 'module', 'name': 'Spec2', 'value': None, 'modified': False}], maps)
|
|
|
+ self.mcd._set_current_config({ "Spec2": { "item1": 2 } })
|
|
|
+ self.mcd.set_value("Spec2/item3", False)
|
|
|
+ maps = self.mcd.get_value_maps("/Spec2")
|
|
|
+ self.assertEqual([{'default': False, 'type': 'integer', 'name': 'item1', 'value': 2, 'modified': False},
|
|
|
+ {'default': False, 'type': 'real', 'name': 'item2', 'value': 1.1, 'modified': False},
|
|
|
+ {'default': False, 'type': 'boolean', 'name': 'item3', 'value': False, 'modified': True},
|
|
|
+ {'default': False, 'type': 'string', 'name': 'item4', 'value': 'test', 'modified': False},
|
|
|
+ {'default': False, 'type': 'list', 'name': 'item5', 'value': ['a', 'b'], 'modified': False},
|
|
|
+ {'default': False, 'type': 'map', 'name': 'item6', 'value': {}, 'modified': False}], maps)
|
|
|
+ maps = self.mcd.get_value_maps("Spec2")
|
|
|
+ self.assertEqual([{'default': False, 'type': 'integer', 'name': 'item1', 'value': 2, 'modified': False},
|
|
|
+ {'default': False, 'type': 'real', 'name': 'item2', 'value': 1.1, 'modified': False},
|
|
|
+ {'default': False, 'type': 'boolean', 'name': 'item3', 'value': False, 'modified': True},
|
|
|
+ {'default': False, 'type': 'string', 'name': 'item4', 'value': 'test', 'modified': False},
|
|
|
+ {'default': False, 'type': 'list', 'name': 'item5', 'value': ['a', 'b'], 'modified': False},
|
|
|
+ {'default': False, 'type': 'map', 'name': 'item6', 'value': {}, 'modified': False}], maps)
|
|
|
+ maps = self.mcd.get_value_maps("/Spec2/item5")
|
|
|
+ self.assertEqual([{'default': False, 'type': 'string', 'name': 'list_element', 'value': 'a', 'modified': False},
|
|
|
+ {'default': False, 'type': 'string', 'name': 'list_element', 'value': 'b', 'modified': False}], maps)
|
|
|
+ maps = self.mcd.get_value_maps("/Spec2/item1")
|
|
|
+ self.assertEqual([{'default': False, 'type': 'integer', 'name': 'item1', 'value': 2, 'modified': False}], maps)
|
|
|
+ maps = self.mcd.get_value_maps("/Spec2/item2")
|
|
|
+ self.assertEqual([{'default': False, 'type': 'real', 'name': 'item2', 'value': 1.1, 'modified': False}], maps)
|
|
|
+ maps = self.mcd.get_value_maps("/Spec2/item3")
|
|
|
+ self.assertEqual([{'default': False, 'type': 'boolean', 'name': 'item3', 'value': False, 'modified': True}], maps)
|
|
|
+ maps = self.mcd.get_value_maps("/Spec2/item4")
|
|
|
+ self.assertEqual([{'default': False, 'type': 'string', 'name': 'item4', 'value': 'test', 'modified': False}], maps)
|
|
|
+
|
|
|
|
|
|
def test_set_value(self):
|
|
|
module_spec = isc.config.module_spec_from_file(self.data_path + os.sep + "spec2.spec")
|
|
@@ -279,6 +344,12 @@ class TestMultiConfigData(unittest.TestCase):
|
|
|
self.mcd.set_specification(module_spec)
|
|
|
config_items = self.mcd.get_config_item_list()
|
|
|
self.assertEqual(['Spec2'], config_items)
|
|
|
+ config_items = self.mcd.get_config_item_list(None, False)
|
|
|
+ self.assertEqual(['Spec2'], config_items)
|
|
|
+ config_items = self.mcd.get_config_item_list(None, True)
|
|
|
+ self.assertEqual(['Spec2/item1', 'Spec2/item2', 'Spec2/item3', 'Spec2/item4', 'Spec2/item5/', 'Spec2/item6/value1', 'Spec2/item6/value2'], config_items)
|
|
|
+ config_items = self.mcd.get_config_item_list("Spec2", True)
|
|
|
+ self.assertEqual(['Spec2/item1', 'Spec2/item2', 'Spec2/item3', 'Spec2/item4', 'Spec2/item5/', 'Spec2/item6/value1', 'Spec2/item6/value2'], config_items)
|
|
|
config_items = self.mcd.get_config_item_list("Spec2")
|
|
|
self.assertEqual(['Spec2/item1', 'Spec2/item2', 'Spec2/item3', 'Spec2/item4', 'Spec2/item5/', 'Spec2/item6/'], config_items)
|
|
|
config_items = self.mcd.get_config_item_list("Spec2", True)
|