diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/valgrind-checks.py	Thu Jan 13 17:52:46 2022 +0100
@@ -0,0 +1,116 @@
+# -*- coding: utf-8 -*-
+r"""Checks to be run within Valgrind
+
+"""
+
+from __future__ import print_function
+
+import os
+
+from _test_context import TESTDATADIR
+
+import configmix
+
+
+NUM = 1000000
+WITH_JAIL = True
+
+DOTS = 10000
+
+
+cfg = configmix.load(os.path.join(TESTDATADIR, "conf_perf.py"))
+
+DEFAULT_DICT = {u"the": u"default"}
+
+
+i = 1
+while i <= NUM:
+
+    tmp1 = cfg.getvarl(u"tree1", u"tree2", u"key8")
+    tmp2 = cfg.getvarl_s(u"tree1", u"tree2", u"key8")
+    tmp3 = cfg.getvar(u"tree1.tree2.key8")
+    tmp4 = cfg.getvar_s(u"tree1.tree2.key8")
+
+    try:
+        tmp1 = cfg.getvarl(u"tree1", u"tree2", u"keyX")
+    except KeyError:
+        pass
+    else:
+        assert False
+    try:
+        tmp2 = cfg.getvarl_s(u"tree1", u"tree2", u"keyXX")
+    except KeyError:
+        pass
+    else:
+        assert False
+    try:
+        tmp3 = cfg.getvar(u"tree1.tree2.keyXXX")
+    except KeyError:
+        pass
+    else:
+        assert False
+    try:
+        tmp4 = cfg.getvar_s(u"tree1.tree2.keyXXXX")
+    except KeyError:
+        pass
+    else:
+        assert False
+
+    tmp1 = cfg.getvarl_s(u"tree1", u"tree2", u"key10")
+    # non-cacheable interpolation
+    tmp2 = cfg.getvarl_s(u"tree1", u"tree2", u"key12")
+    tmp3 = cfg.getvarl_s(u"tree1", u"tree2", u"key13")
+
+    tmp1 = cfg.getvar_s(u"tree1.tree2.key10")
+    # non-cacheable interpolation
+    tmp2 = cfg.getvar_s(u"tree1.tree2.key12")
+    tmp3 = cfg.getvar_s(u"tree1.tree2.key13")
+
+    assert("key2" in cfg)
+    assert((u"tree1", u"tree2", u"keyX") not in cfg)
+    assert((u"tree1", u"tree2", u"key8") in cfg)
+
+    tmp1 = cfg.getvarl(u"tree1", u"treeXXXX", default=DEFAULT_DICT)
+    assert(tmp1 is DEFAULT_DICT)
+    tmp2 = cfg.getvarl_s(u"tree1", u"treeXXXXXXX", default=DEFAULT_DICT)
+    assert(tmp2 is DEFAULT_DICT)    
+    tmp3 = cfg.getvar(u"treeXXXXXXXXXXX", default=DEFAULT_DICT)
+    assert(tmp3 is DEFAULT_DICT)
+    tmp4 = cfg.getvar_s(u"treeXXXXXXXXXXXXXXXXXXX", default=DEFAULT_DICT)
+    assert(tmp4 is DEFAULT_DICT)
+
+    if WITH_JAIL:
+        jail = cfg.jailed(root=u"tree1.tree2")
+        assert(u"key5" in jail)
+        tmp1 = jail[u"key6"]
+        tmp2 = jail[(u"key8",)]
+
+        jail2 = cfg.jailed(rootpath=(u"tree1",))
+        assert((u"tree2", u"key9") in jail2)
+        tmp1 = jail2.getvarl_s(u"tree2")
+
+        tmp1 = jail2.getvar(u"tree3")
+        try:
+            tmp2 = jail2.getvar_s(u"tree3")
+        except KeyError:
+            pass
+        else:
+            assert False
+
+        try:
+            tmp1 = jail2.getvar(u"treeXXXX")
+        except KeyError:
+            pass
+        else:
+            assert False
+
+    if i % DOTS == 0:
+        print(".", end='', flush=True)
+
+    i += 1
+
+jail = jail2 = None
+tmp1 = tmp2 = tmp3 = tmp4 = None
+
+print()
+print("Done (loops: %d)." % (NUM,))