Line data Source code
1 : /**
2 : * @file
3 : *
4 : * @brief Tests for the Backend class
5 : *
6 : * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
7 : *
8 : */
9 :
10 :
11 : #include <backend.hpp>
12 : #include <backends.hpp>
13 :
14 : #include <gtest/gtest.h>
15 : #include <iostream>
16 : #include <kdb.hpp>
17 : #include <kdbconfig.h>
18 : #include <string>
19 :
20 0 : std::string makeLiteralString (std::string str)
21 : {
22 0 : std::string ret;
23 0 : for (auto & elem : str)
24 : {
25 0 : if (elem == '\\')
26 : {
27 : ret += "\\\\";
28 : }
29 : else
30 : {
31 0 : ret += elem;
32 : }
33 : }
34 0 : return ret;
35 : }
36 :
37 : /**
38 : * @brief Easily allows one to generate regression tests for keysets.
39 : *
40 : * @param tocheck the keyset to check (name + string)
41 : * @param name the name of the keyset
42 : */
43 0 : void outputGTest (kdb::KeySet tocheck, std::string name)
44 : {
45 0 : std::cout << name << ".rewind();" << std::endl;
46 : tocheck.rewind ();
47 0 : while (tocheck.next ())
48 : {
49 0 : std::cout << name << ".next ();" << std::endl;
50 0 : std::cout << "EXPECT_EQ (" << name << ".current ().getName (), \"" << makeLiteralString (tocheck.current ().getName ())
51 0 : << "\") << \"name of element in keyset wrong\";" << std::endl;
52 0 : std::cout << "EXPECT_EQ (" << name << ".current ().getString (), \"" << makeLiteralString (tocheck.current ().getString ())
53 0 : << "\") << \"string of element in keyset wrong\";" << std::endl;
54 : }
55 0 : }
56 :
57 20 : TEST (Backend, backendName)
58 : {
59 : using namespace kdb;
60 : using namespace kdb::tools;
61 4 : Backend b;
62 6 : b.setMountpoint (Key ("user/a", KEY_CASCADING_NAME, KEY_END), KeySet (0, KS_END));
63 8 : EXPECT_EQ (b.getMountpoint (), "user/a");
64 2 : }
65 :
66 20 : TEST (Backend, SimpleBackend)
67 : {
68 : using namespace kdb;
69 : using namespace kdb::tools;
70 4 : Backend b;
71 6 : b.setMountpoint (Key ("/", KEY_CASCADING_NAME, KEY_END), KeySet (0, KS_END));
72 8 : EXPECT_EQ (b.getMountpoint (), "/");
73 10 : b.addPlugin (PluginSpec ("resolver"));
74 10 : b.addPlugin (PluginSpec ("dump"));
75 8 : b.useConfigFile ("abc");
76 6 : EXPECT_TRUE (b.validated ());
77 :
78 4 : KeySet mountConfig;
79 2 : b.serialize (mountConfig);
80 :
81 : // outputGTest (mountConfig, "mountConfig");
82 :
83 2 : mountConfig.rewind ();
84 4 : mountConfig.next ();
85 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/") << "name of element in keyset wrong";
86 10 : EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
87 0 : << "string of element in keyset wrong";
88 4 : mountConfig.next ();
89 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//config") << "name of element in keyset wrong";
90 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
91 4 : mountConfig.next ();
92 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//config/fcrypt/textmode")
93 0 : << "name of element in keyset wrong";
94 10 : EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
95 4 : mountConfig.next ();
96 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//config/path") << "name of element in keyset wrong";
97 10 : EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
98 4 : mountConfig.next ();
99 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//errorplugins") << "name of element in keyset wrong";
100 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
101 4 : mountConfig.next ();
102 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
103 0 : << "name of element in keyset wrong";
104 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
105 4 : mountConfig.next ();
106 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//getplugins") << "name of element in keyset wrong";
107 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
108 4 : mountConfig.next ();
109 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//getplugins/#0#resolver")
110 0 : << "name of element in keyset wrong";
111 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
112 4 : mountConfig.next ();
113 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//getplugins/#5#dump#dump#")
114 0 : << "name of element in keyset wrong";
115 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
116 4 : mountConfig.next ();
117 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//mountpoint") << "name of element in keyset wrong";
118 10 : EXPECT_EQ (mountConfig.current ().getString (), "/") << "string of element in keyset wrong";
119 4 : mountConfig.next ();
120 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins") << "name of element in keyset wrong";
121 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
122 4 : mountConfig.next ();
123 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins/#0#resolver")
124 0 : << "name of element in keyset wrong";
125 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
126 4 : mountConfig.next ();
127 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins/#5#dump")
128 0 : << "name of element in keyset wrong";
129 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
130 4 : mountConfig.next ();
131 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\//setplugins/#7#resolver")
132 0 : << "name of element in keyset wrong";
133 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
134 2 : }
135 :
136 20 : TEST (Backend, CrazyName)
137 : {
138 : using namespace kdb;
139 : using namespace kdb::tools;
140 4 : Backend b;
141 6 : b.setMountpoint (Key ("/crazy///.//name/../a..__.b/._.///._c__d", KEY_CASCADING_NAME, KEY_END), KeySet (0, KS_END));
142 10 : b.addPlugin (PluginSpec ("resolver"));
143 10 : b.addPlugin (PluginSpec ("dump"));
144 6 : EXPECT_TRUE (b.validated ());
145 :
146 4 : KeySet mountConfig;
147 2 : b.serialize (mountConfig);
148 :
149 : // outputGTest (mountConfig, "mountConfig");
150 :
151 2 : mountConfig.rewind ();
152 4 : mountConfig.next ();
153 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d")
154 0 : << "name of element in keyset wrong";
155 10 : EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
156 0 : << "string of element in keyset wrong";
157 4 : mountConfig.next ();
158 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/config")
159 0 : << "name of element in keyset wrong";
160 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
161 4 : mountConfig.next ();
162 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/config/fcrypt/textmode")
163 0 : << "name of element in keyset wrong";
164 10 : EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
165 4 : mountConfig.next ();
166 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/config/path")
167 0 : << "name of element in keyset wrong";
168 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
169 4 : mountConfig.next ();
170 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/errorplugins")
171 0 : << "name of element in keyset wrong";
172 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
173 4 : mountConfig.next ();
174 10 : EXPECT_EQ (mountConfig.current ().getName (),
175 : "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
176 0 : << "name of element in keyset wrong";
177 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
178 4 : mountConfig.next ();
179 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/getplugins")
180 0 : << "name of element in keyset wrong";
181 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
182 4 : mountConfig.next ();
183 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/getplugins/#0#resolver")
184 0 : << "name of element in keyset wrong";
185 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
186 4 : mountConfig.next ();
187 10 : EXPECT_EQ (mountConfig.current ().getName (),
188 : "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/getplugins/#5#dump#dump#")
189 0 : << "name of element in keyset wrong";
190 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
191 4 : mountConfig.next ();
192 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/mountpoint")
193 0 : << "name of element in keyset wrong";
194 10 : EXPECT_EQ (mountConfig.current ().getString (), "/crazy/a..__.b/._./._c__d") << "string of element in keyset wrong";
195 4 : mountConfig.next ();
196 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins")
197 0 : << "name of element in keyset wrong";
198 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
199 4 : mountConfig.next ();
200 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins/#0#resolver")
201 0 : << "name of element in keyset wrong";
202 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
203 4 : mountConfig.next ();
204 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins/#5#dump")
205 0 : << "name of element in keyset wrong";
206 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
207 4 : mountConfig.next ();
208 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/\\/crazy\\/a..__.b\\/._.\\/._c__d/setplugins/#7#resolver")
209 0 : << "name of element in keyset wrong";
210 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
211 2 : }
212 :
213 20 : TEST (Backend, SimpleBackendWithConf)
214 : {
215 : using namespace kdb;
216 : using namespace kdb::tools;
217 4 : Backend b;
218 6 : b.setMountpoint (Key ("user/somewhere", KEY_END), KeySet (0, KS_END));
219 8 : EXPECT_EQ (b.getMountpoint (), "user/somewhere");
220 4 : KeySet backendConf (5, *Key ("system/globalConf", KEY_VALUE, "for everywhere", KEY_END),
221 10 : *Key ("system/other_global_conf", KEY_VALUE, "more", KEY_END), KS_END);
222 2 : b.setBackendConfig (backendConf);
223 4 : KeySet resConf (5, *Key ("user/res_conf", KEY_VALUE, "do resolving", KEY_END),
224 10 : *Key ("user/other_res_conf", KEY_VALUE, "do resolving too", KEY_END), KS_END);
225 10 : b.addPlugin (PluginSpec ("resolver", resConf));
226 4 : KeySet dumpConf (5, *Key ("user/file_format", KEY_VALUE, "1", KEY_END),
227 10 : *Key ("user/other_dump_conf", KEY_VALUE, "some dump config", KEY_END), KS_END);
228 10 : b.addPlugin (PluginSpec ("dump", dumpConf));
229 8 : b.useConfigFile ("abc");
230 6 : EXPECT_TRUE (b.validated ());
231 :
232 4 : KeySet mountConfig;
233 2 : b.serialize (mountConfig);
234 :
235 : // outputGTest (mountConfig, "mountConfig");
236 :
237 2 : mountConfig.rewind ();
238 4 : mountConfig.next ();
239 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere") << "name of element in keyset wrong";
240 10 : EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
241 0 : << "string of element in keyset wrong";
242 4 : mountConfig.next ();
243 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config")
244 0 : << "name of element in keyset wrong";
245 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
246 4 : mountConfig.next ();
247 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/fcrypt/textmode")
248 0 : << "name of element in keyset wrong";
249 10 : EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
250 4 : mountConfig.next ();
251 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/globalConf")
252 0 : << "name of element in keyset wrong";
253 10 : EXPECT_EQ (mountConfig.current ().getString (), "for everywhere") << "string of element in keyset wrong";
254 4 : mountConfig.next ();
255 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/other_global_conf")
256 0 : << "name of element in keyset wrong";
257 10 : EXPECT_EQ (mountConfig.current ().getString (), "more") << "string of element in keyset wrong";
258 4 : mountConfig.next ();
259 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/path")
260 0 : << "name of element in keyset wrong";
261 10 : EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
262 4 : mountConfig.next ();
263 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/errorplugins")
264 0 : << "name of element in keyset wrong";
265 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
266 4 : mountConfig.next ();
267 10 : EXPECT_EQ (mountConfig.current ().getName (),
268 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
269 0 : << "name of element in keyset wrong";
270 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
271 4 : mountConfig.next ();
272 10 : EXPECT_EQ (mountConfig.current ().getName (),
273 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config")
274 0 : << "name of element in keyset wrong";
275 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
276 4 : mountConfig.next ();
277 10 : EXPECT_EQ (mountConfig.current ().getName (),
278 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/other_res_conf")
279 0 : << "name of element in keyset wrong";
280 10 : EXPECT_EQ (mountConfig.current ().getString (), "do resolving too") << "string of element in keyset wrong";
281 4 : mountConfig.next ();
282 10 : EXPECT_EQ (mountConfig.current ().getName (),
283 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/res_conf")
284 0 : << "name of element in keyset wrong";
285 10 : EXPECT_EQ (mountConfig.current ().getString (), "do resolving") << "string of element in keyset wrong";
286 4 : mountConfig.next ();
287 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins")
288 0 : << "name of element in keyset wrong";
289 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
290 4 : mountConfig.next ();
291 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#0#resolver")
292 0 : << "name of element in keyset wrong";
293 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
294 4 : mountConfig.next ();
295 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#")
296 0 : << "name of element in keyset wrong";
297 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
298 4 : mountConfig.next ();
299 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config")
300 0 : << "name of element in keyset wrong";
301 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
302 4 : mountConfig.next ();
303 10 : EXPECT_EQ (mountConfig.current ().getName (),
304 : "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/file_format")
305 0 : << "name of element in keyset wrong";
306 10 : EXPECT_EQ (mountConfig.current ().getString (), "1") << "string of element in keyset wrong";
307 4 : mountConfig.next ();
308 10 : EXPECT_EQ (mountConfig.current ().getName (),
309 : "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/other_dump_conf")
310 0 : << "name of element in keyset wrong";
311 10 : EXPECT_EQ (mountConfig.current ().getString (), "some dump config") << "string of element in keyset wrong";
312 4 : mountConfig.next ();
313 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/mountpoint")
314 0 : << "name of element in keyset wrong";
315 10 : EXPECT_EQ (mountConfig.current ().getString (), "user/somewhere") << "string of element in keyset wrong";
316 4 : mountConfig.next ();
317 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins")
318 0 : << "name of element in keyset wrong";
319 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
320 4 : mountConfig.next ();
321 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#0#resolver")
322 0 : << "name of element in keyset wrong";
323 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
324 4 : mountConfig.next ();
325 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#5#dump")
326 0 : << "name of element in keyset wrong";
327 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
328 4 : mountConfig.next ();
329 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#7#resolver")
330 0 : << "name of element in keyset wrong";
331 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
332 2 : }
333 :
334 :
335 20 : TEST (Backend, SimpleBackendWithNeededConf)
336 : {
337 : using namespace kdb;
338 : using namespace kdb::tools;
339 4 : Backend b;
340 6 : b.setMountpoint (Key ("user/somewhere", KEY_END), KeySet (0, KS_END));
341 8 : EXPECT_EQ (b.getMountpoint (), "user/somewhere");
342 4 : KeySet backendConf (5, *Key ("system/globalConf", KEY_VALUE, "for everywhere", KEY_END),
343 10 : *Key ("system/struct/FStab/device", KEY_VALUE, "loses, not in key", KEY_END), KS_END);
344 2 : b.setBackendConfig (backendConf);
345 4 : KeySet resConf (5, *Key ("user/res_conf", KEY_VALUE, "do resolving", KEY_END),
346 10 : *Key ("user/other_res_conf", KEY_VALUE, "do resolving too", KEY_END), KS_END);
347 10 : b.addPlugin (PluginSpec ("resolver", resConf));
348 4 : KeySet dumpConf (5, *Key ("user/file_format", KEY_VALUE, "1", KEY_END),
349 10 : *Key ("user/other_dump_conf", KEY_VALUE, "some dump config", KEY_END), KS_END);
350 : try
351 : {
352 10 : b.addPlugin (PluginSpec ("fstab", dumpConf));
353 : }
354 0 : catch (...)
355 : {
356 0 : std::cout << "No fstab plugin, abort test case" << std::endl;
357 : return;
358 : }
359 8 : b.useConfigFile ("abc");
360 6 : EXPECT_TRUE (b.validated ());
361 :
362 4 : KeySet mountConfig;
363 2 : b.serialize (mountConfig);
364 :
365 : // outputGTest (mountConfig, "mountConfig");
366 :
367 2 : mountConfig.rewind ();
368 4 : mountConfig.next ();
369 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere") << "name of element in keyset wrong";
370 10 : EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
371 0 : << "string of element in keyset wrong";
372 4 : mountConfig.next ();
373 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config")
374 0 : << "name of element in keyset wrong";
375 10 : EXPECT_EQ (mountConfig.current ().getString (), "The configuration which is needed") << "string of element in keyset wrong";
376 4 : mountConfig.next ();
377 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/globalConf")
378 0 : << "name of element in keyset wrong";
379 10 : EXPECT_EQ (mountConfig.current ().getString (), "for everywhere") << "string of element in keyset wrong";
380 4 : mountConfig.next ();
381 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/path")
382 0 : << "name of element in keyset wrong";
383 10 : EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
384 4 : mountConfig.next ();
385 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct")
386 0 : << "name of element in keyset wrong";
387 10 : EXPECT_EQ (mountConfig.current ().getString (), "list FStab") << "string of element in keyset wrong";
388 4 : mountConfig.next ();
389 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab")
390 0 : << "name of element in keyset wrong";
391 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
392 4 : mountConfig.next ();
393 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/device")
394 0 : << "name of element in keyset wrong";
395 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
396 4 : mountConfig.next ();
397 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/dumpfreq")
398 0 : << "name of element in keyset wrong";
399 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
400 4 : mountConfig.next ();
401 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/mpoint")
402 0 : << "name of element in keyset wrong";
403 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
404 4 : mountConfig.next ();
405 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/options")
406 0 : << "name of element in keyset wrong";
407 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
408 4 : mountConfig.next ();
409 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/passno")
410 0 : << "name of element in keyset wrong";
411 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
412 4 : mountConfig.next ();
413 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/struct/FStab/type")
414 0 : << "name of element in keyset wrong";
415 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
416 4 : mountConfig.next ();
417 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/errorplugins")
418 0 : << "name of element in keyset wrong";
419 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
420 4 : mountConfig.next ();
421 10 : EXPECT_EQ (mountConfig.current ().getName (),
422 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#")
423 0 : << "name of element in keyset wrong";
424 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
425 4 : mountConfig.next ();
426 10 : EXPECT_EQ (mountConfig.current ().getName (),
427 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config")
428 0 : << "name of element in keyset wrong";
429 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
430 4 : mountConfig.next ();
431 10 : EXPECT_EQ (mountConfig.current ().getName (),
432 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/other_res_conf")
433 0 : << "name of element in keyset wrong";
434 10 : EXPECT_EQ (mountConfig.current ().getString (), "do resolving too") << "string of element in keyset wrong";
435 4 : mountConfig.next ();
436 10 : EXPECT_EQ (mountConfig.current ().getName (),
437 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#" KDB_DEFAULT_RESOLVER "#resolver#/config/res_conf")
438 0 : << "name of element in keyset wrong";
439 10 : EXPECT_EQ (mountConfig.current ().getString (), "do resolving") << "string of element in keyset wrong";
440 4 : mountConfig.next ();
441 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins")
442 0 : << "name of element in keyset wrong";
443 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
444 4 : mountConfig.next ();
445 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#0#resolver")
446 0 : << "name of element in keyset wrong";
447 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
448 4 : mountConfig.next ();
449 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#")
450 0 : << "name of element in keyset wrong";
451 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
452 4 : mountConfig.next ();
453 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#/config")
454 0 : << "name of element in keyset wrong";
455 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
456 4 : mountConfig.next ();
457 10 : EXPECT_EQ (mountConfig.current ().getName (),
458 : "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#/config/file_format")
459 0 : << "name of element in keyset wrong";
460 10 : EXPECT_EQ (mountConfig.current ().getString (), "1") << "string of element in keyset wrong";
461 4 : mountConfig.next ();
462 10 : EXPECT_EQ (mountConfig.current ().getName (),
463 : "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#fstab#fstab#/config/other_dump_conf")
464 0 : << "name of element in keyset wrong";
465 10 : EXPECT_EQ (mountConfig.current ().getString (), "some dump config") << "string of element in keyset wrong";
466 4 : mountConfig.next ();
467 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/mountpoint")
468 0 : << "name of element in keyset wrong";
469 10 : EXPECT_EQ (mountConfig.current ().getString (), "user/somewhere") << "string of element in keyset wrong";
470 4 : mountConfig.next ();
471 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins")
472 0 : << "name of element in keyset wrong";
473 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
474 4 : mountConfig.next ();
475 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#0#resolver")
476 0 : << "name of element in keyset wrong";
477 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
478 4 : mountConfig.next ();
479 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#5#fstab")
480 0 : << "name of element in keyset wrong";
481 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
482 4 : mountConfig.next ();
483 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#7#resolver")
484 0 : << "name of element in keyset wrong";
485 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
486 : }
487 :
488 :
489 20 : TEST (Backend, SimpleBackendWithUnderscore)
490 : {
491 : using namespace kdb;
492 : using namespace kdb::tools;
493 4 : Backend b;
494 6 : b.setMountpoint (Key ("user/somewhere", KEY_END), KeySet (0, KS_END));
495 8 : EXPECT_EQ (b.getMountpoint (), "user/somewhere");
496 8 : KeySet backendConf (5, *Key ("system/global/conf", KEY_VALUE, "for backend", KEY_END), KS_END);
497 2 : b.setBackendConfig (backendConf);
498 8 : KeySet resConf (5, *Key ("user/res/conf", KEY_VALUE, "do it", KEY_END), KS_END);
499 8 : KeySet dumpConf (5, *Key ("user/something", KEY_VALUE, "a val", KEY_END), KS_END);
500 : try
501 : {
502 10 : b.addPlugin (PluginSpec ("dump", resConf));
503 10 : b.addPlugin (PluginSpec ("resolver_fm_b_b", dumpConf));
504 : }
505 0 : catch (...)
506 : {
507 0 : std::cout << "No resolver_fm_b_b plugin (or dump), abort test case" << std::endl;
508 : return;
509 : }
510 8 : b.useConfigFile ("abc");
511 6 : EXPECT_TRUE (b.validated ());
512 :
513 4 : KeySet mountConfig;
514 2 : b.serialize (mountConfig);
515 :
516 : // outputGTest (mountConfig, "mountConfig");
517 :
518 2 : mountConfig.rewind ();
519 4 : mountConfig.next ();
520 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere") << "name of element in keyset wrong";
521 10 : EXPECT_EQ (mountConfig.current ().getString (), "This is a configuration for a backend, see subkeys for more information")
522 0 : << "string of element in keyset wrong";
523 4 : mountConfig.next ();
524 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config")
525 0 : << "name of element in keyset wrong";
526 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
527 4 : mountConfig.next ();
528 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/fcrypt/textmode")
529 0 : << "name of element in keyset wrong";
530 10 : EXPECT_EQ (mountConfig.current ().getString (), "0") << "string of element in keyset wrong";
531 4 : mountConfig.next ();
532 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/global/conf")
533 0 : << "name of element in keyset wrong";
534 10 : EXPECT_EQ (mountConfig.current ().getString (), "for backend") << "string of element in keyset wrong";
535 4 : mountConfig.next ();
536 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/config/path")
537 0 : << "name of element in keyset wrong";
538 10 : EXPECT_EQ (mountConfig.current ().getString (), "abc") << "string of element in keyset wrong";
539 4 : mountConfig.next ();
540 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/errorplugins")
541 0 : << "name of element in keyset wrong";
542 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
543 4 : mountConfig.next ();
544 10 : EXPECT_EQ (mountConfig.current ().getName (),
545 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver_fm_b_b#resolver_fm_b_b#")
546 0 : << "name of element in keyset wrong";
547 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
548 4 : mountConfig.next ();
549 10 : EXPECT_EQ (mountConfig.current ().getName (),
550 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver_fm_b_b#resolver_fm_b_b#/config")
551 0 : << "name of element in keyset wrong";
552 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
553 4 : mountConfig.next ();
554 10 : EXPECT_EQ (mountConfig.current ().getName (),
555 : "system/elektra/mountpoints/user\\/somewhere/errorplugins/#5#resolver_fm_b_b#resolver_fm_b_b#/config/something")
556 0 : << "name of element in keyset wrong";
557 10 : EXPECT_EQ (mountConfig.current ().getString (), "a val") << "string of element in keyset wrong";
558 4 : mountConfig.next ();
559 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins")
560 0 : << "name of element in keyset wrong";
561 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
562 2 : mountConfig.next ();
563 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#0#resolver_fm_b_b")
564 0 : << "name of element in keyset wrong";
565 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
566 4 : mountConfig.next ();
567 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#")
568 0 : << "name of element in keyset wrong";
569 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
570 4 : mountConfig.next ();
571 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config")
572 0 : << "name of element in keyset wrong";
573 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
574 4 : mountConfig.next ();
575 10 : EXPECT_EQ (mountConfig.current ().getName (),
576 : "system/elektra/mountpoints/user\\/somewhere/getplugins/#5#dump#dump#/config/res/conf")
577 0 : << "name of element in keyset wrong";
578 10 : EXPECT_EQ (mountConfig.current ().getString (), "do it") << "string of element in keyset wrong";
579 4 : mountConfig.next ();
580 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/mountpoint")
581 0 : << "name of element in keyset wrong";
582 10 : EXPECT_EQ (mountConfig.current ().getString (), "user/somewhere") << "string of element in keyset wrong";
583 4 : mountConfig.next ();
584 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins")
585 0 : << "name of element in keyset wrong";
586 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
587 4 : mountConfig.next ();
588 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#0#resolver_fm_b_b")
589 0 : << "name of element in keyset wrong";
590 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
591 4 : mountConfig.next ();
592 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#5#dump")
593 0 : << "name of element in keyset wrong";
594 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
595 4 : mountConfig.next ();
596 10 : EXPECT_EQ (mountConfig.current ().getName (), "system/elektra/mountpoints/user\\/somewhere/setplugins/#7#resolver_fm_b_b")
597 0 : << "name of element in keyset wrong";
598 10 : EXPECT_EQ (mountConfig.current ().getString (), "") << "string of element in keyset wrong";
599 6 : }
|