1 #include "execution_test.hh"
2 
3 #include "../core.hh"
4 #include "../conductor.hh"
5 #include "../user_data.hh"
6 
7 #include "../execution.hh"
8 #include "../tree/structure.hh"
9 #include "../utils/array.hh"
10 #include "../utils/utils.hh"
11 #include "../tree/node_info.hh"
12 #include "../execution_window.hh"
13 #include "../tree/traditional_view.hh"
14 
15 #include "../db_handler.hh"
16 
17 #include <QDebug>
18 #include <iostream>
19 
20 namespace cpprofiler
21 {
22 namespace tests
23 {
24 namespace execution
25 {
26 
copy_test(utils::Array<int> arr)27 void copy_test(utils::Array<int> arr)
28 {
29     auto new_arr = arr;
30 }
31 
array_test()32 void array_test()
33 {
34 
35     utils::Array<int> arr(1);
36 
37     copy_test(arr);
38 }
39 
binary_tree_execution(Conductor & conductor)40 void binary_tree_execution(Conductor &conductor)
41 {
42 
43     auto ex = conductor.addNewExecution("test execution");
44 
45     auto &tree = ex->tree();
46 
47     auto root = tree.createRoot(2, "0");
48     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH, "1");
49     auto n2 = tree.promoteNode(root, 1, 2, tree::NodeStatus::BRANCH, "2");
50 
51     ex->userData().setSelectedNode(n1);
52 
53     auto n3 = tree.promoteNode(n1, 0, 2, tree::NodeStatus::BRANCH, "3");
54     auto n4 = tree.promoteNode(n1, 1, 2, tree::NodeStatus::BRANCH, "4");
55 
56     auto n5 = tree.promoteNode(n3, 0, 2, tree::NodeStatus::BRANCH, "5");
57     auto n6 = tree.promoteNode(n3, 1, 2, tree::NodeStatus::BRANCH, "6");
58 
59     tree.promoteNode(n5, 0, 0, tree::NodeStatus::SOLVED, "7");
60     tree.promoteNode(n5, 1, 0, tree::NodeStatus::FAILED, "8");
61 
62     tree.promoteNode(n6, 0, 0, tree::NodeStatus::FAILED, "9");
63     tree.promoteNode(n6, 1, 0, tree::NodeStatus::SKIPPED, "10");
64 
65     auto n7 = tree.promoteNode(n4, 0, 0, tree::NodeStatus::FAILED, "11");
66     auto n8 = tree.promoteNode(n4, 1, 0, tree::NodeStatus::FAILED, "12");
67 
68     auto n9 = tree.promoteNode(n2, 0, 2, tree::NodeStatus::BRANCH, "13");
69     auto n10 = tree.promoteNode(n2, 1, 0, tree::NodeStatus::FAILED, "14");
70 
71     auto n11 = tree.promoteNode(n9, 0, 2, tree::NodeStatus::BRANCH, "15");
72     auto n12 = tree.promoteNode(n9, 1, 0, tree::NodeStatus::FAILED, "16");
73 
74     auto n13 = tree.promoteNode(n11, 0, 2, tree::NodeStatus::BRANCH, "17");
75     auto n14 = tree.promoteNode(n11, 1, 0, tree::NodeStatus::FAILED, "18");
76 
77     auto n15 = tree.promoteNode(n13, 0, 2, tree::NodeStatus::BRANCH, "19");
78     auto n16 = tree.promoteNode(n13, 1, 0, tree::NodeStatus::FAILED, "20");
79 
80     auto n17 = tree.promoteNode(n15, 0, 2, tree::NodeStatus::BRANCH, "21");
81     auto n18 = tree.promoteNode(n15, 1, 0, tree::NodeStatus::FAILED, "22");
82 
83     auto n19 = tree.promoteNode(n17, 0, 2, tree::NodeStatus::BRANCH, "23");
84     auto n20 = tree.promoteNode(n17, 1, 0, tree::NodeStatus::FAILED, "24");
85 
86     auto n21 = tree.promoteNode(n19, 0, 2, tree::NodeStatus::BRANCH, "25");
87     auto n22 = tree.promoteNode(n19, 1, 0, tree::NodeStatus::FAILED, "26");
88 
89     auto n23 = tree.promoteNode(n21, 0, 2, tree::NodeStatus::BRANCH, "27");
90     auto n24 = tree.promoteNode(n21, 1, 0, tree::NodeStatus::UNDETERMINED, "28");
91 
92     auto n25 = tree.promoteNode(n23, 0, 2, tree::NodeStatus::BRANCH, "29");
93     auto n26 = tree.promoteNode(n23, 1, 0, tree::NodeStatus::FAILED, "30");
94 
95     auto n27 = tree.promoteNode(n25, 0, 2, tree::NodeStatus::BRANCH, "31");
96     auto n28 = tree.promoteNode(n25, 1, 0, tree::NodeStatus::FAILED, "32");
97 
98     auto n29 = tree.promoteNode(n27, 0, 2, tree::NodeStatus::BRANCH, "33");
99     auto n30 = tree.promoteNode(n27, 1, 0, tree::NodeStatus::FAILED, "34");
100 
101     auto n31 = tree.promoteNode(n29, 0, 2, tree::NodeStatus::BRANCH, "35");
102     auto n32 = tree.promoteNode(n29, 1, 0, tree::NodeStatus::FAILED, "36");
103 
104     auto n33 = tree.promoteNode(n31, 0, 2, tree::NodeStatus::BRANCH, "37");
105     auto n34 = tree.promoteNode(n31, 1, 0, tree::NodeStatus::FAILED, "38");
106 
107     auto n35 = tree.promoteNode(n33, 0, 0, tree::NodeStatus::FAILED, "39");
108     auto n36 = tree.promoteNode(n33, 1, 0, tree::NodeStatus::FAILED, "40");
109 
110     conductor.showTraditionalView(ex);
111 }
112 
nary_execution(Conductor & conductor)113 void nary_execution(Conductor &conductor)
114 {
115 
116     auto ex = conductor.addNewExecution("n-ary execution");
117 
118     auto &tree = ex->tree();
119 
120     auto root = tree.createRoot(4);
121     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH, "1");
122     auto n2 = tree.promoteNode(root, 1, 2, tree::NodeStatus::BRANCH, "2");
123     auto n3 = tree.promoteNode(root, 2, 0, tree::NodeStatus::FAILED, "3");
124     auto n4 = tree.promoteNode(root, 3, 2, tree::NodeStatus::BRANCH, "4");
125 
126     auto n5 = tree.promoteNode(n1, 0, 0, tree::NodeStatus::FAILED, "5");
127     auto n6 = tree.promoteNode(n1, 1, 0, tree::NodeStatus::FAILED, "6");
128 
129     auto n7 = tree.promoteNode(n2, 0, 0, tree::NodeStatus::FAILED, "7");
130     auto n8 = tree.promoteNode(n2, 1, 2, tree::NodeStatus::BRANCH, "8");
131 
132     auto n9 = tree.promoteNode(n4, 0, 0, tree::NodeStatus::FAILED, "9");
133     auto n10 = tree.promoteNode(n4, 1, 0, tree::NodeStatus::FAILED, "10");
134 
135     auto n11 = tree.promoteNode(n8, 0, 0, tree::NodeStatus::FAILED, "11");
136     auto n12 = tree.promoteNode(n8, 1, 0, tree::NodeStatus::FAILED, "12");
137 }
138 
larger_nary_execution(Conductor & conductor)139 void larger_nary_execution(Conductor &conductor)
140 {
141 
142     auto ex = conductor.addNewExecution("n-ary execution");
143 
144     auto &tree = ex->tree();
145 
146     auto root = tree.createRoot(4);
147     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH);
148     auto n2 = tree.promoteNode(root, 1, 2, tree::NodeStatus::BRANCH);
149     auto n3 = tree.promoteNode(root, 2, 0, tree::NodeStatus::FAILED);
150     auto n4 = tree.promoteNode(root, 3, 2, tree::NodeStatus::BRANCH);
151 
152     auto n5 = tree.promoteNode(n1, 0, 0, tree::NodeStatus::FAILED);
153     auto n6 = tree.promoteNode(n1, 1, 12, tree::NodeStatus::BRANCH);
154 
155     auto n6a = tree.promoteNode(n6, 0, 0, tree::NodeStatus::FAILED);
156     auto n6b = tree.promoteNode(n6, 1, 0, tree::NodeStatus::FAILED);
157     auto n6c = tree.promoteNode(n6, 2, 0, tree::NodeStatus::FAILED);
158     auto n6d = tree.promoteNode(n6, 3, 0, tree::NodeStatus::FAILED);
159     tree.promoteNode(n6, 4, 0, tree::NodeStatus::FAILED);
160     tree.promoteNode(n6, 5, 0, tree::NodeStatus::FAILED);
161     tree.promoteNode(n6, 6, 0, tree::NodeStatus::FAILED);
162     tree.promoteNode(n6, 7, 0, tree::NodeStatus::FAILED);
163     tree.promoteNode(n6, 8, 0, tree::NodeStatus::FAILED);
164     tree.promoteNode(n6, 9, 0, tree::NodeStatus::FAILED);
165     tree.promoteNode(n6, 10, 0, tree::NodeStatus::FAILED);
166     tree.promoteNode(n6, 11, 0, tree::NodeStatus::FAILED);
167 
168     auto n7 = tree.promoteNode(n2, 0, 0, tree::NodeStatus::FAILED);
169     auto n8 = tree.promoteNode(n2, 1, 2, tree::NodeStatus::BRANCH);
170 
171     auto n9 = tree.promoteNode(n4, 0, 0, tree::NodeStatus::FAILED);
172     auto n10 = tree.promoteNode(n4, 1, 0, tree::NodeStatus::FAILED);
173 
174     auto n11 = tree.promoteNode(n8, 0, 0, tree::NodeStatus::FAILED);
175     auto n12 = tree.promoteNode(n8, 1, 0, tree::NodeStatus::FAILED);
176 }
177 
simple_nary_execution(Conductor & conductor)178 void simple_nary_execution(Conductor &conductor)
179 {
180 
181     auto ex = conductor.addNewExecution("n-ary execution");
182 
183     auto &tree = ex->tree();
184 
185     auto root = tree.createRoot(4);
186     auto n1 = tree.promoteNode(root, 0, 0, tree::NodeStatus::FAILED);
187     auto n2 = tree.promoteNode(root, 1, 0, tree::NodeStatus::FAILED);
188     auto n3 = tree.promoteNode(root, 2, 0, tree::NodeStatus::FAILED);
189     auto n4 = tree.promoteNode(root, 3, 0, tree::NodeStatus::FAILED);
190 }
191 
binary_test_1_for_identical_subtrees(Conductor & conductor)192 void binary_test_1_for_identical_subtrees(Conductor &conductor)
193 {
194 
195     auto ex = conductor.addNewExecution("test for identical subtree algorithm");
196 
197     auto &tree = ex->tree();
198 
199     auto root = tree.createRoot(2);
200     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH, "a");
201     auto n2 = tree.promoteNode(root, 1, 2, tree::NodeStatus::BRANCH, "b");
202 
203     auto n3 = tree.promoteNode(n1, 0, 2, tree::NodeStatus::BRANCH, "c");
204     auto n4 = tree.promoteNode(n1, 1, 2, tree::NodeStatus::BRANCH, "d");
205     auto n11 = tree.promoteNode(n2, 0, 0, tree::NodeStatus::FAILED, "e");
206     auto n12 = tree.promoteNode(n2, 1, 2, tree::NodeStatus::BRANCH, "f");
207 
208     auto n5 = tree.promoteNode(n3, 0, 0, tree::NodeStatus::FAILED, "g");
209     auto n6 = tree.promoteNode(n3, 1, 2, tree::NodeStatus::BRANCH, "h");
210     auto n9 = tree.promoteNode(n4, 0, 0, tree::NodeStatus::FAILED, "i");
211     auto n10 = tree.promoteNode(n4, 1, 0, tree::NodeStatus::FAILED, "j");
212     auto n13 = tree.promoteNode(n12, 0, 0, tree::NodeStatus::FAILED, "k");
213     auto n14 = tree.promoteNode(n12, 1, 0, tree::NodeStatus::FAILED, "l");
214 
215     auto n7 = tree.promoteNode(n6, 0, 0, tree::NodeStatus::FAILED, "m");
216     auto n8 = tree.promoteNode(n6, 1, 0, tree::NodeStatus::FAILED, "n");
217 }
218 
binary_test_2_for_identical_subtrees(Conductor & conductor)219 void binary_test_2_for_identical_subtrees(Conductor &conductor)
220 {
221 
222     auto ex = conductor.addNewExecution("test for identical subtree algorithm");
223 
224     auto &tree = ex->tree();
225 
226     auto root = tree.createRoot(2, "0");
227     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH, "1");
228     auto n2 = tree.promoteNode(root, 1, 2, tree::NodeStatus::BRANCH, "2");
229 
230     auto n3 = tree.promoteNode(n1, 0, 2, tree::NodeStatus::BRANCH, "3");
231     auto n4 = tree.promoteNode(n1, 1, 2, tree::NodeStatus::BRANCH, "4");
232     auto n5 = tree.promoteNode(n2, 0, 2, tree::NodeStatus::BRANCH, "5");
233     auto n6 = tree.promoteNode(n2, 1, 2, tree::NodeStatus::BRANCH, "6");
234 
235     auto n7 = tree.promoteNode(n3, 0, 0, tree::NodeStatus::FAILED, "7");
236     auto n8 = tree.promoteNode(n3, 1, 0, tree::NodeStatus::FAILED, "8");
237     auto n9 = tree.promoteNode(n4, 0, 0, tree::NodeStatus::FAILED, "9");
238     auto n10 = tree.promoteNode(n4, 1, 2, tree::NodeStatus::BRANCH, "10");
239     auto n13 = tree.promoteNode(n6, 0, 2, tree::NodeStatus::BRANCH, "13");
240     auto n14 = tree.promoteNode(n6, 1, 2, tree::NodeStatus::BRANCH, "14");
241 
242     auto n15 = tree.promoteNode(n10, 0, 0, tree::NodeStatus::FAILED, "15");
243     auto n16 = tree.promoteNode(n10, 1, 0, tree::NodeStatus::FAILED, "16");
244 
245     auto n11 = tree.promoteNode(n5, 0, 0, tree::NodeStatus::FAILED, "11");
246     auto n12 = tree.promoteNode(n5, 1, 0, tree::NodeStatus::FAILED, "12");
247 
248     auto n17 = tree.promoteNode(n13, 0, 0, tree::NodeStatus::FAILED, "17");
249     auto n18 = tree.promoteNode(n13, 1, 0, tree::NodeStatus::FAILED, "18");
250 
251     auto n19 = tree.promoteNode(n14, 0, 0, tree::NodeStatus::FAILED, "19");
252     auto n20 = tree.promoteNode(n14, 1, 2, tree::NodeStatus::BRANCH, "20");
253 
254     auto n21 = tree.promoteNode(n20, 0, 0, tree::NodeStatus::FAILED, "21");
255     auto n22 = tree.promoteNode(n20, 1, 0, tree::NodeStatus::FAILED, "22");
256 }
257 
build_for_comparison_a(tree::NodeTree & tree)258 void build_for_comparison_a(tree::NodeTree &tree)
259 {
260 
261     auto root = tree.createRoot(2, "0");
262 
263     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH, "1");
264     auto n2 = tree.promoteNode(root, 1, 2, tree::NodeStatus::BRANCH, "2");
265 
266     auto n3 = tree.promoteNode(n1, 0, 0, tree::NodeStatus::FAILED, "3");
267     auto n4 = tree.promoteNode(n1, 1, 2, tree::NodeStatus::BRANCH, "4");
268 
269     auto n7 = tree.promoteNode(n4, 0, 0, tree::NodeStatus::FAILED, "7");
270     auto n8 = tree.promoteNode(n4, 1, 0, tree::NodeStatus::FAILED, "8");
271 
272     auto n5 = tree.promoteNode(n2, 0, 0, tree::NodeStatus::SOLVED, "5");
273     auto n6 = tree.promoteNode(n2, 1, 0, tree::NodeStatus::FAILED, "6");
274 }
275 
build_for_comparison_b(tree::NodeTree & tree)276 void build_for_comparison_b(tree::NodeTree &tree)
277 {
278 
279     auto root = tree.createRoot(2, "0");
280 
281     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH, "1");
282     auto n2 = tree.promoteNode(root, 1, 0, tree::NodeStatus::FAILED, "2");
283 
284     auto n3 = tree.promoteNode(n1, 0, 0, tree::NodeStatus::FAILED, "3");
285     auto n4 = tree.promoteNode(n1, 1, 2, tree::NodeStatus::BRANCH, "4");
286 
287     auto n7 = tree.promoteNode(n4, 0, 2, tree::NodeStatus::BRANCH, "7");
288     auto n8 = tree.promoteNode(n4, 1, 0, tree::NodeStatus::FAILED, "8");
289 
290     auto n9 = tree.promoteNode(n7, 0, 0, tree::NodeStatus::FAILED, "9");
291     auto n10 = tree.promoteNode(n7, 1, 0, tree::NodeStatus::FAILED, "10");
292 }
293 
comparison(Conductor & c)294 void comparison(Conductor &c)
295 {
296 
297     auto ex1 = c.addNewExecution("Execution A");
298     build_for_comparison_a(ex1->tree());
299 
300     auto ex2 = c.addNewExecution("Execution B");
301     build_for_comparison_b(ex2->tree());
302 
303     c.mergeTrees(ex1, ex2);
304 }
305 
comparison2(Conductor & c)306 void comparison2(Conductor &c)
307 {
308 
309     const auto path = "/home/maxim/dev/cp-profiler2/golomb8.db";
310 
311     auto ex1 = db_handler::load_execution(path);
312     if (ex1)
313         c.addNewExecution(ex1);
314 
315     auto ex2 = db_handler::load_execution(path);
316     if (ex2)
317         c.addNewExecution(ex2);
318 
319     c.mergeTrees(ex1.get(), ex2.get());
320 }
321 
tree_building(Conductor & c)322 void tree_building(Conductor &c)
323 {
324 
325     /// create a dummy root node
326     auto ex = c.addNewExecution("test tree");
327 
328     auto &tree = ex->tree();
329 
330     auto root = tree.createRoot(0);
331 
332     auto n1 = tree.promoteNode(NodeID::NoNode, -1, 0, tree::NodeStatus::FAILED, "1");
333     //     auto n2 = tree.promoteNode(root, 1, 0, tree::NodeStatus::FAILED, "2");
334 
335     //     auto n3 = tree.promoteNode(n1, 0, 0, tree::NodeStatus::FAILED, "3");
336     //     auto n4 = tree.promoteNode(n1, 1, 0, tree::NodeStatus::FAILED, "4");
337 }
338 
hiding_failed_test(Conductor & c)339 void hiding_failed_test(Conductor &c)
340 {
341 
342     auto ex = c.addNewExecution("test hiding failed");
343 
344     auto &tree = ex->tree();
345 
346     auto root = tree.createRoot(2, "0");
347 
348     auto n1 = tree.promoteNode(root, 0, 2, tree::NodeStatus::BRANCH, "1");
349     auto n2 = tree.promoteNode(root, 1, 2, tree::NodeStatus::BRANCH, "2");
350 
351     auto n3 = tree.promoteNode(n1, 0, 2, tree::NodeStatus::BRANCH, "3");
352     auto n4 = tree.promoteNode(n1, 1, 0, tree::NodeStatus::SOLVED, "4");
353 
354     auto n5 = tree.promoteNode(n3, 0, 0, tree::NodeStatus::FAILED, "5");
355     auto n6 = tree.promoteNode(n3, 1, 0, tree::NodeStatus::FAILED, "6");
356 
357     auto n7 = tree.promoteNode(n2, 0, 0, tree::NodeStatus::UNDETERMINED, "7");
358     auto n8 = tree.promoteNode(n2, 1, 2, tree::NodeStatus::BRANCH, "8");
359 
360     auto n9 = tree.promoteNode(n8, 0, 0, tree::NodeStatus::FAILED, "9");
361     auto n10 = tree.promoteNode(n8, 1, 0, tree::NodeStatus::FAILED, "10");
362 }
363 
restart_tree(Conductor & c)364 void restart_tree(Conductor &c)
365 {
366 
367     auto ex = c.addNewExecution("Restart Tree");
368 
369     auto &tree = ex->tree();
370 
371     utils::MutexLocker locker(&tree.treeMutex());
372 
373     auto root = tree.createRoot(0);
374 
375     tree.addExtraChild(root);
376     // tree.addExtraChild(root);
377     // tree.addExtraChild(root);
378     // tree.addExtraChild(root);
379     // tree.addExtraChild(root);
380     // tree.addExtraChild(root);
381 
382     // tree.addExtraChild(tree.getChild(root, 3));
383 }
384 
load_execution(Conductor & c,const char * path)385 static void load_execution(Conductor &c, const char *path)
386 {
387 
388     auto ex = db_handler::load_execution(path);
389 
390     if (!ex)
391     {
392         print("could not load the execution");
393     }
394     else
395     {
396         c.addNewExecution(ex);
397     }
398 }
399 
save_and_load(Conductor & c,const char * path)400 static void save_and_load(Conductor &c, const char *path)
401 {
402 
403     auto ex1 = c.addNewExecution("simple execution");
404     build_for_comparison_a(ex1->tree());
405 
406     ex1->userData().setBookmark(NodeID{2}, "Test Bookmark");
407 
408     db_handler::save_execution(ex1, path);
409 
410     auto ex = db_handler::load_execution(path);
411     if (!ex)
412     {
413         print("could not load the execution");
414     }
415     else
416     {
417         c.addNewExecution(ex);
418     }
419 }
420 
db_create_tree(Conductor & c)421 static void db_create_tree(Conductor &c)
422 {
423 
424     auto ex = c.addNewExecution("Created as in DB");
425     auto &tree = ex->tree();
426 
427     tree.db_initialize(100);
428 
429     tree.db_createRoot(NodeID{0});
430 
431     tree.db_addChild(NodeID{1}, NodeID{0}, 0, tree::NodeStatus::BRANCH, "a");
432     tree.db_addChild(NodeID{2}, NodeID{0}, 1, tree::NodeStatus::BRANCH, "b");
433 }
434 
save_search(Conductor & c)435 static void save_search(Conductor &c)
436 {
437 
438     auto ex1 = c.addNewExecution("simple execution");
439     build_for_comparison_a(ex1->tree());
440 
441     c.saveSearch(ex1, "test.search");
442 }
443 
444 /// similar subtree
ss_analysis(Conductor & c)445 static void ss_analysis(Conductor &c)
446 {
447 
448     const char *path = "/home/maxim/dev/cp-profiler2/golomb6.db";
449     // const char *path = "/home/maxim/dev/cp-profiler2/golomb10.db";
450     auto ex = db_handler::load_execution(path);
451     if (!ex)
452     {
453         print("could not load the execution");
454     }
455     else
456     {
457         c.addNewExecution(ex);
458         c.showTraditionalView(ex.get());
459     }
460 }
461 
nogood_dialog(Conductor & c)462 static void nogood_dialog(Conductor &c)
463 {
464 
465     const char *orig_path = "/home/maxim/dev/cp-profiler2/nogoods.db";
466 
467     auto ex = db_handler::load_execution(orig_path);
468     if (!ex)
469     {
470         print("could not load the execution");
471     }
472     else
473     {
474         c.addNewExecution(ex);
475         // c.showTraditionalView(ex.get());
476     }
477 
478     const char *replayed_path = "/home/maxim/dev/cp-profiler2/nogoods_replayed.db";
479 
480     auto ex2 = db_handler::load_execution(replayed_path);
481     if (!ex2)
482     {
483         print("could not load the execution");
484     }
485     else
486     {
487         c.addNewExecution(ex2);
488         // c.showTraditionalView(ex2.get());
489     }
490 
491     c.runNogoodAnalysis(ex.get(), ex2.get());
492 
493     // c.mergeTrees(ex.get(), ex2.get());
494 }
495 
run(Conductor & c)496 void run(Conductor &c)
497 {
498 
499     /// this one works with db
500     // binary_test_1_for_identical_subtrees(c);
501 
502     // binary_test_2_for_identical_subtrees(c);
503 
504     // binary_tree_execution(c);
505     // simple_nary_execution(c);
506     // nary_execution(c);
507     // larger_nary_execution(c);
508 
509     // hiding_failed_test(c);
510 
511     // comparison(c);
512 
513     // comparison2(c);
514 
515     // tree_building(c);
516 
517     // restart_tree(c);
518 
519     // load_execution(c, "/home/maxim/dev/cp-profiler2/golomb8.db");
520 
521     // save_and_load(c, "/home/maxim/dev/cp-profiler2/test.db");
522 
523     // nogood_dialog(c);
524 
525     // db_create_tree(c);
526 
527     // save_search(c);
528 
529     // ss_analysis(c);
530 }
531 
532 } // namespace execution
533 } // namespace tests
534 } // namespace cpprofiler
535