Mercurial > hgrepos > Python > libs > ConfigMix
changeset 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 | 8d2d5d54ff3c |
| children | 429a7d5002b8 |
| files | tests/data/conf_perf.py tests/valgrind-checks.py |
| diffstat | 2 files changed, 123 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/data/conf_perf.py Thu Jan 13 17:38:57 2022 +0100 +++ b/tests/data/conf_perf.py Thu Jan 13 17:52:46 2022 +0100 @@ -7,14 +7,14 @@ from collections import OrderedDict except ImportError: from ordereddict import OrderedDict - + key1 = u"in the root namespace" key2 = u"in the root namespace -- too" tree1 = OrderedDict([ (u'key3', 0x20), - + (u'tree2', OrderedDict([ (u'key4', u"get this as `tree1.tree2.key4'"), (u'key5', True), @@ -29,5 +29,8 @@ (u'key10', u"1{{key1}}2{{key2}}{{key1}}3{{tree1.tree2.key4}}"), (u"key11", u"{{tree1.tree2.key6}}"), (u"key12", u"{{PY:version}}"), - (u"key13", u"{{tree1.key3}}__{{PY:version}}"), - ]))]) + (u"key13", u"{{tree1.key3}}__{{PY:version}}")])), + + (u'tree3', OrderedDict([ + (u'bogus-key', u"{{key2}}{{non.existing}}")])), +])
--- /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,))
