Mercurial > hgrepos > Python > libs > ConfigMix
annotate tests/valgrind-checks.py @ 623:09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Thu, 13 Jan 2022 17:52:46 +0100 |
| parents | |
| children | 429a7d5002b8 |
| rev | line source |
|---|---|
|
623
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
2 r"""Checks to be run within Valgrind |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
3 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
4 """ |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
5 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
6 from __future__ import print_function |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
7 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
8 import os |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
9 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
10 from _test_context import TESTDATADIR |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
11 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
12 import configmix |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
13 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
14 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
15 NUM = 1000000 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
16 WITH_JAIL = True |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
17 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
18 DOTS = 10000 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
19 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
20 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
21 cfg = configmix.load(os.path.join(TESTDATADIR, "conf_perf.py")) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
22 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
23 DEFAULT_DICT = {u"the": u"default"} |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
24 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
25 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
26 i = 1 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
27 while i <= NUM: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
28 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
29 tmp1 = cfg.getvarl(u"tree1", u"tree2", u"key8") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
30 tmp2 = cfg.getvarl_s(u"tree1", u"tree2", u"key8") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
31 tmp3 = cfg.getvar(u"tree1.tree2.key8") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
32 tmp4 = cfg.getvar_s(u"tree1.tree2.key8") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
33 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
34 try: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
35 tmp1 = cfg.getvarl(u"tree1", u"tree2", u"keyX") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
36 except KeyError: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
37 pass |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
38 else: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
39 assert False |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
40 try: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
41 tmp2 = cfg.getvarl_s(u"tree1", u"tree2", u"keyXX") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
42 except KeyError: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
43 pass |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
44 else: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
45 assert False |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
46 try: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
47 tmp3 = cfg.getvar(u"tree1.tree2.keyXXX") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
48 except KeyError: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
49 pass |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
50 else: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
51 assert False |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
52 try: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
53 tmp4 = cfg.getvar_s(u"tree1.tree2.keyXXXX") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
54 except KeyError: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
55 pass |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
56 else: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
57 assert False |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
58 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
59 tmp1 = cfg.getvarl_s(u"tree1", u"tree2", u"key10") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
60 # non-cacheable interpolation |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
61 tmp2 = cfg.getvarl_s(u"tree1", u"tree2", u"key12") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
62 tmp3 = cfg.getvarl_s(u"tree1", u"tree2", u"key13") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
63 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
64 tmp1 = cfg.getvar_s(u"tree1.tree2.key10") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
65 # non-cacheable interpolation |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
66 tmp2 = cfg.getvar_s(u"tree1.tree2.key12") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
67 tmp3 = cfg.getvar_s(u"tree1.tree2.key13") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
68 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
69 assert("key2" in cfg) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
70 assert((u"tree1", u"tree2", u"keyX") not in cfg) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
71 assert((u"tree1", u"tree2", u"key8") in cfg) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
72 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
73 tmp1 = cfg.getvarl(u"tree1", u"treeXXXX", default=DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
74 assert(tmp1 is DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
75 tmp2 = cfg.getvarl_s(u"tree1", u"treeXXXXXXX", default=DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
76 assert(tmp2 is DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
77 tmp3 = cfg.getvar(u"treeXXXXXXXXXXX", default=DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
78 assert(tmp3 is DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
79 tmp4 = cfg.getvar_s(u"treeXXXXXXXXXXXXXXXXXXX", default=DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
80 assert(tmp4 is DEFAULT_DICT) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
81 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
82 if WITH_JAIL: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
83 jail = cfg.jailed(root=u"tree1.tree2") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
84 assert(u"key5" in jail) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
85 tmp1 = jail[u"key6"] |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
86 tmp2 = jail[(u"key8",)] |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
87 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
88 jail2 = cfg.jailed(rootpath=(u"tree1",)) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
89 assert((u"tree2", u"key9") in jail2) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
90 tmp1 = jail2.getvarl_s(u"tree2") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
91 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
92 tmp1 = jail2.getvar(u"tree3") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
93 try: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
94 tmp2 = jail2.getvar_s(u"tree3") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
95 except KeyError: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
96 pass |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
97 else: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
98 assert False |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
99 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
100 try: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
101 tmp1 = jail2.getvar(u"treeXXXX") |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
102 except KeyError: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
103 pass |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
104 else: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
105 assert False |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
106 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
107 if i % DOTS == 0: |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
108 print(".", end='', flush=True) |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
109 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
110 i += 1 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
111 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
112 jail = jail2 = None |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
113 tmp1 = tmp2 = tmp3 = tmp4 = None |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
114 |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
115 print() |
|
09e15af29d36
Add a script as test harness for Valgrind'ing the C extension
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
diff
changeset
|
116 print("Done (loops: %d)." % (NUM,)) |
