if(NOT BUILD_TESTING) return() endif() if(NOT TARGET cmvr_es::quic_test_gateway) message(STATUS "Skipping real QUIC E2E target: cmvr_es::quic_test_gateway is unavailable") return() endif() if(NOT TARGET cmvr_es::quic_edge_service OR NOT TARGET cmvr_es::media_source_hub) message(FATAL_ERROR "Real QUIC E2E requires the production QUIC service and MediaSourceHub") endif() add_executable(cmvr_quic_msquic_e2e_test quic_msquic_e2e_test.cpp ) target_compile_features(cmvr_quic_msquic_e2e_test PRIVATE cxx_std_17) target_link_libraries(cmvr_quic_msquic_e2e_test PRIVATE cmvr_es::quic_test_gateway cmvr_es::quic_edge_service cmvr_es::media_source_hub ) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") target_compile_options(cmvr_quic_msquic_e2e_test PRIVATE -Wall -Wextra -Wpedantic) endif() # The parent build may generate a short-lived test certificate and pass these # cache variables. Keeping the executable argv-driven also permits a manual run # without embedding machine-specific paths in the binary. set(CMVR_QUIC_E2E_CERTIFICATE_FILE "" CACHE FILEPATH "PEM certificate passed to the real MsQuic E2E test") set(CMVR_QUIC_E2E_PRIVATE_KEY_FILE "" CACHE FILEPATH "Unencrypted PEM private key passed to the real MsQuic E2E test") set(_cmvr_quic_e2e_certificate "${CMVR_QUIC_E2E_CERTIFICATE_FILE}") set(_cmvr_quic_e2e_private_key "${CMVR_QUIC_E2E_PRIVATE_KEY_FILE}") if(NOT _cmvr_quic_e2e_certificate AND DEFINED CMVR_QUIC_TEST_CERTIFICATE) set(_cmvr_quic_e2e_certificate "${CMVR_QUIC_TEST_CERTIFICATE}") endif() if(NOT _cmvr_quic_e2e_private_key AND DEFINED CMVR_QUIC_TEST_PRIVATE_KEY) set(_cmvr_quic_e2e_private_key "${CMVR_QUIC_TEST_PRIVATE_KEY}") endif() if(TARGET cmvr_quic_test_certificate) add_dependencies(cmvr_quic_msquic_e2e_test cmvr_quic_test_certificate) endif() if(_cmvr_quic_e2e_certificate AND _cmvr_quic_e2e_private_key) add_test( NAME cmvr_quic_msquic_e2e_test COMMAND cmvr_quic_msquic_e2e_test --cert "${_cmvr_quic_e2e_certificate}" --key "${_cmvr_quic_e2e_private_key}" ) set_tests_properties(cmvr_quic_msquic_e2e_test PROPERTIES LABELS "quic;e2e;msquic" RUN_SERIAL TRUE TIMEOUT 30 ENVIRONMENT "LD_LIBRARY_PATH=${CMVR_QUIC_TEST_LIBRARY_PATH}" ) else() message(STATUS "cmvr_quic_msquic_e2e_test built but not registered with CTest; " "set CMVR_QUIC_E2E_CERTIFICATE_FILE and " "CMVR_QUIC_E2E_PRIVATE_KEY_FILE") endif() find_package(Python3 3.10 QUIET COMPONENTS Interpreter) if(Python3_Interpreter_FOUND AND TARGET cmvr_es AND TARGET cmvr_quic_test_gateway AND _cmvr_quic_e2e_certificate AND _cmvr_quic_e2e_private_key) add_test( NAME cmvr_es_quic_process_smoke_test COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/run_cmvr_es_quic_smoke.py" --gateway "$" --cmvr-es "$" --cert "${_cmvr_quic_e2e_certificate}" --key "${_cmvr_quic_e2e_private_key}") set_tests_properties(cmvr_es_quic_process_smoke_test PROPERTIES LABELS "quic;e2e;msquic;process" RUN_SERIAL TRUE TIMEOUT 30 ENVIRONMENT "LD_LIBRARY_PATH=${CMVR_QUIC_TEST_LIBRARY_PATH}") elseif(NOT Python3_Interpreter_FOUND) message(STATUS "Python3 was not found; the full cmvr_es QUIC process smoke test " "is skipped") endif()