mirror of https://github.com/ArduPilot/ardupilot
autotest: added --timeout option
try to ensure we end up with a timeout display on the website
This commit is contained in:
parent
5525180814
commit
f3a45bfb41
|
@ -3,7 +3,7 @@
|
||||||
# Andrew Tridgell, October 2011
|
# Andrew Tridgell, October 2011
|
||||||
|
|
||||||
import pexpect, os, sys, shutil, atexit
|
import pexpect, os, sys, shutil, atexit
|
||||||
import optparse, fnmatch, time, glob, traceback
|
import optparse, fnmatch, time, glob, traceback, signal
|
||||||
|
|
||||||
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), 'pysim'))
|
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), 'pysim'))
|
||||||
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', '..', 'mavlink', 'pymavlink'))
|
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', '..', 'mavlink', 'pymavlink'))
|
||||||
|
@ -96,6 +96,16 @@ def test_prerequesites():
|
||||||
util.mkdir_p(util.reltopdir('../buildlogs'))
|
util.mkdir_p(util.reltopdir('../buildlogs'))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def alarm_handler(signum, frame):
|
||||||
|
'''handle test timeout'''
|
||||||
|
global results, opts
|
||||||
|
try:
|
||||||
|
results.add('TIMEOUT', '<span class="failed-text">FAILED</span>', opts.timeout)
|
||||||
|
write_webresults(results)
|
||||||
|
os.killpg(0, signal.SIGKILL)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
############## main program #############
|
############## main program #############
|
||||||
parser = optparse.OptionParser("autotest")
|
parser = optparse.OptionParser("autotest")
|
||||||
|
@ -103,6 +113,7 @@ parser.add_option("--skip", type='string', default='', help='list of steps to sk
|
||||||
parser.add_option("--list", action='store_true', default=False, help='list the available steps')
|
parser.add_option("--list", action='store_true', default=False, help='list the available steps')
|
||||||
parser.add_option("--viewerip", default=None, help='IP address to send MAVLink and fg packets to')
|
parser.add_option("--viewerip", default=None, help='IP address to send MAVLink and fg packets to')
|
||||||
parser.add_option("--experimental", default=False, action='store_true', help='enable experimental tests')
|
parser.add_option("--experimental", default=False, action='store_true', help='enable experimental tests')
|
||||||
|
parser.add_option("--timeout", default=2400, type='int', help='maximum runtime in seconds')
|
||||||
|
|
||||||
opts, args = parser.parse_args()
|
opts, args = parser.parse_args()
|
||||||
|
|
||||||
|
@ -128,6 +139,10 @@ steps = [
|
||||||
|
|
||||||
skipsteps = opts.skip.split(',')
|
skipsteps = opts.skip.split(',')
|
||||||
|
|
||||||
|
# ensure we catch timeouts
|
||||||
|
signal.signal(signal.SIGALRM, alarm_handler)
|
||||||
|
signal.alarm(opts.timeout)
|
||||||
|
|
||||||
def skip_step(step):
|
def skip_step(step):
|
||||||
'''see if a step should be skipped'''
|
'''see if a step should be skipped'''
|
||||||
for skip in skipsteps:
|
for skip in skipsteps:
|
||||||
|
@ -235,11 +250,11 @@ def write_webresults(results):
|
||||||
shutil.copy(f, util.reltopdir('../buildlogs/%s' % os.path.basename(f)))
|
shutil.copy(f, util.reltopdir('../buildlogs/%s' % os.path.basename(f)))
|
||||||
|
|
||||||
|
|
||||||
|
results = TestResults()
|
||||||
|
|
||||||
def run_tests(steps):
|
def run_tests(steps):
|
||||||
'''run a list of steps'''
|
'''run a list of steps'''
|
||||||
|
global results
|
||||||
results = TestResults()
|
|
||||||
|
|
||||||
passed = True
|
passed = True
|
||||||
failed = []
|
failed = []
|
||||||
|
|
Loading…
Reference in New Issue