From 9c001f2e40e366666aa8d654bc6f17ff51894b14 Mon Sep 17 00:00:00 2001 From: Junwoo Hwang Date: Sun, 26 Mar 2023 11:27:01 +0900 Subject: [PATCH] Fix SITL Test failure: Place PX4 instance runner after Gazebo server runner (#21230) * MAVSDK_Test_Runner: Place PX4 instance runner after Gazebo server runner - This was a nasty bug where starting PX4 instance first, then starting Gazebo server was causing PX4 instance' EKF to freak out, probably because it doesn't like getting data a while after it is started - Detailed breakdown is given here: https://github.com/PX4/PX4-Autopilot/issues/21229#issuecomment-1450761542 - This now guarantees that such edge case won't occur and MAVSDK test will run as it should * MAVSDK Test Runner: Retain comment within 79 character limit - To pass flake8 python style check * Update test/mavsdk_tests/mavsdk_test_runner.py Co-authored-by: Julian Oes --------- Co-authored-by: Julian Oes --- test/mavsdk_tests/mavsdk_test_runner.py | 27 +++++++++++++++---------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/test/mavsdk_tests/mavsdk_test_runner.py b/test/mavsdk_tests/mavsdk_test_runner.py index fad0874f1e..47ccd62d58 100755 --- a/test/mavsdk_tests/mavsdk_test_runner.py +++ b/test/mavsdk_tests/mavsdk_test_runner.py @@ -401,17 +401,6 @@ class Tester: self.active_runners = [] if self.config['mode'] == 'sitl': - px4_runner = ph.Px4Runner( - os.getcwd(), - log_dir, - test['model'], - case, - self.get_max_speed_factor(test), - self.debugger, - self.verbose, - self.build_dir) - self.active_runners.append(px4_runner) - if self.config['simulator'] == 'gazebo': gzserver_runner = ph.GzserverRunner( os.getcwd(), @@ -441,6 +430,22 @@ class Tester: self.verbose) self.active_runners.append(gzclient_runner) + # 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( + os.getcwd(), + log_dir, + test['model'], + case, + self.get_max_speed_factor(test), + self.debugger, + self.verbose, + self.build_dir) + self.active_runners.append(px4_runner) + mavsdk_tests_runner = ph.TestRunner( os.getcwd(), log_dir,