Add unit test for dynamically loading modules on posix.

This commit is contained in:
Mara Bos 2018-11-23 16:29:17 +01:00 committed by Lorenz Meier
parent d13836eb1e
commit 3c660acca8
6 changed files with 54 additions and 1 deletions

View File

@ -8,6 +8,7 @@ program="$3"
model="$4"
src_path="$5"
build_path="$6"
# The rest of the arguments are files to copy into the working dir.
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.gdbinit $rootfs/.gdbinit
shift 6
for file in "$@"; do
cp "$file" $rootfs/
done
SIM_PID=0
if [ "$program" == "jmavsim" ] && [ ! -n "$no_sim" ]

View File

@ -55,6 +55,7 @@ set(config_module_list
systemcmds/tests
platforms/posix/tests/hello
platforms/posix/tests/dyn_hello
platforms/posix/tests/hrt_test
platforms/posix/tests/vcdev_test

View File

@ -99,6 +99,20 @@ add_test(NAME shutdown
set_tests_properties(shutdown PROPERTIES PASS_REGULAR_EXPRESSION "Shutting down")
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
set(test_cmds
hello
@ -127,7 +141,7 @@ endforeach()
add_custom_target(test_results
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -T Test
DEPENDS px4
DEPENDS px4 platforms__posix__tests__dyn_hello
USES_TERMINAL
COMMENT "Running tests in sitl"
WORKING_DIRECTORY ${PX4_BINARY_DIR})

View File

@ -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

View File

@ -0,0 +1,8 @@
px4_add_module(
MODULE platforms__posix__tests__dyn_hello
MAIN hello
SRCS
hello.cpp
DEPENDS
DYNAMIC
)

View File

@ -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;
}