Skip to content

Commit

Permalink
Move unit tests to source dirs
Browse files Browse the repository at this point in the history
  • Loading branch information
patriotyk committed May 15, 2018
1 parent 75a9897 commit 1a2b833
Show file tree
Hide file tree
Showing 69 changed files with 645 additions and 580 deletions.
32 changes: 30 additions & 2 deletions CMakeLists.txt
Expand Up @@ -85,6 +85,12 @@ if(BUILD_P11)
add_definitions(-DBUILD_P11)
endif(BUILD_P11)

# Setup PKCS11
if(TEST_PKCS11_MODULE_PATH)
add_definitions(-DTEST_PKCS11_MODULE_PATH="${TEST_PKCS11_MODULE_PATH}"
-DTEST_PKCS11_ENGINE_PATH="${TEST_PKCS11_ENGINE_PATH}")
endif(TEST_PKCS11_MODULE_PATH)

if(BUILD_SOTA_TOOLS)
find_package(GLIB2 REQUIRED)
find_program(STRACE NAMES strace)
Expand Down Expand Up @@ -298,6 +304,30 @@ include(CPack)
include(CPackComponent)


set (AKTUALIZR_EXTERNAL_LIBS
${Boost_SYSTEM_LIBRARIES}
${Boost_LIBRARIES}
${CURL_LIBRARIES}
${OPENSSL_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${sodium_LIBRARY_RELEASE}
${LIBOSTREE_LIBRARIES}
${SQLITE3_LIBRARIES}
${LibArchive_LIBRARIES}
${LIBP11_LIBRARIES}
${LIBDPKG_LIBRARIES}
${GLIB2_LIBRARIES}
${SYSTEMD_LIBRARY})

set (TEST_LIBS ${AKTUALIZR_EXTERNAL_LIBS} gtest gmock)
if(BUILD_WITH_CODE_COVERAGE)
list(APPEND TEST_LIBS gcov)
endif(BUILD_WITH_CODE_COVERAGE)


include(CTest)
ENABLE_TESTING()

add_subdirectory("fuzz")
add_subdirectory("config")
if (BUILD_LOAD_TESTS)
Expand All @@ -316,8 +346,6 @@ add_subdirectory("src/implicit_writer")
add_subdirectory("src/external_secondaries")

add_subdirectory("src/load_tests")

include(CTest)
add_subdirectory("tests" EXCLUDE_FROM_ALL)

add_subdirectory("docs")
Expand Down
26 changes: 26 additions & 0 deletions cmake-modules/AddAktualizrTest.cmake
@@ -0,0 +1,26 @@
function(add_aktualizr_test)
set(options PROJECT_WORKING_DIRECTORY NO_VALGRIND)
set(oneValueArgs NAME)
set(multiValueArgs SOURCES ARGS)
cmake_parse_arguments(AKTUALIZR_TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
add_executable(t_${AKTUALIZR_TEST_NAME} ${AKTUALIZR_TEST_SOURCES} ${PROJECT_SOURCE_DIR}/tests/test_utils.cc)
target_link_libraries(t_${AKTUALIZR_TEST_NAME} aktualizr_static_lib ${TEST_LIBS})
target_include_directories(t_${AKTUALIZR_TEST_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/tests)
if(AKTUALIZR_TEST_PROJECT_WORKING_DIRECTORY)
set(WD WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
else()
set(WD )
endif()
# run tests under valgrind if the correct CMAKE_BUILD_TYPE is set
if(CMAKE_BUILD_TYPE MATCHES "Valgrind")
add_test(NAME test_${AKTUALIZR_TEST_NAME}
COMMAND ${RUN_VALGRIND} ${CMAKE_CURRENT_BINARY_DIR}/t_${AKTUALIZR_TEST_NAME} ${AKTUALIZR_TEST_ARGS}
${WD})
else()
add_test(NAME test_${AKTUALIZR_TEST_NAME}
COMMAND t_${AKTUALIZR_TEST_NAME} ${AKTUALIZR_TEST_ARGS}
${WD})
endif()
add_dependencies(build_tests t_${AKTUALIZR_TEST_NAME})
set(TEST_SOURCES ${TEST_SOURCES} ${AKTUALIZR_TEST_SOURCES} PARENT_SCOPE)
endfunction(add_aktualizr_test)
4 changes: 2 additions & 2 deletions cmake-modules/FindAsn1c.cmake
Expand Up @@ -17,12 +17,12 @@ if(ASN1C)
function(add_asn1c_lib)
set(ASN1_SRCS ${ARGN})
foreach(MOD ${ASN1_SRCS})
set_property(GLOBAL APPEND PROPERTY ASN1_FILES_GLOBAL ${CMAKE_CURRENT_SOURCE_DIR}/${MOD}.asn1)
set_property(GLOBAL APPEND PROPERTY ASN1_FILES_GLOBAL ${MOD}.asn1)
endforeach()
endfunction()

function(compile_asn1_lib)
get_property(ASN1_FILES GLOBAL PROPERTY ASN1_FILES_GLOBAL)
get_property(ASN1_FILES GLOBAL PROPERTY ASN1_FILES_GLOBAL)
# clean previously generated files
set(ASN1_GEN_DIR ${PROJECT_SOURCE_DIR}/generated/asn1/)
file(MAKE_DIRECTORY ${ASN1_GEN_DIR})
Expand Down
1 change: 1 addition & 0 deletions codecov.yml
@@ -1,5 +1,6 @@
ignore:
- "third_party"
- "tests"
- "*_test.cc"
- "generated"
- "src/libaktualizr/third_party"
11 changes: 1 addition & 10 deletions fuzz/CMakeLists.txt
Expand Up @@ -6,16 +6,7 @@ if (ENABLE_FUZZING)
endif()

add_executable(afl afl.cc)
target_link_libraries(afl aktualizr_static_lib
${Boost_LIBRARIES}
${CURL_LIBRARIES}
${OPENSSL_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${sodium_LIBRARY_RELEASE}
${LIBOSTREE_LIBRARIES}
${LIBP11_LIBRARIES}
${SQLITE3_LIBRARIES}
${LibArchive_LIBRARIES})
target_link_libraries(afl aktualizr_static_lib ${AKTUALIZR_EXTERNAL_LIBS})

if (NOT ENABLE_SANITIZERS)
message(FATAL_ERROR "Enable sanitizers with -DENABLE_SANITIZERS=On to do fuzzing.")
Expand Down
12 changes: 1 addition & 11 deletions src/aktualizr_check_discovery/CMakeLists.txt
Expand Up @@ -2,17 +2,7 @@
set(AKTUALIZR_CHECK_DISCOVERY_SRC main.cc )

add_executable(aktualizr-check-discovery ${AKTUALIZR_CHECK_DISCOVERY_SRC})
target_link_libraries(aktualizr-check-discovery aktualizr_static_lib
${Boost_LIBRARIES}
${OPENSSL_LIBRARIES}
${sodium_LIBRARY_RELEASE}
${CMAKE_THREAD_LIBS_INIT}
${CURL_LIBRARIES}
${GLIB2_LIBRARIES}
${LibArchive_LIBRARIES}
${SQLITE3_LIBRARIES}
${LIBOSTREE_LIBRARIES}
${SYSTEMD_LIBRARY})
target_link_libraries(aktualizr-check-discovery aktualizr_static_lib ${AKTUALIZR_EXTERNAL_LIBS})

if(BUILD_WITH_CODE_COVERAGE)
target_link_libraries(aktualizr-check-discovery gcov)
Expand Down
36 changes: 26 additions & 10 deletions src/aktualizr_info/CMakeLists.txt
Expand Up @@ -4,16 +4,7 @@ set(AKTUALIZR_INFO_SRC main.cc aktualizr_info_config.cc)
set(AKTUALIZR_INFO_HEADERS aktualizr_info_config.h)

add_executable(aktualizr-info ${AKTUALIZR_INFO_SRC})
target_link_libraries(aktualizr-info aktualizr_static_lib
${Boost_LIBRARIES}
${OPENSSL_LIBRARIES}
${sodium_LIBRARY_RELEASE}
${CMAKE_THREAD_LIBS_INIT}
${CURL_LIBRARIES}
${GLIB2_LIBRARIES}
${LibArchive_LIBRARIES}
${LIBOSTREE_LIBRARIES}
${SQLITE3_LIBRARIES})
target_link_libraries(aktualizr-info aktualizr_static_lib ${AKTUALIZR_EXTERNAL_LIBS})


if(BUILD_WITH_CODE_COVERAGE)
Expand All @@ -24,6 +15,31 @@ install(TARGETS aktualizr-info
COMPONENT aktualizr
RUNTIME DESTINATION bin)

add_test(NAME aktualizr-info-noarguments
COMMAND ${PROJECT_SOURCE_DIR}/tests/run_aktualizr_info_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/aktualizr-info WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests/)
set_tests_properties(aktualizr-info-noarguments PROPERTIES
PASS_REGULAR_EXPRESSION "Device ID: new-kartoffelpuffer-706\nPrimary ecu serial ID: cd51a49a-25d9-438e-93fa-c0dde6bfcec9")

add_test(NAME aktualizr-info-images-root
COMMAND ${PROJECT_SOURCE_DIR}/tests/run_aktualizr_info_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/aktualizr-info --images-root WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests/)
set_tests_properties(aktualizr-info-images-root PROPERTIES
PASS_REGULAR_EXPRESSION "image root.json content:\n\n\\{.*\\}")

add_test(NAME aktualizr-info-director-root
COMMAND ${PROJECT_SOURCE_DIR}/tests/run_aktualizr_info_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/aktualizr-info --director-root WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests/)
set_tests_properties(aktualizr-info-director-root PROPERTIES
PASS_REGULAR_EXPRESSION "director root.json content:\n\n\\{.*\\}")

add_test(NAME aktualizr-info-director-target
COMMAND ${PROJECT_SOURCE_DIR}/tests/run_aktualizr_info_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/aktualizr-info --director-target WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests/)
set_tests_properties(aktualizr-info-director-target PROPERTIES
PASS_REGULAR_EXPRESSION "director targets.json content:\n\n\\{.*\\}")

add_test(NAME aktualizr-info-images-target
COMMAND ${PROJECT_SOURCE_DIR}/tests/run_aktualizr_info_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/aktualizr-info --images-target WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests/)
set_tests_properties(aktualizr-info-images-target PROPERTIES
PASS_REGULAR_EXPRESSION "image targets.json content:\n\n\\{.*\\}")

aktualizr_source_file_checks(${AKTUALIZR_INFO_SRC} ${AKTUALIZR_INFO_HEADERS})

# vim: set tabstop=4 shiftwidth=4 expandtab:
13 changes: 1 addition & 12 deletions src/aktualizr_primary/CMakeLists.txt
@@ -1,16 +1,5 @@
add_executable(aktualizr main.cc)
target_link_libraries(aktualizr aktualizr_static_lib
${Boost_LIBRARIES}
${CURL_LIBRARIES}
${OPENSSL_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${sodium_LIBRARY_RELEASE}
${LIBOSTREE_LIBRARIES}
${LIBP11_LIBRARIES}
${SQLITE3_LIBRARIES}
${LibArchive_LIBRARIES}
${SYSTEMD_LIBRARY}
${LIBDPKG_LIBRARIES})
target_link_libraries(aktualizr aktualizr_static_lib ${AKTUALIZR_EXTERNAL_LIBS})

if(BUILD_WITH_CODE_COVERAGE)
target_link_libraries(aktualizr gcov)
Expand Down
82 changes: 69 additions & 13 deletions src/aktualizr_secondary/CMakeLists.txt
Expand Up @@ -40,18 +40,7 @@ target_include_directories(aktualizr_secondary_static_lib PUBLIC
add_executable(aktualizr-secondary ${AKTUALIZR_SECONDARY_SRC})
target_link_libraries(aktualizr-secondary
aktualizr_secondary_static_lib
${Boost_LIBRARIES}
${OPENSSL_LIBRARIES}
${sodium_LIBRARY_RELEASE}
${CMAKE_THREAD_LIBS_INIT}
${CURL_LIBRARIES}
${GLIB2_LIBRARIES}
${LibArchive_LIBRARIES}
${LIBOSTREE_LIBRARIES}
${SQLITE3_LIBRARIES}
${LIBDPKG_LIBRARIES}
${LIBP11_LIBRARIES}
${SYSTEMD_LIBRARY}
${AKTUALIZR_EXTERNAL_LIBS}
)

if(BUILD_WITH_CODE_COVERAGE)
Expand All @@ -75,6 +64,73 @@ set(ALL_AKTUALIZR_SECONDARY_HEADERS
set(AKTUALIZR_SECONDARY_ALL_CHECKS ${AKTUALIZR_SECONDARY_SRC} ${AKTUALIZR_SECONDARY_LIB_SRC} ${ALL_AKTUALIZR_SECONDARY_HEADERS}
${OPCUA_SECONDARY_SRC})
list(REMOVE_DUPLICATES AKTUALIZR_SECONDARY_ALL_CHECKS)
aktualizr_source_file_checks(${AKTUALIZR_SECONDARY_ALL_CHECKS})

include(AddAktualizrTest)

list(APPEND TEST_LIBS aktualizr_secondary_static_lib)

add_aktualizr_test(NAME aktualizr_secondary_config SOURCES aktualizr_secondary_config_test.cc PROJECT_WORKING_DIRECTORY)
add_aktualizr_test(NAME aktualizr_secondary_discovery SOURCES aktualizr_secondary_discovery_test.cc ARGS ${PROJECT_BINARY_DIR}/ostree_repo PROJECT_WORKING_DIRECTORY)

add_test(NAME aktualizr-secondary-help
COMMAND ${PROJECT_BINARY_DIR}/src/aktualizr_secondary/aktualizr-secondary --help)

add_aktualizr_test(NAME aktualizr_secondary_protocol SOURCES protocol_test.cc ARGS ${PROJECT_BINARY_DIR}/ostree_repo PROJECT_WORKING_DIRECTORY)
target_link_libraries(t_aktualizr_secondary_protocol aktualizr_secondary_static_lib aktualizr_static_lib)

add_aktualizr_test(NAME aktualizr_secondary_update SOURCES update_test.cc ARGS ${PROJECT_BINARY_DIR}/ostree_repo PROJECT_WORKING_DIRECTORY)
target_link_libraries(t_aktualizr_secondary_update aktualizr_secondary_static_lib aktualizr_static_lib)

add_aktualizr_test(NAME aktualizr_secondary_uptane SOURCES uptane_test.cc ARGS ${PROJECT_BINARY_DIR}/ostree_repo PROJECT_WORKING_DIRECTORY)
target_link_libraries(t_aktualizr_secondary_uptane aktualizr_secondary_static_lib aktualizr_static_lib)

# test running the executable with command line option --help
add_test(NAME aktualizr_secondary_cmdline--help COMMAND aktualizr --help)
# test running the executable with command line option --something
add_test(NAME aktualizr_secondary_cmdline--something
COMMAND aktualizr --something -c ${PROJECT_SOURCE_DIR}/tests/config/minimal.toml)
# call the executable without any options
add_test(NAME aktualizr_secondary_cmdline_empty COMMAND aktualizr)
# test the return code when running the executable with non-existent configuration file
add_test(NAME aktualizr_secondary_no_config_check_code
COMMAND aktualizr -c non-existent-config.toml)

# testcases with non-supported command line options will return 1
# in this case we want the testcase to pass
set_tests_properties(aktualizr_secondary_cmdline--something
aktualizr_secondary_cmdline_empty
aktualizr_secondary_no_config_check_code
PROPERTIES WILL_FAIL TRUE)

# Check for expected output messages given specific misconfigurations
# test the error message when running the executable with non-existent configuration file
add_test(NAME aktualizr_secondary_no_config_check_message
COMMAND aktualizr-secondary -c non-existent-config.toml)
set_tests_properties(aktualizr_secondary_no_config_check_message
PROPERTIES PASS_REGULAR_EXPRESSION "non-existent-config.toml does not exist.")

add_test(NAME aktualizr_secondary_help_with_other_options
COMMAND aktualizr-secondary --help -c someconfig.toml)
set_tests_properties(aktualizr_secondary_help_with_other_options
PROPERTIES PASS_REGULAR_EXPRESSION "aktualizr-secondary command line options")

add_test(NAME aktualizr_secondary_help_with_nonexistent_options
COMMAND aktualizr-secondary --help -somebadoption)
set_tests_properties(aktualizr_secondary_help_with_nonexistent_options
PROPERTIES PASS_REGULAR_EXPRESSION "aktualizr-secondary command line options")

# check aktualizr-secondary invalid logging levels
add_test(NAME aktualizr_secondary_log_invalid
COMMAND aktualizr-secondary -c ${PROJECT_SOURCE_DIR}/tests/config/aktualizr_secondary.toml --loglevel=6)
set_tests_properties(aktualizr_secondary_log_invalid
PROPERTIES PASS_REGULAR_EXPRESSION "Invalid log level")
add_test(NAME aktualizr_secondary_log_negative
COMMAND aktualizr-secondary -c ${PROJECT_SOURCE_DIR}/tests/config/aktualizr_secondary.toml --loglevel=-1)
set_tests_properties(aktualizr_secondary_log_negative
PROPERTIES PASS_REGULAR_EXPRESSION "Invalid log level")



aktualizr_source_file_checks(${AKTUALIZR_SECONDARY_ALL_CHECKS} ${TEST_SOURCES})

# vim: set tabstop=4 shiftwidth=4 expandtab:
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
14 changes: 5 additions & 9 deletions src/cert_provider/CMakeLists.txt
Expand Up @@ -3,15 +3,7 @@ add_executable(aktualizr_cert_provider main.cc)

set_source_files_properties(main.cc PROPERTIES COMPILE_FLAGS -Wno-deprecated-declarations)

target_link_libraries(aktualizr_cert_provider aktualizr_static_lib
${Boost_LIBRARIES}
${CURL_LIBRARIES}
${OPENSSL_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${sodium_LIBRARY_RELEASE}
${SQLITE3_LIBRARIES}
${LIBOSTREE_LIBRARIES}
${LibArchive_LIBRARIES})
target_link_libraries(aktualizr_cert_provider aktualizr_static_lib ${AKTUALIZR_EXTERNAL_LIBS})

if(BUILD_WITH_CODE_COVERAGE)
target_link_libraries(aktualizr_cert_provider gcov)
Expand All @@ -23,4 +15,8 @@ add_dependencies(build_tests aktualizr_cert_provider)

install(TARGETS aktualizr_cert_provider RUNTIME DESTINATION bin)

add_test(NAME certprovider-ca COMMAND ${PROJECT_SOURCE_DIR}/tests/run_certprovider_test.sh
${PROJECT_BINARY_DIR}/src/cert_provider/aktualizr_cert_provider ${PROJECT_SOURCE_DIR}/tests/test_data/credentials.zip
${PROJECT_SOURCE_DIR}/tests/test_data/CAcert.pem ${PROJECT_SOURCE_DIR}/tests/test_data/CApkey.pem)

# vim: set tabstop=4 shiftwidth=4 expandtab:
19 changes: 9 additions & 10 deletions src/external_secondaries/CMakeLists.txt
Expand Up @@ -5,12 +5,8 @@ set(MAIN_ECU_INTERFACE_SRC interface_main.cc make_ecu.cc)

add_executable(example-interface ${MAIN_ECU_INTERFACE_SRC} example_flasher.cc)
target_link_libraries(example-interface
${Boost_SYSTEM_LIBRARIES}
aktualizr_static_lib
${Boost_LIBRARIES}
${LibArchive_LIBRARIES}
${LIBOSTREE_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT})
${AKTUALIZR_EXTERNAL_LIBS})
target_compile_options(example-interface PUBLIC -DECUFLASHER_EXAMPLE)

add_executable(aktualizr-validate-secondary-interface validate_secondary_interface_test.cc)
Expand Down Expand Up @@ -43,12 +39,8 @@ if(BUILD_ISOTP)

add_executable(isotp-test-interface ${MAIN_ECU_INTERFACE_SRC} ${ISOTP_TEST_SRC} ${ISOTP_SRC})
target_link_libraries(isotp-test-interface
${Boost_SYSTEM_LIBRARIES}
aktualizr_static_lib
${Boost_LIBRARIES}
${LibArchive_LIBRARIES}
${LIBOSTREE_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT})
${AKTUALIZR_EXTERNAL_LIBS})
target_compile_options(isotp-test-interface PUBLIC -DECUFLASHER_TEST_ISOTP)
target_include_directories(isotp-test-interface PUBLIC ${ISOTP_PATH_PREFIX} ${BITFIELD_PATH_PREFIX})

Expand All @@ -59,4 +51,11 @@ if(BUILD_ISOTP)
install(TARGETS isotp-test-interface RUNTIME DESTINATION bin)
endif(BUILD_ISOTP)

add_dependencies(build_tests aktualizr-validate-secondary-interface example-interface)
add_test(NAME validate-secondary-interface
COMMAND aktualizr-validate-secondary-interface
--target ${PROJECT_BINARY_DIR}/src/external_secondaries/example-interface
--firmware ${PROJECT_SOURCE_DIR}/tests/test_data/firmware.txt)


# vim: set tabstop=4 shiftwidth=4 expandtab:

0 comments on commit 1a2b833

Please sign in to comment.