add sqlite plugin
[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 od1.u1 in values._p_get_cached('value')
24     assert od1.u1 in settings._p_get_cached('property')
25     c.u2
26     assert od1.u1 in values._p_get_cached('value')
27     assert od1.u1 in settings._p_get_cached('property')
28     assert od1.u2 in values._p_get_cached('value')
29     assert od1.u2 in settings._p_get_cached('property')
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 od1.u1 in values._p_get_cached('value')
40     assert od1.u1 in settings._p_get_cached('property')
41     c.u2 = 1
42     assert od1.u1 not in values._p_get_cached('value')
43     assert od1.u1 not in settings._p_get_cached('property')
44     #when remove a value
45     c.u1
46     assert od1.u1 in values._p_get_cached('value')
47     assert od1.u1 in settings._p_get_cached('property')
48     del(c.u2)
49     assert od1.u1 not in values._p_get_cached('value')
50     assert od1.u1 not in settings._p_get_cached('property')
51     #when add/del property
52     c.u1
53     assert od1.u1 in values._p_get_cached('value')
54     assert od1.u1 in settings._p_get_cached('property')
55     c.cfgimpl_get_settings()[od1.u2].append('test')
56     assert od1.u1 not in values._p_get_cached('value')
57     assert od1.u1 not in settings._p_get_cached('property')
58     c.u1
59     assert od1.u1 in values._p_get_cached('value')
60     assert od1.u1 in settings._p_get_cached('property')
61     c.cfgimpl_get_settings()[od1.u2].remove('test')
62     assert od1.u1 not in values._p_get_cached('value')
63     assert od1.u1 not in settings._p_get_cached('property')
64     #when enable/disabled property
65     c.u1
66     assert od1.u1 in values._p_get_cached('value')
67     assert od1.u1 in settings._p_get_cached('property')
68     c.cfgimpl_get_settings().append('test')
69     assert od1.u1 not in values._p_get_cached('value')
70     assert od1.u1 not in settings._p_get_cached('property')
71     c.u1
72     assert od1.u1 in values._p_get_cached('value')
73     assert od1.u1 in settings._p_get_cached('property')
74     c.cfgimpl_get_settings().remove('test')
75     assert od1.u1 not in values._p_get_cached('value')
76     assert od1.u1 not in settings._p_get_cached('property')
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 od1.u1 in values._p_get_cached('value')
87     assert od1.u1 in settings._p_get_cached('property')
88     c.u3 = [1]
89     assert od1.u1 not in values._p_get_cached('value')
90     assert od1.u1 not in settings._p_get_cached('property')
91     #when append value
92     c.u1
93     assert od1.u1 in values._p_get_cached('value')
94     assert od1.u1 in settings._p_get_cached('property')
95     c.u3.append(1)
96     assert od1.u1 not in values._p_get_cached('value')
97     assert od1.u1 not in settings._p_get_cached('property')
98     #when pop value
99     c.u1
100     assert od1.u1 in values._p_get_cached('value')
101     assert od1.u1 in settings._p_get_cached('property')
102     c.u3.pop(1)
103     assert od1.u1 not in values._p_get_cached('value')
104     assert od1.u1 not in settings._p_get_cached('property')
105     #when remove a value
106     c.u1
107     assert od1.u1 in values._p_get_cached('value')
108     assert od1.u1 in settings._p_get_cached('property')
109     del(c.u3)
110     assert od1.u1 not in values._p_get_cached('value')
111     assert od1.u1 not in settings._p_get_cached('property')
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 od1.u1 in values._p_get_cached('value')
121     assert od1.u1 in settings._p_get_cached('property')
122     c.cfgimpl_reset_cache()
123     assert od1.u1 not in values._p_get_cached('value')
124     assert od1.u1 not in settings._p_get_cached('property')
125     c.u1
126     sleep(1)
127     c.u2
128     assert od1.u1 in values._p_get_cached('value')
129     assert od1.u1 in settings._p_get_cached('property')
130     assert od1.u2 in values._p_get_cached('value')
131     assert od1.u2 in settings._p_get_cached('property')
132     c.cfgimpl_reset_cache()
133     assert od1.u1 not in values._p_get_cached('value')
134     assert od1.u1 not in settings._p_get_cached('property')
135     assert od1.u2 not in values._p_get_cached('value')
136     assert od1.u2 not in settings._p_get_cached('property')
137
138
139 def test_reset_cache_only_expired():
140     od1 = make_description()
141     c = Config(od1)
142     values = c.cfgimpl_get_values()
143     settings = c.cfgimpl_get_settings()
144     c.u1
145     assert od1.u1 in values._p_get_cached('value')
146     assert od1.u1 in settings._p_get_cached('property')
147     c.cfgimpl_reset_cache(True)
148     assert od1.u1 in values._p_get_cached('value')
149     assert od1.u1 in settings._p_get_cached('property')
150     sleep(1)
151     c.u2
152     assert od1.u1 in values._p_get_cached('value')
153     assert od1.u1 in settings._p_get_cached('property')
154     assert od1.u2 in values._p_get_cached('value')
155     assert od1.u2 in settings._p_get_cached('property')
156     c.cfgimpl_reset_cache(True)
157     assert od1.u1 not in values._p_get_cached('value')
158     assert od1.u1 not in settings._p_get_cached('property')
159     assert od1.u2 in values._p_get_cached('value')
160     assert od1.u2 in settings._p_get_cached('property')
161
162
163 def test_reset_cache_only():
164     od1 = make_description()
165     c = Config(od1)
166     values = c.cfgimpl_get_values()
167     settings = c.cfgimpl_get_settings()
168     c.u1
169     assert od1.u1 in values._p_get_cached('value')
170     assert od1.u1 in settings._p_get_cached('property')
171     c.cfgimpl_reset_cache(only=('values',))
172     assert od1.u1 not in values._p_get_cached('value')
173     assert od1.u1 in settings._p_get_cached('property')
174     c.u1
175     assert od1.u1 in values._p_get_cached('value')
176     assert od1.u1 in settings._p_get_cached('property')
177     c.cfgimpl_reset_cache(only=('settings',))
178     assert od1.u1 in values._p_get_cached('value')
179     assert od1.u1 not in settings._p_get_cached('property')