#!/usr/bin/env python
# This is a convenience script for running some of the other tests without
# manual intervention, as a means of a fast and easy correctness test.
#
# If you are making an intrusive or risky change, please take the time to run
# the other tests by hand with more intensive parameters, and check the
# coverage and use the other tools mentioned in the README.
import sys
import os
import subprocess
import random
# Go to our directory, which we will use to find the other tools
os.chdir(os.path.dirname(sys.argv[0]))
if len(sys.argv) != 2 or sys.argv[1] not in ("normal", "fiu"):
sys.stderr.write("Usage: %s [normal|fiu]" %
os.path.basename(sys.argv[0]))
sys.exit(1)
def run_behaviour_tests(test_type):
ret = subprocess.call(["./wrap-python", "2", "../behaviour/runtests",
test_type])
if ret != 0:
sys.exit(ret)
def run_stress_tests(nops = 0, nprocs = 0, fi = False, fsize = 20):
# Create a temporary path. We can't use os.tempnam() because it emits
# a warning about a security risk, although it is safe for us because
# of how jiostress opens the file.
tmp_path = "%s/libjio-tests-%d-%d" % ( \
os.environ.get("TMPDIR", "/tmp"),
os.getpid(),
random.randint(0, 1000000000))
args = ["./wrap-python", "3", "../stress/jiostress",
tmp_path, str(fsize)]
if nops:
args += ["-n", str(nops)]
if nprocs:
args += ["-p", str(nprocs)]
if fi:
args += ["--fi"]
ret = subprocess.call(args)
if ret != 0:
sys.exit(ret)
if sys.argv[1] == "normal":
print "behaviour tests (normal)"
run_behaviour_tests("normal")
print
print "stress tests (normal)"
run_stress_tests(nops = 50, nprocs = 3)
else:
print "behaviour tests (all)"
run_behaviour_tests("all")
print
print "stress tests (normal)"
run_stress_tests(nops = 50, nprocs = 3)
print
print "stress tests (fiu)"
run_stress_tests(nops = 400, fi = True)
print
print
print "Tests completed successfuly"
print