Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add various strategies to minimize different patterns. #2

Merged
merged 10 commits into from
May 1, 2017
48 changes: 48 additions & 0 deletions interestingness/diffTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/usr/bin/env python

from optparse import OptionParser

import timedRun
import filecmp


def parseOptions(arguments):
parser = OptionParser()
parser.disable_interspersed_args()
parser.add_option('-t', '--timeout', type='int', action='store', dest='condTimeout',
default=120,
help='Optionally set the timeout. Defaults to "%default" seconds.')
parser.add_option('-a', '--a-arg', type='string', action='append', dest='aArgs',
default=[],
help='Set of extra arguments given to first run.')
parser.add_option('-b', '--b-arg', type='string', action='append', dest='bArgs',
default=[],
help='Set of extra arguments given to second run.')

options, args = parser.parse_args(arguments)

return options.condTimeout, options.aArgs, options.bArgs, args

def interesting(cliArgs, tempPrefix):
(timeout, aArgs, bArgs, args) = parseOptions(cliArgs)

aRuninfo = timedRun.timed_run(args[:1] + aArgs + args[1:], timeout, tempPrefix + "-a")
bRuninfo = timedRun.timed_run(args[:1] + bArgs + args[1:], timeout, tempPrefix + "-b")
timeString = " (1st Run: %.3f seconds) (2nd Run: %.3f seconds)" % (aRuninfo.elapsedtime, bRuninfo.elapsedtime)

if aRuninfo.sta != timedRun.TIMED_OUT and bRuninfo.sta != timedRun.TIMED_OUT:
if aRuninfo.rc != bRuninfo.rc:
print ("[Interesting] Different return code. (%d, %d) " % (aRuninfo.rc, bRuninfo.rc)) + timeString
return True
if not filecmp.cmp(aRuninfo.out, bRuninfo.out):
print "[Interesting] Different output. " + timeString
return True
if not filecmp.cmp(aRuninfo.err, bRuninfo.err):
print "[Interesting] Different error output. " + timeString
return True
else:
print "[Uninteresting] At least one test timed out." + timeString
return False

print "[Uninteresting] Identical behaviour." + timeString
return False
Loading