Skip to content
Snippets Groups Projects
Commit 3c660acc authored by Mara Bos's avatar Mara Bos Committed by Lorenz Meier
Browse files

Add unit test for dynamically loading modules on posix.

parent d13836eb
No related branches found
No related tags found
No related merge requests found
......@@ -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" ]
......
......@@ -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
......
......@@ -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})
......
#!/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
px4_add_module(
MODULE platforms__posix__tests__dyn_hello
MAIN hello
SRCS
hello.cpp
DEPENDS
DYNAMIC
)
#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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment