source: test/pyregfi-smoketest.py @ 213

Last change on this file since 213 was 213, checked in by tim, 13 years ago

fixed some pyregfi parameter bugs
fixed some iterator memory management problems
updated smoketest script to use ctypes pyregfi

  • Property svn:executable set to *
File size: 1.6 KB
Line 
1#!/usr/bin/env python3
2
3import sys
4import gc
5import pyregfi
6
7def usage():
8    sys.stderr.write("USAGE: pyregfi-smoketest.py hive1 [hive2 ...]\n")
9
10
11# Uses the HiveIterator to walk all keys
12# Gathers various (meaningless) statistics to exercise simple attribute access
13# and to hopefully smoke out any bugs that can be identified by changing stats
14def iterTally(hive):
15    key_count = 0
16    key_lens = 0
17    key_rawlens = 0
18    value_count = 0
19    value_lens = 0
20    value_rawlens = 0
21
22    for k in hive:
23        key_count += 1
24        if k.name != None:
25            key_lens += len(k.name)
26        if k.name_raw != None:
27            key_rawlens += len(k.name_raw)
28
29        for v in k.values:
30            value_count += 1
31            if v.name != None:
32                value_lens += len(v.name)
33            if v.name_raw != None:
34                value_rawlens += len(v.name_raw)
35
36    print("  Counts: keys=%d, values=%d\n" % (key_count, value_count))
37    print("  Total name length: keys=%d, values=%d\n" % (key_lens, value_lens))
38    print("  Total raw name lengths: keys=%d, values=%d\n" % (key_rawlens, value_rawlens))
39
40
41
42if len(sys.argv) < 2:
43    usage()
44    sys.exit(1)
45
46files = []
47for f in sys.argv[1:]:
48    files.append((f, open(f,"r+b")))
49
50tests = [("iterTally",iterTally),]
51
52for hname,fh in files:
53    hive = pyregfi.Hive(fh)
54    for tname,t in tests:
55        tstr = "'%s' on '%s'" % (tname,hname)
56        print("##BEGIN %s:" % tstr)
57        t(hive)
58        print("##END %s; messages:" % tstr)
59        print(pyregfi.GetLogMessages())
60        print
61    hive = None
62    gc.collect()
63
64files = None
65tests = None
66gc.collect()
67print gc.garbage
Note: See TracBrowser for help on using the repository browser.