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