From d2002f83340f71470f507eac8ca36aa44f382dc2 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Tue, 3 Mar 2015 23:08:41 +0100 Subject: [PATCH] tests: Allow running with arbitrary working directory It's somewhat annoying that you can only run parallel-vm.py as ./parallel-vm.py, not from elsewhere by giving the full path, so fix that by resolving the paths correctly in the scripts where needed. Signed-off-by: Johannes Berg --- tests/hwsim/run-tests.py | 11 +++-------- tests/hwsim/vm/parallel-vm.py | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/tests/hwsim/run-tests.py b/tests/hwsim/run-tests.py index 0cd404325..7e9c4a255 100755 --- a/tests/hwsim/run-tests.py +++ b/tests/hwsim/run-tests.py @@ -18,10 +18,8 @@ import termios import logging logger = logging.getLogger() -if os.path.exists('../../wpaspy'): - sys.path.append('../../wpaspy') -else: - sys.path.append('../../../wpaspy') +scriptsdir = os.path.dirname(os.path.realpath(sys.modules[__name__].__file__)) +sys.path.append(os.path.join(scriptsdir, '..', '..', 'wpaspy')) from wpasupplicant import WpaSupplicant from hostapd import HostapdGlobal @@ -169,10 +167,7 @@ def rename_log(logdir, basename, testname, dev): def main(): tests = [] test_modules = [] - if os.path.exists('run-tests.py'): - files = os.listdir(".") - else: - files = os.listdir("..") + files = os.listdir(scriptsdir) for t in files: m = re.match(r'(test_.*)\.py$', t) if m: diff --git a/tests/hwsim/vm/parallel-vm.py b/tests/hwsim/vm/parallel-vm.py index e4bab5221..a1adec8f0 100755 --- a/tests/hwsim/vm/parallel-vm.py +++ b/tests/hwsim/vm/parallel-vm.py @@ -241,6 +241,7 @@ def show_progress(scr): def main(): import argparse + import os global num_servers global vm global dir @@ -259,6 +260,8 @@ def main(): rerun_failures = True timestamp = int(time.time()) + scriptsdir = os.path.dirname(os.path.realpath(sys.argv[0])) + p = argparse.ArgumentParser(description='run multiple testing VMs in parallel') p.add_argument('num_servers', metavar='number of VMs', type=int, choices=range(1, 100), help="number of VMs to start") @@ -289,7 +292,8 @@ def main(): print "Code coverage - build separate binaries" logdir = "/tmp/hwsim-test-logs/" + str(timestamp) os.makedirs(logdir) - subprocess.check_call(['./build-codecov.sh', logdir]) + subprocess.check_call([os.path.join(scriptsdir, 'build-codecov.sh'), + logdir]) codecov_args = ['--codecov_dir', logdir] codecov = True else: @@ -298,7 +302,7 @@ def main(): first_run_failures = [] tests = [] - cmd = [ '../run-tests.py', '-L' ] + cmd = [ os.path.join(os.path.dirname(scriptsdir), 'run-tests.py'), '-L' ] if args.testmodules: cmd += [ "-f" ] cmd += args.testmodules @@ -377,7 +381,8 @@ def main(): for i in range(0, num_servers): print("\rStarting virtual machine {}/{}".format(i + 1, num_servers)), logger.info("Starting virtual machine {}/{}".format(i + 1, num_servers)) - cmd = ['./vm-run.sh', '--delay', str(i), '--timestamp', str(timestamp), + cmd = [os.path.join(scriptsdir, 'vm-run.sh'), '--delay', str(i), + '--timestamp', str(timestamp), '--ext', 'srv.%d' % (i + 1), '-i'] + codecov_args + extra_args vm[i] = {} @@ -448,10 +453,12 @@ def main(): if codecov: print "Code coverage - preparing report" for i in range(num_servers): - subprocess.check_call(['./process-codecov.sh', + subprocess.check_call([os.path.join(scriptsdir, + 'process-codecov.sh'), logdir + ".srv.%d" % (i + 1), str(i)]) - subprocess.check_call(['./combine-codecov.sh', logdir]) + subprocess.check_call([os.path.join(scriptsdir, 'combine-codecov.sh'), + logdir]) print "file://%s/index.html" % logdir logger.info("Code coverage report: file://%s/index.html" % logdir)