Message ID | 52b5a2bbd3e4e94e7f94e1443eee305428c62dff.1408109650.git.maria.k@catit.be |
---|---|
State | New |
Headers | show |
On Fri, 08/15 17:55, Maria Kustova wrote: > Signed-off-by: Maria Kustova <maria.k@catit.be> > --- > tests/image-fuzzer/runner.py | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/tests/image-fuzzer/runner.py b/tests/image-fuzzer/runner.py > index 3fa7fca..688d470 100755 > --- a/tests/image-fuzzer/runner.py > +++ b/tests/image-fuzzer/runner.py > @@ -25,6 +25,7 @@ import subprocess > import random > import shutil > from itertools import count > +import time > import getopt > import StringIO > import resource > @@ -206,7 +207,7 @@ class TestEnv(object): > elif item[0] == 'qemu-io': > current_cmd = list(self.qemu_io) > else: > - multilog("Warning: test command '%s' is not defined.\n" \ > + multilog("Warning: test command '%s' is not defined.\n" The change seems irrelevant. > % item[0], sys.stderr, self.log, self.parent_log) > continue > # Replace all placeholders with their real values > @@ -269,6 +270,7 @@ if __name__ == '__main__': > > Optional arguments: > -h, --help display this help and exit > + -d, --duration=NUMBER finish tests after NUMBER of seconds > -c, --command=JSON run tests for all commands specified in > the JSON array > -s, --seed=STRING seed for a test image generation, > @@ -325,10 +327,15 @@ if __name__ == '__main__': > finally: > test.finish() > > + def is_continue(duration, start_time): Maybe "should_continue" ? > + """Return True if a new test can be started and False otherwise.""" > + current_time = int(time.time()) > + return (duration is None) or (current_time - start_time < duration) > + > try: > - opts, args = getopt.gnu_getopt(sys.argv[1:], 'c:hs:kv', > + opts, args = getopt.gnu_getopt(sys.argv[1:], 'c:hs:kvd:', > ['command=', 'help', 'seed=', 'config=', > - 'keep_passed', 'verbose']) > + 'keep_passed', 'verbose', 'duration=']) > except getopt.error, e: > print >>sys.stderr, \ > "Error: %s\n\nTry 'runner.py --help' for more information" % e > @@ -339,6 +346,8 @@ if __name__ == '__main__': > log_all = False > seed = None > config = None > + duration = None > + > for opt, arg in opts: > if opt in ('-h', '--help'): > usage() > @@ -357,6 +366,8 @@ if __name__ == '__main__': > log_all = True > elif opt in ('-s', '--seed'): > seed = arg > + elif opt in ('-d', '--duration'): > + duration = int(arg) > elif opt == '--config': > try: > config = json.loads(arg) > @@ -394,9 +405,11 @@ if __name__ == '__main__': > resource.setrlimit(resource.RLIMIT_CORE, (-1, -1)) > # If a seed is specified, only one test will be executed. > # Otherwise runner will terminate after a keyboard interruption > - for test_id in count(1): > + start_time = int(time.time()) > + test_id = count(1) > + while is_continue(duration, start_time): > try: > - run_test(str(test_id), seed, work_dir, run_log, cleanup, > + run_test(str(test_id.next()), seed, work_dir, run_log, cleanup, > log_all, command, config) > except (KeyboardInterrupt, SystemExit): > sys.exit(1) > -- > 1.9.3 > Modulus the above two minor issues, Reviewed-by: Fam Zheng <famz@redhat.com>
diff --git a/tests/image-fuzzer/runner.py b/tests/image-fuzzer/runner.py index 3fa7fca..688d470 100755 --- a/tests/image-fuzzer/runner.py +++ b/tests/image-fuzzer/runner.py @@ -25,6 +25,7 @@ import subprocess import random import shutil from itertools import count +import time import getopt import StringIO import resource @@ -206,7 +207,7 @@ class TestEnv(object): elif item[0] == 'qemu-io': current_cmd = list(self.qemu_io) else: - multilog("Warning: test command '%s' is not defined.\n" \ + multilog("Warning: test command '%s' is not defined.\n" % item[0], sys.stderr, self.log, self.parent_log) continue # Replace all placeholders with their real values @@ -269,6 +270,7 @@ if __name__ == '__main__': Optional arguments: -h, --help display this help and exit + -d, --duration=NUMBER finish tests after NUMBER of seconds -c, --command=JSON run tests for all commands specified in the JSON array -s, --seed=STRING seed for a test image generation, @@ -325,10 +327,15 @@ if __name__ == '__main__': finally: test.finish() + def is_continue(duration, start_time): + """Return True if a new test can be started and False otherwise.""" + current_time = int(time.time()) + return (duration is None) or (current_time - start_time < duration) + try: - opts, args = getopt.gnu_getopt(sys.argv[1:], 'c:hs:kv', + opts, args = getopt.gnu_getopt(sys.argv[1:], 'c:hs:kvd:', ['command=', 'help', 'seed=', 'config=', - 'keep_passed', 'verbose']) + 'keep_passed', 'verbose', 'duration=']) except getopt.error, e: print >>sys.stderr, \ "Error: %s\n\nTry 'runner.py --help' for more information" % e @@ -339,6 +346,8 @@ if __name__ == '__main__': log_all = False seed = None config = None + duration = None + for opt, arg in opts: if opt in ('-h', '--help'): usage() @@ -357,6 +366,8 @@ if __name__ == '__main__': log_all = True elif opt in ('-s', '--seed'): seed = arg + elif opt in ('-d', '--duration'): + duration = int(arg) elif opt == '--config': try: config = json.loads(arg) @@ -394,9 +405,11 @@ if __name__ == '__main__': resource.setrlimit(resource.RLIMIT_CORE, (-1, -1)) # If a seed is specified, only one test will be executed. # Otherwise runner will terminate after a keyboard interruption - for test_id in count(1): + start_time = int(time.time()) + test_id = count(1) + while is_continue(duration, start_time): try: - run_test(str(test_id), seed, work_dir, run_log, cleanup, + run_test(str(test_id.next()), seed, work_dir, run_log, cleanup, log_all, command, config) except (KeyboardInterrupt, SystemExit): sys.exit(1)
Signed-off-by: Maria Kustova <maria.k@catit.be> --- tests/image-fuzzer/runner.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-)