diff --git a/macro/beamtime/mcbm2024/CMakeLists.txt b/macro/beamtime/mcbm2024/CMakeLists.txt index a24c93a4f6d220a94678994f0e3742002824b02d..66fd9a507dc6db7d935bab9719a6c98741c25d77 100644 --- a/macro/beamtime/mcbm2024/CMakeLists.txt +++ b/macro/beamtime/mcbm2024/CMakeLists.txt @@ -24,3 +24,71 @@ Install(DIRECTORY online Install(DIRECTORY data DESTINATION share/cbmroot/macro/beamtime/mcbm2024 PATTERN "*" EXCLUDE) + + +# ===== mCBM 2021 tests ================================================== +# ====> only if test TSA files for "typical runs" present +If(DEFINED ENV{RAW_DATA_PATH} ) + SET( RAW_DATA_PATH $ENV{RAW_DATA_PATH} ) + Message( STATUS "Raw data path provided => Performing mCBM 2024 tests using tsa files in ${RAW_DATA_PATH}" ) + + # ===== Cleanup the data directory ======================================= + add_test(mcbm_2024_cleanup ${CMAKE_COMMAND} + -P ${CMAKE_SOURCE_DIR}/cmake/scripts/cleanmacrodir.cmake) + set_tests_properties(mcbm_2024_cleanup PROPERTIES + TIMEOUT 200 + FIXTURES_SETUP mcbm_2024_cleanup + ) + # ============================================================================ + + # ===== Copy the .rootrc file into the directory from which root is executed + # --- Otherwise the rootalias file is not loaded + file(COPY ${CBMROOT_SOURCE_DIR}/macro/include/.rootrc + DESTINATION ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2024) + # ============================================================================ + + # ===== Create test script with all environment needed for the reco chain script + GENERATE_TEST_SCRIPT(${CBMROOT_SOURCE_DIR}/macro/beamtime/mcbm2024/reco_mcbm.sh) + # ============================================================================ + + ## Run only if raw data files present: 2024 + # =====> Set the timeouts and data range depending on test model (profiling = slow) + if(${CBM_TEST_MODEL} MATCHES MergeRequest OR ${CBM_TEST_MODEL} MATCHES Continuous ) + Message( STATUS "MR or Continuous model detected, decreasing event nb for mCBM 2024 reco tests to single one." ) + SET( RECO_TS_NB 1) + SET( RAW_DATA_PROCESS_TO 700) # MR mode on run4: ??? + List(APPEND mcbm_2024_runs 3105) # Run CI only on 3105 for now + elseif(${CBM_TEST_MODEL} MATCHES Weekly OR ${CBM_TEST_MODEL} MATCHES Profile ) + Message( STATUS "Profiling model detected, increasing timeout and event nb for mCBM 2024 tests with coverage." ) + SET( RECO_TS_NB 20) + SET( RAW_DATA_PROCESS_TO 3600) # MR mode on run4: ??? + List(APPEND mcbm_2024_runs 3105) # Run CI only on 3105 for now + else() + SET( RECO_TS_NB 3) + SET( RAW_DATA_PROCESS_TO 1500) # MR mode on run4: ??? + List(APPEND mcbm_2024_runs 3105) # Run CI only on 3105 for now + endif() + + # ==================================================================== + ForEach(RUN IN LISTS mcbm_2024_runs) + Message( STATUS "Checking if raw data file exists: ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa" ) + If(EXISTS ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa) + Message( STATUS "Raw data file found, tests will be performed for mCBM run ${RUN}" ) + + ### Complete reco chain script by S. Zharko + Set(testname mcbm_2024_${RUN}) + Add_Test(${testname} ${CBMROOT_BINARY_DIR}/macro/beamtime/mcbm2024/reco_mcbm.sh + --tsa ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa + --nts ${RECO_TS_NB} + --setup --unpack --reco --qa --qa-module + ) + Set_Tests_Properties(${testname} PROPERTIES + TIMEOUT ${RAW_DATA_PROCESS_TO} + FAIL_REGULAR_EXPRESSION "segmentation violation" + PASS_REGULAR_EXPRESSION "Reconstruction of ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa succeeded\n" + FIXTURES_REQUIRED mcbm_2024_cleanup + ) + + EndIf() # If(EXISTS ${RAW_DATA_PATH}/${RUN}_first20Ts.tsa)) + EndForEach() # ForEach(RUN 2391 2488 ) +EndIf() # If(DEFINED ENV{RAW_DATA_PATH} ) diff --git a/macro/beamtime/mcbm2024/reco_mcbm.sh b/macro/beamtime/mcbm2024/reco_mcbm.sh index d10ea6902cf7bdf14a926c71b6d1eab084a0f38e..f3266b2bf3ceb8f348c35bed02d4336fb425db85 100755 --- a/macro/beamtime/mcbm2024/reco_mcbm.sh +++ b/macro/beamtime/mcbm2024/reco_mcbm.sh @@ -48,8 +48,11 @@ # <qa>: Main QA output: <top_dir>/<label>.qa.root # <qa-module>: Reconstruction module QA: <top_dir>/<label>.rqa.root # +# 4. Knwon missing features # -# +# - Automated detection of success/failure if a given step to avoid running unnecessary steps +# - Proper evaluation and printout of script result (reaching the end is not always success) +# - Script and its sub-process is not killed if CTEST is stopped with CTRL+C # # ********************* # ** USER PARAMETERS ** @@ -140,9 +143,15 @@ ONLINE_BINARY="${VMCWORKDIR}/../../bin/cbmreco" if [[ ! -x "${ONLINE_BINARY}" ]]; then ONLINE_BINARY=$(which cbmreco) if [[ ! -x "${ONLINE_BINARY}" ]]; then - printf "E- Online binary was not found. Please, install and configure your CbmRoot " - printf "or provide the bin directory in the PATH environmental variable\n" - exit 2 + # Test for execution within the build folder by CTEST (CI/CMAKE/CDASH) + ONLINE_BINARY="${PWD}/../../../bin/cbmreco" + if [[ ! -x "${ONLINE_BINARY}" ]]; then + printf "E- Online binary was not found. Please:\n" + printf " - install and configure your CbmRoot\n" + printf " - or provide the bin directory in the PATH environmental variable\n" + printf " - or run within the CI/CTEST environment\n" + exit 2 + fi fi fi