-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_configuration.py
106 lines (89 loc) · 3.92 KB
/
test_configuration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import unittest
import tempfile
from j25.Configuration import Configuration
from test.TestConfiguration import TestConfiguration
CONFIG_CONTENTS = '''[main]
ip = 127.0.0.1
port = 8888
[store]
type = mongo
ip = 127.0.0.1
dbName = c9
TEST = 5
'''
class ConfigurationTest(unittest.TestCase):
def setUp(self):
self.f = tempfile.NamedTemporaryFile()
print >> self.f, CONFIG_CONTENTS
self.f.flush()
def tearDown(self):
self.f.close()
def testLoadingFromFileObj(self):
fileObj = open(self.f.name)
config = Configuration.load_from_file_obj(fileObj)
self._testLoading(config)
def testLoadingFromFile(self):
config = Configuration.load_file(self.f.name)
self._testLoading(config)
def testDefaults(self):
config = Configuration.load_defaults()
self.assertTrue(hasattr(config, "main"))
self.assertEquals("0.0.0.0", config.main.ip)
self.assertEquals(8800, int(config.main.port))
self.assertEquals(10, int(config.main.num_threads))
self.assertTrue(hasattr(config, "memcached"))
self.assertEquals("127.0.0.1:11211", config.memcached.servers)
self.assertEquals(0, config.memcached.expireTime)
self.assertEquals(0, config.memcached.min_compress_len)
def testDefaultsOverlaying(self):
config = Configuration.load_file(self.f.name)
self.assertTrue(hasattr(config, "main"))
self.assertEquals("127.0.0.1", config.main.ip)
self.assertEquals(8888, int(config.main.port))
self.assertEquals(10, int(config.main.num_threads))
def _testLoading(self, config):
self.assertTrue(hasattr(config, "main"))
self.assertEquals("127.0.0.1", config.main.ip)
self.assertEquals(8888, int(config.main.port))
self.assertTrue(hasattr(config, "store"))
self.assertEquals("mongo", config.store.type)
self.assertEquals("127.0.0.1", config.store.ip)
self.assertEquals("c9", config.store.dbname)
self.assertFalse(hasattr(config.store, "TEST"))
self.assertEquals("5", config.store.test)
def testDumpFile(self):
fileObj = tempfile.NamedTemporaryFile()
fileName = fileObj.name
configObj = TestConfiguration.create_instance()
Configuration.dump_file(fileName, configObj)
loadedCfg = Configuration.load_file(fileName)
# comparing cfg and configObj
self.assertEquals(sorted(loadedCfg.sections()), sorted(configObj.sections()))
configObjDict = {}
ConfigFileDict = {}
configObjOptions = []
ConfigFileOptions = []
for section in configObj.sections():
secObj = configObj.get_section(section)
configObjOptions.extend(secObj.options())
tempOptionsDict = {}
for option in secObj.options():
tempOptionsDict[option] = secObj.get_option(option)
configObjDict[section] = tempOptionsDict
for section in loadedCfg.sections():
secObj = configObj.get_section(section)
ConfigFileOptions.extend(secObj.options())
tempOptionsDict = {}
for option in secObj.options():
tempOptionsDict[option] = secObj.get_option(option)
ConfigFileDict[section] = tempOptionsDict
self.assertTrue(configObjOptions)
self.assertTrue(ConfigFileOptions)
self.assertTrue(ConfigFileDict)
self.assertTrue(configObjDict)
self.assertEquals(sorted(configObjOptions), sorted(ConfigFileOptions))
self.assertEquals(len(ConfigFileDict), len(configObjDict))
for k, v in configObjDict.iteritems():
self.assertEquals(v, ConfigFileDict[k])
for k, v in ConfigFileDict.iteritems():
self.assertEquals(v, configObjDict[k])