mirror of https://github.com/ArduPilot/ardupilot
autotest: added a web server test
both native sockets and PPP
This commit is contained in:
parent
adffd93894
commit
60bfcf3cdc
|
@ -675,6 +675,20 @@ def start_MAVProxy_SITL(atype,
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def start_PPP_daemon(ips, sockaddr):
|
||||||
|
"""Start pppd for networking"""
|
||||||
|
|
||||||
|
global close_list
|
||||||
|
cmd = "sudo pppd socket %s debug noauth nodetach %s" % (sockaddr, ips)
|
||||||
|
cmd = cmd.split()
|
||||||
|
print("Running: %s" % cmd_as_shell(cmd))
|
||||||
|
|
||||||
|
ret = pexpect.spawn(cmd[0], cmd[1:], logfile=sys.stdout, encoding=ENCODING, timeout=30)
|
||||||
|
ret.delaybeforesend = 0
|
||||||
|
pexpect_autoclose(ret)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def expect_setup_callback(e, callback):
|
def expect_setup_callback(e, callback):
|
||||||
"""Setup a callback that is called once a second while waiting for
|
"""Setup a callback that is called once a second while waiting for
|
||||||
patterns."""
|
patterns."""
|
||||||
|
|
|
@ -6625,6 +6625,106 @@ Brakes have negligible effect (with=%0.2fm without=%0.2fm delta=%0.2fm)
|
||||||
"poll": True,
|
"poll": True,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def TestWebServer(self, url):
|
||||||
|
'''test active web server'''
|
||||||
|
self.progress("Accessing webserver main page")
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
main_page = urllib.request.urlopen(url).read().decode('utf-8')
|
||||||
|
if main_page.find('ArduPilot Web Server') == -1:
|
||||||
|
raise NotAchievedException("Expected banner on main page")
|
||||||
|
|
||||||
|
board_status = urllib.request.urlopen(url + '/@DYNAMIC/board_status.shtml').read().decode('utf-8')
|
||||||
|
if board_status.find('0 hours') == -1:
|
||||||
|
raise NotAchievedException("Expected uptime in board status")
|
||||||
|
if board_status.find('40.713') == -1:
|
||||||
|
raise NotAchievedException("Expected lattitude in board status")
|
||||||
|
|
||||||
|
self.progress("WebServer tests OK")
|
||||||
|
|
||||||
|
def NetworkingWebServer(self):
|
||||||
|
'''web server'''
|
||||||
|
applet_script = "net_webserver.lua"
|
||||||
|
|
||||||
|
self.install_applet_script(applet_script)
|
||||||
|
|
||||||
|
self.set_parameters({
|
||||||
|
"SCR_ENABLE": 1,
|
||||||
|
"SCR_VM_I_COUNT": 1000000,
|
||||||
|
"SIM_SPEEDUP": 20,
|
||||||
|
"NET_ENABLED": 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
self.reboot_sitl()
|
||||||
|
|
||||||
|
self.context_push()
|
||||||
|
self.context_collect('STATUSTEXT')
|
||||||
|
|
||||||
|
self.set_parameters({
|
||||||
|
"WEB_BIND_PORT": 8081,
|
||||||
|
})
|
||||||
|
|
||||||
|
self.scripting_restart()
|
||||||
|
self.wait_text("WebServer: starting on port 8081", check_context=True)
|
||||||
|
|
||||||
|
self.wait_ready_to_arm()
|
||||||
|
|
||||||
|
self.TestWebServer("http://127.0.0.1:8081")
|
||||||
|
|
||||||
|
self.context_pop()
|
||||||
|
self.remove_installed_script(applet_script)
|
||||||
|
self.reboot_sitl()
|
||||||
|
|
||||||
|
def NetworkingWebServerPPP(self):
|
||||||
|
'''web server over PPP'''
|
||||||
|
applet_script = "net_webserver.lua"
|
||||||
|
|
||||||
|
self.install_applet_script(applet_script)
|
||||||
|
|
||||||
|
self.set_parameters({
|
||||||
|
"SCR_ENABLE": 1,
|
||||||
|
"SCR_VM_I_COUNT": 1000000,
|
||||||
|
"SIM_SPEEDUP": 20,
|
||||||
|
"NET_ENABLED": 1,
|
||||||
|
"SERIAL5_PROTOCOL": 48,
|
||||||
|
})
|
||||||
|
|
||||||
|
self.progress('rebuilding rover with ppp enabled')
|
||||||
|
import shutil
|
||||||
|
shutil.copy('build/sitl/bin/ardurover', 'build/sitl/bin/ardurover.noppp')
|
||||||
|
util.build_SITL('bin/ardurover', clean=False, configure=True, extra_configure_args=['--enable-ppp', '--debug'])
|
||||||
|
|
||||||
|
self.reboot_sitl()
|
||||||
|
|
||||||
|
self.progress("Starting PPP daemon")
|
||||||
|
pppd = util.start_PPP_daemon("192.168.14.15:192.168.14.13", '127.0.0.1:5765')
|
||||||
|
|
||||||
|
self.context_push()
|
||||||
|
self.context_collect('STATUSTEXT')
|
||||||
|
|
||||||
|
pppd.expect("remote IP address 192.168.14.13")
|
||||||
|
|
||||||
|
self.progress("PPP daemon started")
|
||||||
|
|
||||||
|
self.set_parameters({
|
||||||
|
"WEB_BIND_PORT": 8081,
|
||||||
|
})
|
||||||
|
|
||||||
|
self.scripting_restart()
|
||||||
|
self.wait_text("WebServer: starting on port 8081", check_context=True)
|
||||||
|
|
||||||
|
self.wait_ready_to_arm()
|
||||||
|
|
||||||
|
self.TestWebServer("http://192.168.14.13:8081")
|
||||||
|
|
||||||
|
self.context_pop()
|
||||||
|
self.remove_installed_script(applet_script)
|
||||||
|
|
||||||
|
# restore rover without ppp enabled for next test
|
||||||
|
os.unlink('build/sitl/bin/ardurover')
|
||||||
|
shutil.copy('build/sitl/bin/ardurover.noppp', 'build/sitl/bin/ardurover')
|
||||||
|
self.reboot_sitl()
|
||||||
|
|
||||||
def tests(self):
|
def tests(self):
|
||||||
'''return list of all tests'''
|
'''return list of all tests'''
|
||||||
ret = super(AutoTestRover, self).tests()
|
ret = super(AutoTestRover, self).tests()
|
||||||
|
@ -6709,6 +6809,8 @@ Brakes have negligible effect (with=%0.2fm without=%0.2fm delta=%0.2fm)
|
||||||
self.MAV_CMD_GET_HOME_POSITION,
|
self.MAV_CMD_GET_HOME_POSITION,
|
||||||
self.MAV_CMD_DO_FENCE_ENABLE,
|
self.MAV_CMD_DO_FENCE_ENABLE,
|
||||||
self.MAV_CMD_BATTERY_RESET,
|
self.MAV_CMD_BATTERY_RESET,
|
||||||
|
self.NetworkingWebServer,
|
||||||
|
self.NetworkingWebServerPPP,
|
||||||
])
|
])
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
|
@ -416,7 +416,7 @@ def do_build(opts, frame_options):
|
||||||
|
|
||||||
if opts.enable_ppp:
|
if opts.enable_ppp:
|
||||||
cmd_configure.append("--enable-ppp")
|
cmd_configure.append("--enable-ppp")
|
||||||
|
|
||||||
if opts.enable_networking_tests:
|
if opts.enable_networking_tests:
|
||||||
cmd_configure.append("--enable-networking-tests")
|
cmd_configure.append("--enable-networking-tests")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue