summaryrefslogtreecommitdiffstats
path: root/examples/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/test.py')
-rwxr-xr-xexamples/test.py83
1 files changed, 54 insertions, 29 deletions
diff --git a/examples/test.py b/examples/test.py
index 79f11d3..c645d02 100755
--- a/examples/test.py
+++ b/examples/test.py
@@ -5,6 +5,29 @@ from pprint import pprint
import os, sys, random, tempfile, time
import commands
+DUMPS_D = "../../pydmidata/"
+
+def ascii(s, i): return "\033[%d;1m%s\033[0m"%(30+i, str(s))
+def black(s): return "\033[30;1m%s\033[0m"%(str(s))
+def red(s): return "\033[31;1m%s\033[0m"%(str(s))
+def green(s): return "\033[32;1m%s\033[0m"%(str(s))
+def yellow(s): return "\033[33;1m%s\033[0m"%(str(s))
+def blue(s): return "\033[34;1m%s\033[0m"%(str(s))
+def magenta(s): return "\033[35;1m%s\033[0m"%(str(s))
+def cyan(s): return "\033[36;1m%s\033[0m"%(str(s))
+def white(s): return "\033[37;1m%s\033[0m"%(str(s))
+
+DISPATCH = {
+ 1 : red,
+ 2 : green,
+ 3 : yellow,
+ 4 : blue,
+ 5 : magenta,
+ 6 : cyan,
+ 7 : white,
+}
+
+LINE = "%s\n"%(magenta("="*80))
dmidecode = True in [os.path.exists(os.path.join(_, "dmidecode")) for _ in os.getenv("PATH").split(':')]
if dmidecode:
print "Please install `dmidecode' (the binary) for complete testing."
@@ -22,40 +45,40 @@ def test(r):
total += 1
if r:
- sys.stdout.write("Good\n")
+ sys.stdout.write("%s\n"%green("PASS"))
success += 1
return True
else:
- sys.stdout.write("FAILED\n")
+ sys.stdout.write("%s\n"%red("FAIL"))
return False
total += 1
-print "-"*80
-sys.stdout.write("Importing module...")
+sys.stdout.write(LINE)
+sys.stdout.write(" * Importing module...")
try:
import dmidecode
success += 1
- sys.stdout.write("Done\n")
- sys.stdout.write(" * Version: %s\n"%dmidecode.version)
- sys.stdout.write(" * DMI Version String: %s\n"%dmidecode.dmi)
+ sys.stdout.write("%s\n"%green("PASS"))
+ sys.stdout.write(" * Version: %s\n"%blue(dmidecode.version))
+ sys.stdout.write(" * DMI Version String: %s\n"%blue(dmidecode.dmi))
print "-"*80
- sys.stdout.write("Testing that default device is /dev/mem...")
+ sys.stdout.write(" * Testing that default device is /dev/mem...")
test(dmidecode.get_dev() == "/dev/mem")
- sys.stdout.write("Testing that write-lock will not break on dump()...")
+ sys.stdout.write(" * Testing that write-lock will not break on dump()...")
test(not dmidecode.dump())
- sys.stdout.write("Testing ability to change device to %s..."%DUMP)
+ sys.stdout.write(" * Testing ability to change device to %s..."%DUMP)
test(dmidecode.set_dev(DUMP))
- sys.stdout.write("Testing that device has changed to %s..."%DUMP)
+ sys.stdout.write(" * Testing that device has changed to %s..."%DUMP)
test(dmidecode.get_dev() == DUMP)
- sys.stdout.write("Testing that write on new file is ok...")
+ sys.stdout.write(" * Testing that write on new file is ok...")
test(dmidecode.dump())
- sys.stdout.write("Testing that file was actually written...")
+ sys.stdout.write(" * Testing that file was actually written...")
time.sleep(0.1)
test(os.path.exists(DUMP))
os.unlink(DUMP)
@@ -64,39 +87,39 @@ try:
bad_types = [-1, -1000, 256]
sections = ["bios", "system", "baseboard", "chassis", "processor", "memory", "cache", "connector", "slot"]
devices = []
- if os.path.exists("private"):
- devices.extend([os.path.join("private", _) for _ in os.listdir("private")])
- devices.remove('private/.svn')
+ if os.path.exists(DUMPS_D):
+ devices.extend([os.path.join(DUMPS_D, _) for _ in os.listdir(DUMPS_D)])
else:
- sys.stdout.write("If you have memory dumps to test, create a directory called `private' and drop them in there.\n")
+ sys.stdout.write(" * If you have memory dumps to test, create a directory called `%s' and drop them in there.\n"%(DUMPS_D))
devices.append("/dev/mem")
random.shuffle(types)
random.shuffle(devices)
random.shuffle(sections)
for dev in devices:
- sys.stdout.write(" * Testing %s..."%dev); sys.stdout.flush()
+ sys.stdout.write(" * Testing %s..."%yellow(dev)); sys.stdout.flush()
if test(dmidecode.set_dev(dev) and dmidecode.get_dev() == dev):
- print "-"*80
- print sections
+ sys.stdout.write(LINE)
+ i = 0
for section in sections:
- sys.stdout.write(" * Testing %s..."%section); sys.stdout.flush()
+ i += 0
+ sys.stdout.write(" * Testing %s (%s/%d)..."%cyan(section), i, len(sections)); sys.stdout.flush()
output = getattr(dmidecode, section)()
test(output is not False)
- if output: sys.stdout.write(" * %s\n"%output.keys())
+ if output: sys.stdout.write(" * %s\n"%black(output.keys()))
- print "-"*80
+ sys.stdout.write(LINE)
for i in bad_types:
- sys.stdout.write(" * Testing bad type %i..."%i); sys.stdout.flush()
+ sys.stdout.write(" * Testing bad type %s..."%red(i)); sys.stdout.flush()
try:
output = dmidecode.type(i)
test(output is False)
except SystemError:
- sys.stdout.write("FAILED\n")
+ sys.stdout.write("%s\n"%red("FAIL"))
- print "-"*80
+ sys.stdout.write(LINE)
for i in types:
- sys.stdout.write(" * Testing type %i..."%i); sys.stdout.flush()
+ sys.stdout.write(" * Testing type %s..."%red(i)); sys.stdout.flush()
output = dmidecode.type(i)
if dmidecode:
_output = commands.getoutput("dmidecode -t %d"%i).strip().split('\n')
@@ -107,6 +130,8 @@ try:
sys.stdout.write(" * %s\n"%output.keys())
except ImportError:
- sys.stdout.write("FAILED\n")
+ sys.stdout.write("%s\n"%red("FAIL"))
-sys.stdout.write("Score: %d/%d\n"%(success, total))
+color = red
+if success == total: color = green
+sys.stdout.write("Score: %s/%s\n"%(color(success), color(total)))