mavsdk_tests: leave tests backwards compatible but enable SIH

This reverts some of the changes to keep runners of classic Gazebo in
there but leave it optional, so we can still use it if required.
This commit is contained in:
Julian Oes
2026-01-25 09:52:19 +13:00
parent a41d35b57f
commit a14de32d2e
11 changed files with 91 additions and 46 deletions
@@ -1,18 +1,17 @@
{
"mode": "sitl",
"simulator": "gazebo",
"model_prefix": "gazebo-classic_",
"mavlink_connection": "udpin://0.0.0.0:14540",
"tests":
[
{
"model": "iris",
"vehicle": "iris",
"test_filter": "[multicopter],[offboard],[offboard_attitude]",
"timeout_min": 10
},
{
"model": "iris",
"vehicle": "iris",
"test_filter": "[offboard_attitude]",
"timeout_min": 10,
"env": {
@@ -22,19 +21,16 @@
},
{
"model": "standard_vtol",
"vehicle": "standard_vtol",
"test_filter": "[vtol], [vtol_wind], [vtol_airspeed_fail]",
"timeout_min": 10
},
{
"model": "tailsitter",
"vehicle": "tailsitter",
"test_filter": "[vtol]",
"timeout_min": 10
},
{
"model": "typhoon_h480",
"vehicle": "typhoon_h480",
"test_filter": "[controlallocation]",
"timeout_min": 10
}
+27
View File
@@ -0,0 +1,27 @@
{
"mode": "sitl",
"model_prefix": "sihsim_",
"mavlink_connection": "udpin://0.0.0.0:14540",
"tests":
[
{
"model": "quadx",
"test_filter": "[multicopter],[offboard],[offboard_attitude]",
"timeout_min": 10
},
{
"model": "quadx",
"test_filter": "[offboard_attitude]",
"timeout_min": 10,
"env": {
"PX4_PARAM_EKF2_EN": 0,
"PX4_PARAM_ATT_EN": 1
}
},
{
"model": "standard_vtol",
"test_filter": "[vtol]",
"timeout_min": 10
}
]
}
@@ -168,7 +168,7 @@ class Px4Runner(Runner):
os.path.join(workspace_dir, "test_data"),
"-d"
]
self.env["PX4_SIM_MODEL"] = "sihsim_quadx"
self.env["PX4_SIM_MODEL"] = model
self.env["PX4_SIM_SPEED_FACTOR"] = str(speed_factor)
self.debugger = debugger
self.clear_rootfs()
@@ -302,7 +302,7 @@ class Tester:
self.active_runners = []
if self.config['mode'] == 'sitl':
if self.config['simulator'] == 'gazebo':
if self.config.get('simulator') == 'gazebo':
# Use RegEx to extract worldname.world from case name
match = re.search(r'\((.*?\.world)\)', case)
if match:
@@ -310,24 +310,52 @@ class Tester:
else:
world_name = 'empty.world'
# We must start the PX4 instance at the end, as starting
# it in the beginning, then connecting Gazebo server freaks
# out the PX4 (it needs to have data coming in when started),
# and can lead to EKF to freak out, or the instance itself
# to die unexpectedly.
px4_runner = ph.Px4Runner(
gzserver_runner = ph.GzserverRunner(
os.getcwd(),
log_dir,
test['model'],
case,
self.get_max_speed_factor(test),
self.debugger,
self.verbose,
self.build_dir,
self.tester_interface.rootfs_base_dirname())
for env_key in test.get('env', []):
px4_runner.env[env_key] = str(test['env'][env_key])
self.active_runners.append(px4_runner)
world_name)
self.active_runners.append(gzserver_runner)
gzmodelspawn_runner = ph.GzmodelspawnRunner(
os.getcwd(),
log_dir,
test['model'],
case,
self.verbose,
self.build_dir)
self.active_runners.append(gzmodelspawn_runner)
if self.gui:
gzclient_runner = ph.GzclientRunner(
os.getcwd(),
log_dir,
test['model'],
case,
self.verbose)
self.active_runners.append(gzclient_runner)
# Determine PX4_SIM_MODEL using model_prefix from config
model_prefix = self.config.get('model_prefix', '')
px4_model = model_prefix + test['model']
px4_runner = ph.Px4Runner(
os.getcwd(),
log_dir,
px4_model,
case,
self.get_max_speed_factor(test),
self.debugger,
self.verbose,
self.build_dir,
self.tester_interface.rootfs_base_dirname())
for env_key in test.get('env', []):
px4_runner.env[env_key] = str(test['env'][env_key])
self.active_runners.append(px4_runner)
self.active_runners.append(self.tester_interface.create_test_runner(
os.getcwd(),
+3 -7
View File
@@ -136,11 +136,9 @@ def is_everything_ready(config: Dict[str, str], build_dir: str) -> bool:
result = False
if not os.path.isfile(os.path.join(build_dir, 'bin/px4')):
print("PX4 SITL is not built\n"
"run `DONT_RUN=1 "
"make px4_sitl gazebo mavsdk_tests` or "
"`DONT_RUN=1 make px4_sitl_default gazebo mavsdk_tests`")
"run `DONT_RUN=1 make px4_sitl_default mavsdk_tests`")
result = False
if config['simulator'] == 'gazebo':
if config.get('simulator') == 'gazebo':
if is_running('gzserver'):
print("gzserver process already running\n"
"run `killall gzserver` and try again")
@@ -153,9 +151,7 @@ def is_everything_ready(config: Dict[str, str], build_dir: str) -> bool:
if not os.path.isfile(os.path.join(build_dir,
'mavsdk_tests/mavsdk_tests')):
print("Test runner is not built\n"
"run `DONT_RUN=1 "
"make px4_sitl gazebo mavsdk_tests` or "
"`DONT_RUN=1 make px4_sitl_default gazebo mavsdk_tests`")
"run `DONT_RUN=1 make px4_sitl_default mavsdk_tests`")
result = False
return result