python 3.5 support
[tiramisu.git] / test / test_storage.py
1 # coding: utf-8
2 from .autopath import do_autopath
3 do_autopath()
4
5 #from py.test import raises
6
7 from tiramisu.config import Config
8 from tiramisu.option import BoolOption, OptionDescription
9 from tiramisu.setting import groups, owners
10 from tiramisu.storage import list_sessions, delete_session
11
12
13 def test_non_persistent():
14     b = BoolOption('b', '')
15     o = OptionDescription('od', '', [b])
16     Config(o, session_id='test_non_persistent')
17
18
19 def test_list():
20     b = BoolOption('b', '')
21     o = OptionDescription('od', '', [b])
22     c = Config(o, session_id='test_non_persistent')
23     c.cfgimpl_get_settings().remove('cache')
24     c.b = True
25     assert 'test_non_persistent' in list_sessions('config')
26     del(c)
27     assert 'test_non_persistent' not in list_sessions('config')
28
29
30 def test_create_persistent():
31     b = BoolOption('b', '')
32     o = OptionDescription('od', '', [b])
33     try:
34         Config(o, session_id='test_persistent', persistent=True)
35     except ValueError:
36         # storage is not persistent
37         pass
38
39
40 def test_list_sessions_persistent():
41     b = BoolOption('b', '')
42     o = OptionDescription('od', '', [b])
43     try:
44         c = Config(o, session_id='test_persistent', persistent=True)
45         c.b = True
46     except ValueError:
47         # storage is not persistent
48         pass
49     else:
50         assert 'test_persistent' in list_sessions('config')
51
52
53 def test_delete_session_persistent():
54     b = BoolOption('b', '')
55     o = OptionDescription('od', '', [b])
56     try:
57         Config(o, session_id='test_persistent', persistent=True)
58     except ValueError:
59         # storage is not persistent
60         pass
61     else:
62         assert 'test_persistent' in list_sessions('config')
63         delete_session('config', 'test_persistent')
64         assert 'test_persistent' not in list_sessions('config')
65
66
67 def test_create_persistent_retrieve():
68     b = BoolOption('b', '')
69     o = OptionDescription('od', '', [b])
70     try:
71         c = Config(o, session_id='test_persistent', persistent=True)
72     except ValueError:
73         # storage is not persistent
74         pass
75     else:
76         assert c.b is None
77         c.b = True
78         assert c.b is True
79         del(c)
80         c = Config(o, session_id='test_persistent', persistent=True)
81         assert c.b is True
82         assert 'test_persistent' in list_sessions('config')
83         delete_session('config', c.impl_getsessionid())
84         del(c)
85         c = Config(o, session_id='test_persistent', persistent=True)
86         assert c.b is None
87         delete_session('config', c.impl_getsessionid())
88         del(c)
89
90
91 def test_two_persistent():
92     b = BoolOption('b', '')
93     o = OptionDescription('od', '', [b])
94     try:
95         c = Config(o, session_id='test_persistent', persistent=True)
96     except ValueError:
97         # storage is not persistent
98         pass
99     else:
100         c.cfgimpl_get_settings().remove('cache')
101         c2 = Config(o, session_id='test_persistent', persistent=True)
102         c2.cfgimpl_get_settings().remove('cache')
103         assert c.b is None
104         assert c2.b is None
105         c.b = False
106         assert c.b is False
107         assert c2.b is False
108         c2.b = True
109         assert c.b is True
110         assert c2.b is True
111         delete_session('config', 'test_persistent')
112
113
114 def test_create_persistent_retrieve_owner():
115     b = BoolOption('b', '')
116     o = OptionDescription('od', '', [b])
117     try:
118         c = Config(o, session_id='test_persistent', persistent=True)
119     except ValueError:
120         # storage is not persistent
121         pass
122     else:
123         assert c.getowner(b) == owners.default
124         c.b = True
125         assert c.b is True
126         assert c.getowner(b) == owners.user
127         owners.addowner('persistentowner')
128         c.cfgimpl_get_values().setowner(b, owners.persistentowner)
129         assert c.getowner(b) == owners.persistentowner
130         del(c)
131         #
132         c = Config(o, session_id='test_persistent', persistent=True)
133         c.cfgimpl_get_values().setowner(b, owners.persistentowner)
134         delete_session('config', c.impl_getsessionid())
135         del(c)
136         #
137         c = Config(o, session_id='test_persistent', persistent=True)
138         assert c.b is None
139         assert c.getowner(b) == owners.default
140         delete_session('config', c.impl_getsessionid())
141         del(c)
142
143
144 def test_create_persistent_retrieve_owner_masterslaves():
145     a = BoolOption('a', '', multi=True)
146     b = BoolOption('b', '', multi=True)
147     o = OptionDescription('a', '', [a, b])
148     o.impl_set_group_type(groups.master)
149     o1 = OptionDescription('a', '', [o])
150     try:
151         c = Config(o1, session_id='test_persistent', persistent=True)
152     except ValueError:
153         # storage is not persistent
154         pass
155     else:
156         assert c.getowner(a) == owners.default
157         assert c.getowner(b) == owners.default
158         c.a.a = [True]
159         c.a.a.append(False)
160         c.a.b[1] = True
161         assert c.getowner(a) == owners.user
162         assert c.getowner(b, 0) == owners.default
163         assert c.getowner(b, 1) == owners.user
164         owners.addowner('persistentowner2')
165         c.cfgimpl_get_values().setowner(b, owners.persistentowner2, 1)
166         c.a.b[0] = True
167         assert c.getowner(b, 0) == owners.user
168         assert c.getowner(b, 1) == owners.persistentowner2
169         del(c)
170         #
171         c = Config(o1, session_id='test_persistent', persistent=True)
172         assert c.getowner(b, 0) == owners.user
173         assert c.getowner(b, 1) == owners.persistentowner2
174         delete_session('config', c.impl_getsessionid())
175         del(c)
176         #
177         c = Config(o1, session_id='test_persistent', persistent=True)
178         assert c.a.b == []
179         assert c.getowner(b) == owners.default
180         delete_session('config', c.impl_getsessionid())
181         del(c)
182
183
184 def test_two_persistent_owner():
185     b = BoolOption('b', '')
186     o = OptionDescription('od', '', [b])
187     try:
188         c = Config(o, session_id='test_persistent', persistent=True)
189         c.cfgimpl_get_settings().remove('cache')
190     except ValueError:
191         # storage is not persistent
192         pass
193     else:
194         c2 = Config(o, session_id='test_persistent', persistent=True)
195         c2.cfgimpl_get_settings().remove('cache')
196         assert c.getowner(b) == owners.default
197         assert c2.getowner(b) == owners.default
198         c.b = False
199         assert c.getowner(b) == owners.user
200         assert c2.getowner(b) == owners.user
201         owners.addowner('persistent')
202         c.cfgimpl_get_values().setowner(b, owners.persistent)
203         assert c.getowner(b) == owners.persistent
204         assert c2.getowner(b) == owners.persistent
205         delete_session('config', 'test_persistent')
206
207
208 def test_create_persistent_retrieve_information():
209     b = BoolOption('b', '')
210     o = OptionDescription('od', '', [b])
211     try:
212         c = Config(o, session_id='test_persistent', persistent=True)
213     except ValueError:
214         # storage is not persistent
215         pass
216     else:
217         c.impl_set_information('info', 'string')
218         assert c.impl_get_information('info') == 'string'
219         del(c)
220         #
221         c = Config(o, session_id='test_persistent', persistent=True)
222         assert c.impl_get_information('info') == 'string'
223         delete_session('config', c.impl_getsessionid())
224         del(c)
225         #
226         c = Config(o, session_id='test_persistent', persistent=True)
227         assert c.impl_get_information('info', None) == None
228         delete_session('config', c.impl_getsessionid())
229         del(c)
230
231
232 def test_two_persistent_information():
233     b = BoolOption('b', '')
234     o = OptionDescription('od', '', [b])
235     try:
236         c = Config(o, session_id='test_persistent', persistent=True)
237         c.cfgimpl_get_settings().remove('cache')
238     except ValueError:
239         # storage is not persistent
240         pass
241     else:
242         c.impl_set_information('info', 'string')
243         assert c.impl_get_information('info') == 'string'
244         c2 = Config(o, session_id='test_persistent', persistent=True)
245         c2.cfgimpl_get_settings().remove('cache')
246         c2.cfgimpl_get_settings().remove('cache')
247         assert c2.impl_get_information('info') == 'string'
248         delete_session('config', 'test_persistent')
249
250
251 def test_two_different_persistents():
252     b = BoolOption('b', '')
253     o = OptionDescription('od', '', [b])
254     try:
255         c = Config(o, session_id='test_persistent', persistent=True)
256         c.cfgimpl_get_settings().remove('cache')
257         d = Config(o, session_id='test_persistent2', persistent=True)
258         d.cfgimpl_get_settings().remove('cache')
259     except ValueError:
260         # storage is not persistent
261         pass
262     else:
263         c.cfgimpl_get_settings()[b].append('test')
264         assert str(c.cfgimpl_get_settings()[b]) in ["['test']", "[u'test']"]
265         assert str(d.cfgimpl_get_settings()[b]) == "[]"
266         assert c.b is None
267         assert d.b is None
268         c.b = True
269         assert c.b == True
270         assert d.b is None
271
272         delete_session('config', 'test_persistent')
273         delete_session('config', 'test_persistent2')