diff --git a/tests/run_tests.py b/tests/run_tests.py index 617ed93..036cef5 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#!/usr/bin/env python3 import subprocess import types @@ -47,7 +47,7 @@ def bash(cmd): # Abort and mark this a strange test result return (127, "") out = p.stdout.read().strip() - return (rc, out) + return (rc, out.decode()) def snapshot_pool_state(): l = [] @@ -60,7 +60,7 @@ def snapshot_pool_state(): def run_test_prog(bits, pagesize, cmd, **env): if paranoid_pool_check: beforepool = snapshot_pool_state() - print "Pool state: %s" % str(beforepool) + print("Pool state: %s" % str(beforepool)) local_env = os.environ.copy() local_env.update(env) @@ -75,7 +75,7 @@ def run_test_prog(bits, pagesize, cmd, **env): rc = p.wait() except KeyboardInterrupt: # Abort and mark this a strange test result - return (None, "") + return (127, "") except OSError as e: return (-e.errno, "") out = p.stdout.read().strip() @@ -83,26 +83,26 @@ def run_test_prog(bits, pagesize, cmd, **env): if paranoid_pool_check: afterpool = snapshot_pool_state() if afterpool != beforepool: - print >>sys.stderr, "Hugepage pool state not preserved!" - print >>sys.stderr, "BEFORE: %s" % str(beforepool) - print >>sys.stderr, "AFTER: %s" % str(afterpool) + print("Hugepage pool state not preserved!", file=sys.stderr) + print("BEFORE: %s" % str(beforepool), file=sys.stderr) + print("AFTER: %s" % str(afterpool), file=sys.stderr) sys.exit(98) - return (rc, out) + return (rc, out.decode()) def setup_env(override, defaults): """ Set up the environment for running commands in the shell. """ # All items in override are unconditionally set or unset - for (var, val) in override.items(): + for (var, val) in list(override.items()): if val == None: if var in os.environ: del os.environ[var] else: os.environ[var] = val # If not already set, these variables are given default values - for (var, val) in defaults.items(): + for (var, val) in list(defaults.items()): if var not in os.environ or os.environ[var] == "": os.environ[var] = val @@ -143,22 +143,22 @@ def print_per_size(title, values): Print the results of a given result type on one line. The results for all page sizes and word sizes are written in a table format. """ - print "*%20s: " % title, + print("*%20s: " % title, end=' ') for sz in pagesizes: - print "%4s %4s " % (values[sz][32], values[sz][64]), - print + print("%4s %4s " % (values[sz][32], values[sz][64]), end=' ') + print() def results_summary(): """ Display a summary of the test results """ - print "********** TEST SUMMARY" - print "*%21s" % "", - for p in pagesizes: print "%-13s " % pretty_page_size(p), - print - print "*%21s" % "", - for p in pagesizes: print "32-bit 64-bit ", - print + print("********** TEST SUMMARY") + print("*%21s" % "", end=' ') + for p in pagesizes: print("%-13s " % pretty_page_size(p), end=' ') + print() + print("*%21s" % "", end=' ') + for p in pagesizes: print("32-bit 64-bit ", end=' ') + print() print_per_size("Total testcases", R["total"]) print_per_size("Skipped", R["skip"]) @@ -170,7 +170,7 @@ def results_summary(): print_per_size("Unexpected PASS", R["xpass"]) print_per_size("Test not present", R["nofile"]) print_per_size("Strange test result", R["strange"]) - print "**********" + print("**********") def free_hpages(): """ @@ -216,7 +216,7 @@ def clear_hpages(): cleaned up automatically and must be removed to free up the huge pages. """ for mount in mounts: - dir = mount + "/elflink-uid-" + `os.getuid()` + dir = mount + "/elflink-uid-" + repr(os.getuid()) for root, dirs, files in os.walk(dir, topdown=False): for name in files: os.remove(os.path.join(root, name)) @@ -270,13 +270,13 @@ def check_hugetlbfs_path(): okbits.append(b) mounts.append(out) if len(okbits) == 0: - print "run_tests.py: No mountpoints available for page size %s" % \ - pretty_page_size(p) + print("run_tests.py: No mountpoints available for page size %s" % \ + pretty_page_size(p)) wordsizes_by_pagesize[p] = set() continue for b in wordsizes - set(okbits): - print "run_tests.py: The %i bit word size is not compatible with " \ - "%s pages" % (b, pretty_page_size(p)) + print("run_tests.py: The %i bit word size is not compatible with " \ + "%s pages" % (b, pretty_page_size(p))) wordsizes_by_pagesize[p] = set(okbits) def check_linkhuge_tests(): @@ -298,10 +298,9 @@ def check_linkhuge_tests(): def print_cmd(pagesize, bits, cmd, env): if env: - print ' '.join(['%s=%s' % (k, v) for k, v in env.items()]), - if type(cmd) != types.StringType: - cmd = ' '.join(cmd) - print "%s (%s: %i):\t" % (cmd, pretty_page_size(pagesize), bits), + print(' '.join(['%s=%s' % (k, v) for k, v in list(env.items())]), end=' ') + + print("%s (%s: %i):\t" % (cmd, pretty_page_size(pagesize), bits), end=' ') sys.stdout.flush() def run_test(pagesize, bits, cmd, **env): @@ -321,7 +320,7 @@ def run_test(pagesize, bits, cmd, **env): print_cmd(pagesize, bits, cmd, env) (rc, out) = run_test_prog(bits, pagesize, cmd, **env) - print out + print(out) R["total"][pagesize][bits] += 1 if rc == 0: R["pass"][pagesize][bits] += 1 @@ -342,7 +341,7 @@ def skip_test(pagesize, bits, cmd, **env): R["total"][pagesize][bits] += 1 R["skip"][pagesize][bits] += 1 print_cmd(pagesize, bits, cmd, env) - print "SKIPPED" + print("SKIPPED") def do_test(cmd, bits=None, **env): """ @@ -466,9 +465,9 @@ def setup_shm_sysctl(limit): sysctls[f] = fh.read() fh.close() fh = open(f, "w") - fh.write(`limit`) + fh.write(repr(limit)) fh.close() - print "set shmmax limit to %s" % limit + print("set shmmax limit to %s" % limit) return sysctls def restore_shm_sysctl(sysctls): @@ -476,7 +475,7 @@ def restore_shm_sysctl(sysctls): Restore the sysctls named in 'sysctls' to the given values. """ if os.getuid() != 0: return - for (file, val) in sysctls.items(): + for (file, val) in list(sysctls.items()): fh = open(file, "w") fh.write(val) fh.close() @@ -659,17 +658,17 @@ def stress_tests(): do_test("fallocate_stress.sh") def print_help(): - print "Usage: %s [options]" % sys.argv[0] - print "Options:" - print " -v \t Verbose output." - print " -V \t Highly verbose output." - print " -f \t Force all tests." - print " -t Run test set, allowed are func and stress." - print " -b Define wordsizes to be used. " - print " -p Define the page sizes to be used." - print " -c \t Do a paranoid pool check." - print " -l \t Use custom ld scripts." - print " -h \t This help." + print("Usage: %s [options]" % sys.argv[0]) + print("Options:") + print(" -v \t Verbose output.") + print(" -V \t Highly verbose output.") + print(" -f \t Force all tests.") + print(" -t Run test set, allowed are func and stress.") + print(" -b Define wordsizes to be used. ") + print(" -p Define the page sizes to be used.") + print(" -c \t Do a paranoid pool check.") + print(" -l \t Use custom ld scripts.") + print(" -h \t This help.") sys.exit(0) def main(): @@ -685,8 +684,8 @@ def main(): try: opts, args = getopt.getopt(sys.argv[1:], "vVft:b:p:c:lh") - except getopt.GetoptError, err: - print str(err) + except getopt.GetoptError as err: + print(str(err)) sys.exit(1) for opt, arg in opts: if opt == "-v": @@ -715,8 +714,8 @@ def main(): if len(pagesizes) == 0: pagesizes = get_pagesizes() if len(pagesizes) == 0: - print "Unable to find available page sizes, are you sure hugetlbfs" - print "is mounted and there are available huge pages?" + print("Unable to find available page sizes, are you sure hugetlbfs") + print("is mounted and there are available huge pages?") return 1 setup_env(env_override, env_defaults) @@ -724,8 +723,8 @@ def main(): (rc, system_default_hpage_size) = hpage_size() if rc != 0: - print "Unable to find system default hugepage size." - print "Is hugepage supported included in this kernel?" + print("Unable to find system default hugepage size.") + print("Is hugepage supported included in this kernel?") return 1 check_hugetlbfs_path()