You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
6.8 KiB
171 lines
6.8 KiB
set (unit_tests_sources
|
|
unit-tests-common.cpp
|
|
unit-tests-live.cpp
|
|
unit-tests-regressions.cpp
|
|
unit-tests-post-processing.cpp
|
|
unit-tests-post-processing.h
|
|
unit-tests-main.cpp
|
|
unit-tests-common.h
|
|
unit-tests-post-processing-from-bag.cpp
|
|
unit-test-long.cpp
|
|
catch.h
|
|
approx.h
|
|
)
|
|
|
|
add_executable(live-test ${unit_tests_sources})
|
|
set_property(TARGET live-test PROPERTY CXX_STANDARD 11)
|
|
target_link_libraries(live-test ${DEPENDENCIES} Threads::Threads Catch2WithMain )
|
|
|
|
set_target_properties (live-test PROPERTIES
|
|
FOLDER "Unit-Tests"
|
|
)
|
|
|
|
install(
|
|
TARGETS
|
|
live-test
|
|
RUNTIME DESTINATION
|
|
${CMAKE_INSTALL_PREFIX}/bin
|
|
)
|
|
|
|
if(TESTDATA_LOCATION)
|
|
set(Deployment_Location ${TESTDATA_LOCATION})
|
|
else()
|
|
#Windows OS will host the files under %TEMP% location
|
|
#Unix-like machines will host the tests files under /tmp/ directory
|
|
if (WIN32)
|
|
set(Deployment_Location "$ENV{TEMP}\\")
|
|
else() # Data shall be preserved between reboots. For Linux distributions/ ANDROID_NDK_TOOLCHAIN_INCLUDED/APPLE
|
|
#set(Deployment_Location /var/tmp/) The standard configuration currently fails on CI
|
|
set(Deployment_Location /tmp/)
|
|
endif()
|
|
endif()
|
|
|
|
add_custom_command(TARGET live-test POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
${CMAKE_CURRENT_SOURCE_DIR}/resources
|
|
${Deployment_Location}
|
|
)
|
|
|
|
# copy wheel odometry calibration file to build folder
|
|
add_custom_command(TARGET live-test POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
${CMAKE_CURRENT_SOURCE_DIR}/resources/calibration_odometry.json
|
|
${CMAKE_CURRENT_BINARY_DIR}/calibration_odometry.json
|
|
)
|
|
|
|
#Post-Processing data set for unit-tests
|
|
#message(STATUS "Post processing deployment directory=${Deployment_Location}")
|
|
list(APPEND PP_Tests_List 1551257764229 # D415_DS(2)
|
|
1551257812956 # D415_DS(3)
|
|
1551257880762 # D415_DS(2)_HoleFill(0)
|
|
1551257882796 # D415_DS(2)_HoleFill(1)
|
|
1551257884097 # D435_DS(2)_HoleFill(2)
|
|
1551257987255 # D435_DS(2)+Spat(A:0.85/D:32/I:3)
|
|
1551259481873 # D435_DS(2)+Spat(A:0.5/D:15/I:2)
|
|
1551261946511 # D435_DS(2)+Temp(A:0.25/D:15/P:0)
|
|
1551262153516 # D435_DS(2)+Temp(A:0.45/D:25/P:1)
|
|
1551262256875 # D435_DS(2)+Temp(A:0.5/D:30/P:4)
|
|
1551262841203 # D435_DS(2)+Temp(A:0.5/D:30/P:6)
|
|
1551262772964 # D435_DS(2)+Temp(A:0.5/D:30/P:8)
|
|
1551262971309 # D435_DS(2)_Spat(A:0.7/D:25/I:2)_Temp(A:0.6/D:15/P:6)
|
|
1551263177558) # D435_DS(2)_Spat(A:0.7/D:25/I:2)_Temp(A:0.6/D:15/P:6))_HoleFill(1)
|
|
|
|
# For each post-processing test pattern the following files shall be present
|
|
list(APPEND PP_Test_extensions_List .Input.raw .Input.csv .Output.raw .Output.csv)
|
|
|
|
|
|
set_property(GLOBAL PROPERTY sequence_extensions_list)
|
|
function(produce_sequence_extensions source target)
|
|
# Check if metadata file exist, and download if needed
|
|
if(NOT EXISTS "${target}")
|
|
file(DOWNLOAD "${source}" "${target}" LOG log STATUS status TIMEOUT 300) # SHOW_PROGRESS
|
|
list(GET status 0 op_return_value)
|
|
if (NOT op_return_value MATCHES "0")
|
|
list(GET status 1 description)
|
|
message(STATUS "Operation failed: opcode= ${status}")
|
|
message(STATUS "Log: opcode= ${log}")
|
|
endif()
|
|
endif()
|
|
|
|
FILE(READ "${target}" contents)
|
|
# Convert file contents into a CMake list
|
|
set(sequence_length 1)
|
|
STRING(REGEX REPLACE ";" "\\\\;" contents "${contents}")
|
|
STRING(REGEX REPLACE "\n" ";" contents "${contents}")
|
|
foreach(i ${contents})
|
|
if ("${i}" MATCHES "^Frames sequence length")
|
|
string(REPLACE "," ";" line ${i})
|
|
# use of unsubstituted variables is requred
|
|
set(my_seq ${line})
|
|
list(GET my_seq 1 result)
|
|
if (result MATCHES "^[0-9]+$")
|
|
set(sequence_length ${result})
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
set(index 0)
|
|
#Reset the list of appendexes
|
|
set(PP_Test_Sequence_Index_List)
|
|
while (${index} LESS ${sequence_length} )
|
|
list(APPEND PP_Test_Sequence_Index_List .${index})
|
|
MATH(EXPR index "${index} + 1")
|
|
endwhile()
|
|
get_property(local_list GLOBAL PROPERTY sequence_extensions_list)
|
|
set(local_list ${PP_Test_Sequence_Index_List})
|
|
set_property(GLOBAL PROPERTY sequence_extensions_list "${local_list}")
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
set(PP_TESTS_URL https://librealsense.intel.com/rs-tests/post_processing_tests_2018_ww18/)
|
|
message(STATUS "Preparing to download Post-processing tests dataset...\nRemote server: ${PP_TESTS_URL}\nTarget Location: ${Deployment_Location}\n")
|
|
foreach(i ${PP_Tests_List})
|
|
set(Test_Pattern ${i})
|
|
#Download and parse the output metafile to retrieve the number of snapshots in sequence
|
|
set(sequence_meta_file "${Test_Pattern}.0.Output.csv")
|
|
set(source ${PP_TESTS_URL}${sequence_meta_file})
|
|
set(destination ${Deployment_Location}${sequence_meta_file})
|
|
produce_sequence_extensions(${source} ${destination})
|
|
# Copy the assigned variables to local variable
|
|
get_property(PP_Test_Sequence_Index_List GLOBAL PROPERTY sequence_extensions_list)
|
|
|
|
#Iterate over test pattern extension to download the test files.
|
|
foreach(ext ${PP_Test_extensions_List})
|
|
#Each test comprise of a sequence of frame indexed according to the following
|
|
foreach(idx ${PP_Test_Sequence_Index_List})
|
|
# Calculate the target full path name for deployment
|
|
set(Test_File_Name "${Test_Pattern}${idx}${ext}")
|
|
set(source ${PP_TESTS_URL}${Test_File_Name})
|
|
set(destination ${Deployment_Location}${Test_File_Name})
|
|
set (empty FALSE)
|
|
is_file_empty(empty, ${destination} )
|
|
#message(STATUS "Checked " ${empty} " for " ${Test_File_Name} " in " ${destination})
|
|
if(NOT EXISTS "${destination}" OR ${empty})
|
|
message(STATUS "Downloading ${source}")
|
|
file(DOWNLOAD "${source}" "${destination}" LOG log STATUS status TIMEOUT 300) # SHOW_PROGRESS LOG log STATUS status
|
|
list(GET status 0 op_return_value)
|
|
if (NOT op_return_value MATCHES "0")
|
|
list(GET status 1 description)
|
|
message(STATUS "Operation failed: opcode= ${status}")
|
|
message(STATUS "Log: opcode= ${log}")
|
|
endif()
|
|
endif()
|
|
endforeach(idx)
|
|
endforeach(ext)
|
|
endforeach(i)
|
|
|
|
list(APPEND PP_Rosbag_Recordings_List
|
|
[aligned_2c]_all_combinations_depth_color.bag
|
|
[aligned_2d]_all_combinations_depth_color.bag
|
|
all_combinations_depth_color.bag
|
|
[pointcloud]_all_combinations_depth_color.bag
|
|
single_depth_color_640x480.bag
|
|
D435i_Depth_and_IMU.bag
|
|
)
|
|
set(PP_Rosbag_Recordings_URL https://librealsense.intel.com/rs-tests/Rosbag_unit_test_records)
|
|
foreach(i ${PP_Rosbag_Recordings_List})
|
|
dl_file( ${PP_Rosbag_Recordings_URL} ${Deployment_Location} ${i} OFF )
|
|
endforeach(i)
|
|
|