add_executable(brq_func_concurrent main.cpp pipeline.cpp pool.cpp queue.cpp block_alloc.cpp block_pool.cpp)
target_link_libraries(brq_func_concurrent PRIVATE TwoBufQueue)
brq_warnings(brq_func_concurrent)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/cases.json" concurrent_cases)
string(JSON count LENGTH "${concurrent_cases}")
math(EXPR last "${count} - 1")
foreach(i RANGE 0 ${last})
  string(JSON id GET "${concurrent_cases}" ${i} id)
  add_test(NAME concurrent_${id} COMMAND brq_func_concurrent --case ${id})
  set_tests_properties(concurrent_${id} PROPERTIES TIMEOUT 120 LABELS "functional;concurrent;data_integrity")
endforeach()
add_test(NAME concurrent_catalog COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/verify_catalog.py"
  --exe $<TARGET_FILE:brq_func_concurrent> --catalog "${CMAKE_CURRENT_SOURCE_DIR}/cases.json")
set_tests_properties(concurrent_catalog PROPERTIES TIMEOUT 20 LABELS "functional;concurrent;catalog")
