Skip to content

Commit

Permalink
Test for --min-duration
Browse files Browse the repository at this point in the history
  • Loading branch information
jbytheway committed Jun 2, 2020
1 parent fd313f0 commit 08af3e6
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions projects/TestScripts/testTimeThreshold.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env python3

import subprocess
import sys

def run_tests_with_threshold(self_test_exe, threshold):
cmd = [self_test_exe, '--min-duration', str(threshold)]
process = subprocess.Popen(
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
if stderr:
raise RuntimeError("Unexpected error output:\n" +
stderr.decode())
if process.returncode != 0:
raise RuntimeError("Unexpected failure to run tests\n")
result = stdout.split(b'\n')
times_reported = [float(s.split()[0]) for s in result if b' s: ' in s]
return times_reported

def check_times_at_least(times_reported, minimum):
for time in times_reported:
assert time >= minimum, (
'Time {} was less that requested minimum {}' .format(
time, minimum))

def main():
self_test_exe, = sys.argv[1:]
times = run_tests_with_threshold(self_test_exe, '1000')
assert not times
times = run_tests_with_threshold(self_test_exe, '0')
assert times
check_times_at_least(times, 0)
nonzero_times = sorted([t for t in times if t > 0])
if nonzero_times:
median_nonzero_time = nonzero_times[len(nonzero_times)//2]
times = run_tests_with_threshold(self_test_exe, median_nonzero_time)
check_times_at_least(times, median_nonzero_time)
else:
times = run_tests_with_threshold(self_test_exe, 1)
assert not times

if __name__ == '__main__':
sys.exit(main())

0 comments on commit 08af3e6

Please sign in to comment.