mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-28 02:36:37 +08:00
Add unit test for dynamically loading modules on posix.
This commit is contained in:
@@ -8,6 +8,7 @@ program="$3"
|
|||||||
model="$4"
|
model="$4"
|
||||||
src_path="$5"
|
src_path="$5"
|
||||||
build_path="$6"
|
build_path="$6"
|
||||||
|
# The rest of the arguments are files to copy into the working dir.
|
||||||
|
|
||||||
echo SITL ARGS
|
echo SITL ARGS
|
||||||
|
|
||||||
@@ -58,6 +59,11 @@ pkill -x px4_$model || true
|
|||||||
cp $src_path/Tools/posix_lldbinit $rootfs/.lldbinit
|
cp $src_path/Tools/posix_lldbinit $rootfs/.lldbinit
|
||||||
cp $src_path/Tools/posix.gdbinit $rootfs/.gdbinit
|
cp $src_path/Tools/posix.gdbinit $rootfs/.gdbinit
|
||||||
|
|
||||||
|
shift 6
|
||||||
|
for file in "$@"; do
|
||||||
|
cp "$file" $rootfs/
|
||||||
|
done
|
||||||
|
|
||||||
SIM_PID=0
|
SIM_PID=0
|
||||||
|
|
||||||
if [ "$program" == "jmavsim" ] && [ ! -n "$no_sim" ]
|
if [ "$program" == "jmavsim" ] && [ ! -n "$no_sim" ]
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ set(config_module_list
|
|||||||
systemcmds/tests
|
systemcmds/tests
|
||||||
|
|
||||||
platforms/posix/tests/hello
|
platforms/posix/tests/hello
|
||||||
|
platforms/posix/tests/dyn_hello
|
||||||
platforms/posix/tests/hrt_test
|
platforms/posix/tests/hrt_test
|
||||||
platforms/posix/tests/vcdev_test
|
platforms/posix/tests/vcdev_test
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,20 @@ add_test(NAME shutdown
|
|||||||
set_tests_properties(shutdown PROPERTIES PASS_REGULAR_EXPRESSION "Shutting down")
|
set_tests_properties(shutdown PROPERTIES PASS_REGULAR_EXPRESSION "Shutting down")
|
||||||
sanitizer_fail_test_on_error(shutdown)
|
sanitizer_fail_test_on_error(shutdown)
|
||||||
|
|
||||||
|
# Dynamic module loading test
|
||||||
|
add_test(NAME dyn
|
||||||
|
COMMAND ${PX4_SOURCE_DIR}/Tools/sitl_run.sh
|
||||||
|
$<TARGET_FILE:px4>
|
||||||
|
none
|
||||||
|
none
|
||||||
|
test_dyn_hello
|
||||||
|
${PX4_SOURCE_DIR}
|
||||||
|
${PX4_BINARY_DIR}
|
||||||
|
$<TARGET_FILE:platforms__posix__tests__dyn_hello>
|
||||||
|
WORKING_DIRECTORY ${SITL_WORKING_DIR})
|
||||||
|
set_tests_properties(dyn PROPERTIES PASS_REGULAR_EXPRESSION "1: PASSED")
|
||||||
|
sanitizer_fail_test_on_error(dyn)
|
||||||
|
|
||||||
# run arbitrary commands
|
# run arbitrary commands
|
||||||
set(test_cmds
|
set(test_cmds
|
||||||
hello
|
hello
|
||||||
@@ -127,7 +141,7 @@ endforeach()
|
|||||||
|
|
||||||
add_custom_target(test_results
|
add_custom_target(test_results
|
||||||
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -T Test
|
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -T Test
|
||||||
DEPENDS px4
|
DEPENDS px4 platforms__posix__tests__dyn_hello
|
||||||
USES_TERMINAL
|
USES_TERMINAL
|
||||||
COMMENT "Running tests in sitl"
|
COMMENT "Running tests in sitl"
|
||||||
WORKING_DIRECTORY ${PX4_BINARY_DIR})
|
WORKING_DIRECTORY ${PX4_BINARY_DIR})
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# PX4 commands need the 'px4-' prefix in bash.
|
||||||
|
# (px4-alias.sh is expected to be in the PATH)
|
||||||
|
. px4-alias.sh
|
||||||
|
|
||||||
|
dyn ./platforms__posix__tests__dyn_hello.px4mod PASSED
|
||||||
|
|
||||||
|
shutdown
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
px4_add_module(
|
||||||
|
MODULE platforms__posix__tests__dyn_hello
|
||||||
|
MAIN hello
|
||||||
|
SRCS
|
||||||
|
hello.cpp
|
||||||
|
DEPENDS
|
||||||
|
DYNAMIC
|
||||||
|
)
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
#include <px4_log.h>
|
||||||
|
#include <px4_app.h>
|
||||||
|
|
||||||
|
extern "C" __EXPORT int hello_main(int argc, char *argv[]);
|
||||||
|
int hello_main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
PX4_INFO("Hello, I am a dynamically loaded module.");
|
||||||
|
|
||||||
|
PX4_INFO("Argv:");
|
||||||
|
|
||||||
|
for (int i = 0; i < argc; ++i) {
|
||||||
|
PX4_INFO(" %d: %s", i, argv[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user