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