diff --git a/Tools/autotest/apmrover2.py b/Tools/autotest/apmrover2.py index d84e5a328d..b094685090 100644 --- a/Tools/autotest/apmrover2.py +++ b/Tools/autotest/apmrover2.py @@ -83,16 +83,10 @@ def drive_APMrover2(viewerip=None, map=False): if map: options += ' --map' - sim_cmd = util.reltopdir('Tools/autotest/pysim/sim_wrapper.py') + ' --frame=rover --rate=200 --speedup=100 --home=%f,%f,%u,%u' % ( - HOME.lat, HOME.lng, HOME.alt, HOME.heading) - - sil = util.start_SIL('APMrover2', wipe=True) + home = "%f,%f,%u,%u" % (HOME.lat, HOME.lng, HOME.alt, HOME.heading) + sil = util.start_SIL('APMrover2', wipe=True, model='rover', home=home, speedup=10) mavproxy = util.start_MAVProxy_SIL('APMrover2', options=options) - runsim = pexpect.spawn(sim_cmd, logfile=sys.stdout, timeout=10) - runsim.delaybeforesend = 0 - runsim.expect('Starting at lat') - print("WAITING FOR PARAMETERS") mavproxy.expect('Received [0-9]+ parameters') @@ -103,9 +97,8 @@ def drive_APMrover2(viewerip=None, map=False): # restart with new parms util.pexpect_close(mavproxy) util.pexpect_close(sil) - util.pexpect_close(runsim) - sil = util.start_SIL('APMrover2') + sil = util.start_SIL('APMrover2', model='rover', home=home, speedup=10) mavproxy = util.start_MAVProxy_SIL('APMrover2', options=options) mavproxy.expect('Logging to (\S+)') logfile = mavproxy.match.group(1) @@ -114,11 +107,6 @@ def drive_APMrover2(viewerip=None, map=False): sim_cmd = util.reltopdir('Tools/autotest/pysim/sim_wrapper.py') + ' --frame=rover --rate=200 --speedup=100 --home=%f,%f,%u,%u' % ( HOME.lat, HOME.lng, HOME.alt, HOME.heading) - runsim = pexpect.spawn(sim_cmd, logfile=sys.stdout, timeout=10) - runsim.delaybeforesend = 0 - util.pexpect_autoclose(runsim) - runsim.expect('Starting at lat') - buildlog = util.reltopdir("../buildlogs/APMrover2-test.tlog") print("buildlog=%s" % buildlog) if os.path.exists(buildlog): @@ -133,7 +121,7 @@ def drive_APMrover2(viewerip=None, map=False): util.expect_setup_callback(mavproxy, expect_callback) expect_list_clear() - expect_list_extend([runsim, sil, mavproxy]) + expect_list_extend([sil, mavproxy]) print("Started simulator") @@ -176,7 +164,6 @@ def drive_APMrover2(viewerip=None, map=False): mav.close() util.pexpect_close(mavproxy) util.pexpect_close(sil) - util.pexpect_close(runsim) if os.path.exists('APMrover2-valgrind.log'): os.chmod('APMrover2-valgrind.log', 0644) diff --git a/Tools/autotest/autotest.py b/Tools/autotest/autotest.py index 1bd3c84338..32201ff020 100755 --- a/Tools/autotest/autotest.py +++ b/Tools/autotest/autotest.py @@ -144,6 +144,7 @@ parser.add_option("--viewerip", default=None, help='IP address to send MAVLink a parser.add_option("--map", action='store_true', default=False, help='show map') parser.add_option("--experimental", default=False, action='store_true', help='enable experimental tests') parser.add_option("--timeout", default=3000, type='int', help='maximum runtime in seconds') +parser.add_option("-j", default=1, type='int', help='build CPUs') opts, args = parser.parse_args() @@ -201,13 +202,13 @@ def run_step(step): return test_prerequisites() if step == 'build.ArduPlane': - return util.build_SIL('ArduPlane') + return util.build_SIL('ArduPlane', j=opts.j) if step == 'build.APMrover2': - return util.build_SIL('APMrover2') + return util.build_SIL('APMrover2', j=opts.j) if step == 'build.ArduCopter': - return util.build_SIL('ArduCopter') + return util.build_SIL('ArduCopter', j=opts.j) if step == 'defaults.ArduPlane': return get_default_params('ArduPlane') diff --git a/Tools/autotest/pysim/util.py b/Tools/autotest/pysim/util.py index 8ba3bfdf68..86ea89654a 100644 --- a/Tools/autotest/pysim/util.py +++ b/Tools/autotest/pysim/util.py @@ -58,12 +58,12 @@ def deltree(path): -def build_SIL(atype, target='sitl'): +def build_SIL(atype, target='sitl', j=1): '''build desktop SIL''' run_cmd("make clean", dir=reltopdir(atype), checkfail=True) - run_cmd("make %s" % target, + run_cmd("make -j%u %s" % (j, target), dir=reltopdir(atype), checkfail=True) return True @@ -105,7 +105,7 @@ def pexpect_drain(p): except pexpect.TIMEOUT: pass -def start_SIL(atype, valgrind=False, wipe=False, height=None, synthetic_clock=True): +def start_SIL(atype, valgrind=False, wipe=False, height=None, synthetic_clock=True, home=None, model=None, speedup=1): '''launch a SIL instance''' import pexpect cmd="" @@ -121,6 +121,12 @@ def start_SIL(atype, valgrind=False, wipe=False, height=None, synthetic_clock=Tr cmd += ' -H %u' % height if synthetic_clock: cmd += ' -S' + if home is not None: + cmd += ' --home=%s' % home + if model is not None: + cmd += ' --model=%s' % model + if speedup != 1: + cmd += ' --speedup=%f' % speedup ret = pexpect.spawn(cmd, logfile=sys.stdout, timeout=5) ret.delaybeforesend = 0 pexpect_autoclose(ret)