47270ee42aa6620f8c5abd36904560525bc589cf
[tiramisu.git] / test / test_cache.py
1 # coding: utf-8
2 import autopath
3 from tiramisu import setting
4 setting.expires_time = 1
5 from tiramisu.option import IntOption, OptionDescription
6 from tiramisu.config import Config
7 from time import sleep
8
9
10 def make_description():
11     u1 = IntOption('u1', '', multi=True)
12     u2 = IntOption('u2', '')
13     u3 = IntOption('u3', '', multi=True)
14     return OptionDescription('od1', '', [u1, u2, u3])
15
16
17 def test_cache():
18     od1 = make_description()
19     c = Config(od1)
20     values = c.cfgimpl_get_values()
21     settings = c.cfgimpl_get_settings()
22     c.u1
23     assert 'u1' in values._p_.get_cached('value', c)
24     assert 'u1' in settings._p_.get_cached('property', c)
25     c.u2
26     assert 'u1' in values._p_.get_cached('value', c)
27     assert 'u1' in settings._p_.get_cached('property', c)
28     assert 'u2' in values._p_.get_cached('value', c)
29     assert 'u2' in settings._p_.get_cached('property', c)
30
31
32 def test_cache_reset():
33     od1 = make_description()
34     c = Config(od1)
35     values = c.cfgimpl_get_values()
36     settings = c.cfgimpl_get_settings()
37     #when change a value
38     c.u1
39     assert 'u1' in values._p_.get_cached('value', c)
40     assert 'u1' in settings._p_.get_cached('property', c)
41     c.u2 = 1
42     assert 'u1' not in values._p_.get_cached('value', c)
43     assert 'u1' not in settings._p_.get_cached('property', c)
44     #when remove a value
45     c.u1
46     assert 'u1' in values._p_.get_cached('value', c)
47     assert 'u1' in settings._p_.get_cached('property', c)
48     del(c.u2)
49     assert 'u1' not in values._p_.get_cached('value', c)
50     assert 'u1' not in settings._p_.get_cached('property', c)
51     #when add/del property
52     c.u1
53     assert 'u1' in values._p_.get_cached('value', c)
54     assert 'u1' in settings._p_.get_cached('property', c)
55     c.cfgimpl_get_settings()[od1.u2].append('test')
56     assert 'u1' not in values._p_.get_cached('value', c)
57     assert 'u1' not in settings._p_.get_cached('property', c)
58     c.u1
59     assert 'u1' in values._p_.get_cached('value', c)
60     assert 'u1' in settings._p_.get_cached('property', c)
61     c.cfgimpl_get_settings()[od1.u2].remove('test')
62     assert 'u1' not in values._p_.get_cached('value', c)
63     assert 'u1' not in settings._p_.get_cached('property', c)
64     #when enable/disabled property
65     c.u1
66     assert 'u1' in values._p_.get_cached('value', c)
67     assert 'u1' in settings._p_.get_cached('property', c)
68     c.cfgimpl_get_settings().append('test')
69     assert 'u1' not in values._p_.get_cached('value', c)
70     assert 'u1' not in settings._p_.get_cached('property', c)
71     c.u1
72     assert 'u1' in values._p_.get_cached('value', c)
73     assert 'u1' in settings._p_.get_cached('property', c)
74     c.cfgimpl_get_settings().remove('test')
75     assert 'u1' not in values._p_.get_cached('value', c)
76     assert 'u1' not in settings._p_.get_cached('property', c)
77
78
79 def test_cache_reset_multi():
80     od1 = make_description()
81     c = Config(od1)
82     values = c.cfgimpl_get_values()
83     settings = c.cfgimpl_get_settings()
84     #when change a value
85     c.u1
86     assert 'u1' in values._p_.get_cached('value', c)
87     assert 'u1' in settings._p_.get_cached('property', c)
88     c.u3 = [1]
89     assert 'u1' not in values._p_.get_cached('value', c)
90     assert 'u1' not in settings._p_.get_cached('property', c)
91     #when append value
92     c.u1
93     assert 'u1' in values._p_.get_cached('value', c)
94     assert 'u1' in settings._p_.get_cached('property', c)
95     c.u3.append(1)
96     assert 'u1' not in values._p_.get_cached('value', c)
97     assert 'u1' not in settings._p_.get_cached('property', c)
98     #when pop value
99     c.u1
100     assert 'u1' in values._p_.get_cached('value', c)
101     assert 'u1' in settings._p_.get_cached('property', c)
102     c.u3.pop(1)
103     assert 'u1' not in values._p_.get_cached('value', c)
104     assert 'u1' not in settings._p_.get_cached('property', c)
105     #when remove a value
106     c.u1
107     assert 'u1' in values._p_.get_cached('value', c)
108     assert 'u1' in settings._p_.get_cached('property', c)
109     del(c.u3)
110     assert 'u1' not in values._p_.get_cached('value', c)
111     assert 'u1' not in settings._p_.get_cached('property', c)
112
113
114 def test_reset_cache():
115     od1 = make_description()
116     c = Config(od1)
117     values = c.cfgimpl_get_values()
118     settings = c.cfgimpl_get_settings()
119     c.u1
120     assert 'u1' in values._p_.get_cached('value', c)
121     assert 'u1' in settings._p_.get_cached('property', c)
122     c.cfgimpl_reset_cache()
123     assert 'u1' not in values._p_.get_cached('value', c)
124     assert 'u1' not in settings._p_.get_cached('property', c)
125     c.u1
126     sleep(1)
127     c.u2
128     assert 'u1' in values._p_.get_cached('value', c)
129     assert 'u1' in settings._p_.get_cached('property', c)
130     assert 'u2' in values._p_.get_cached('value', c)
131     assert 'u2' in settings._p_.get_cached('property', c)
132     c.cfgimpl_reset_cache()
133     assert 'u1' not in values._p_.get_cached('value', c)
134     assert 'u1' not in settings._p_.get_cached('property', c)
135     assert 'u2' not in values._p_.get_cached('value', c)
136     assert 'u2' not in settings._p_.get_cached('property', c)
137
138
139 def test_reset_cache_subconfig():
140     od1 = make_description()
141     od2 = OptionDescription('od2', '', [od1])
142     c = Config(od2)
143     values = c.cfgimpl_get_values()
144     c.od1.u1
145     assert 'od1.u1' in values._p_.get_cached('value', c)
146     c.od1.cfgimpl_reset_cache()
147     assert 'od1.u1' not in values._p_.get_cached('value', c)
148
149
150 def test_reset_cache_only_expired():
151     od1 = make_description()
152     c = Config(od1)
153     values = c.cfgimpl_get_values()
154     settings = c.cfgimpl_get_settings()
155     c.u1
156     assert 'u1' in values._p_.get_cached('value', c)
157     assert 'u1' in settings._p_.get_cached('property', c)
158     c.cfgimpl_reset_cache(True)
159     assert 'u1' in values._p_.get_cached('value', c)
160     assert 'u1' in settings._p_.get_cached('property', c)
161     sleep(1)
162     c.u2
163     assert 'u1' in values._p_.get_cached('value', c)
164     assert 'u1' in settings._p_.get_cached('property', c)
165     assert 'u2' in values._p_.get_cached('value', c)
166     assert 'u2' in settings._p_.get_cached('property', c)
167     c.cfgimpl_reset_cache(True)
168     assert 'u1' not in values._p_.get_cached('value', c)
169     assert 'u1' not in settings._p_.get_cached('property', c)
170     assert 'u2' in values._p_.get_cached('value', c)
171     assert 'u2' in settings._p_.get_cached('property', c)
172
173
174 def test_reset_cache_only():
175     od1 = make_description()
176     c = Config(od1)
177     values = c.cfgimpl_get_values()
178     settings = c.cfgimpl_get_settings()
179     c.u1
180     assert 'u1' in values._p_.get_cached('value', c)
181     assert 'u1' in settings._p_.get_cached('property', c)
182     c.cfgimpl_reset_cache(only=('values',))
183     assert 'u1' not in values._p_.get_cached('value', c)
184     assert 'u1' in settings._p_.get_cached('property', c)
185     c.u1
186     assert 'u1' in values._p_.get_cached('value', c)
187     assert 'u1' in settings._p_.get_cached('property', c)
188     c.cfgimpl_reset_cache(only=('settings',))
189     assert 'u1' in values._p_.get_cached('value', c)
190     assert 'u1' not in settings._p_.get_cached('property', c)