set(SRCS_BLOCKED_CLIENT_TEST ${CMAKE_CURRENT_LIST_DIR}/blocked_client_test.cc)
add_executable(blocked_client_test ${SRCS_BLOCKED_CLIENT_TEST})
target_include_directories(blocked_client_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(blocked_client_test PUBLIC vmsdklib)
target_link_libraries(blocked_client_test PUBLIC vmsdk_testing_infra)
finalize_test_flags(blocked_client_test)

set(SRCS_COMMAND_PARSER_TEST ${CMAKE_CURRENT_LIST_DIR}/command_parser_test.cc)
add_executable(command_parser_test ${SRCS_COMMAND_PARSER_TEST})
target_include_directories(command_parser_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(command_parser_test PUBLIC vmsdklib)
target_link_libraries(command_parser_test PUBLIC valkey_module)
target_link_libraries(command_parser_test PUBLIC vmsdk_testing_infra)
finalize_test_flags(command_parser_test)

set(SRCS_CONCURRENCY_TEST ${CMAKE_CURRENT_LIST_DIR}/concurrency_test.cc)
add_executable(concurrency_test ${SRCS_CONCURRENCY_TEST})
target_include_directories(concurrency_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(concurrency_test PUBLIC vmsdklib)
target_link_libraries(concurrency_test PUBLIC vmsdk_testing_infra)
finalize_test_flags(concurrency_test)

set(SRCS_MODULE_TYPE_TEST ${CMAKE_CURRENT_LIST_DIR}/module_type_test.cc)
add_executable(module_type_test ${SRCS_MODULE_TYPE_TEST})
target_include_directories(module_type_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(module_type_test PUBLIC vmsdklib)
target_link_libraries(module_type_test PUBLIC valkey_module)
finalize_test_flags(module_type_test)

set(SRCS_MODULE_TEST ${CMAKE_CURRENT_LIST_DIR}/module_test.cc)
add_executable(module_test ${SRCS_MODULE_TEST})
target_include_directories(module_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(module_test PUBLIC valkey_module)
target_link_libraries(module_test PUBLIC vmsdklib)
finalize_test_flags(module_test)

set(SRCS_THREAD_POOL_TEST ${CMAKE_CURRENT_LIST_DIR}/thread_pool_test.cc)
add_executable(thread_pool_test ${SRCS_THREAD_POOL_TEST})
target_include_directories(thread_pool_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(thread_pool_test PUBLIC vmsdklib)
finalize_test_flags(thread_pool_test)

set(SRCS_TIME_SLICED_MRMW_MUTEX_TEST
    ${CMAKE_CURRENT_LIST_DIR}/mrmw_mutex_test.cc)
add_executable(time_sliced_mrmw_mutex_test ${SRCS_TIME_SLICED_MRMW_MUTEX_TEST})
target_include_directories(time_sliced_mrmw_mutex_test
                           PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(time_sliced_mrmw_mutex_test PUBLIC vmsdklib)
finalize_test_flags(time_sliced_mrmw_mutex_test)

set(SRCS_STATUS_MACROS_TEST ${CMAKE_CURRENT_LIST_DIR}/status_macros_test.cc)
add_executable(status_macros_test ${SRCS_STATUS_MACROS_TEST})
target_include_directories(status_macros_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(status_macros_test PUBLIC vmsdklib)
finalize_test_flags(status_macros_test)

set(SRCS_MEMORY_ALLOCATION_TEST
    ${CMAKE_CURRENT_LIST_DIR}/memory_allocation_test.cc)
add_executable(memory_allocation_test ${SRCS_MEMORY_ALLOCATION_TEST})
target_include_directories(memory_allocation_test
                           PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(memory_allocation_test PUBLIC vmsdklib)
finalize_test_flags(memory_allocation_test)

set(SRCS_UTILS_TEST ${CMAKE_CURRENT_LIST_DIR}/utils_test.cc)
add_executable(utils_test ${SRCS_UTILS_TEST})
target_include_directories(utils_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(utils_test PUBLIC vmsdklib)
target_link_libraries(utils_test PUBLIC valkey_module)
finalize_test_flags(utils_test)

set(SRCS_LOG_TEST ${CMAKE_CURRENT_LIST_DIR}/log_test.cc)
add_executable(log_test ${SRCS_LOG_TEST})
target_include_directories(log_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(log_test PUBLIC vmsdklib)
target_link_libraries(log_test PUBLIC valkey_module)
finalize_test_flags(log_test)

set(SRCS_CONFIG_TEST ${CMAKE_CURRENT_LIST_DIR}/configuration_test.cc)
add_executable(config_test ${SRCS_CONFIG_TEST})
target_include_directories(config_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(config_test PUBLIC vmsdklib)
target_link_libraries(config_test PUBLIC valkey_module)
target_link_libraries(config_test PUBLIC vmsdk_testing_infra)
finalize_test_flags(config_test)

set(SRCS_CLUSTER_MAP_TEST ${CMAKE_CURRENT_LIST_DIR}/cluster_map_test.cc)
add_executable(cluster_map_test ${SRCS_CLUSTER_MAP_TEST})
target_include_directories(cluster_map_test PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(cluster_map_test PUBLIC vmsdklib)
target_link_libraries(cluster_map_test PUBLIC vmsdk_testing_infra)
target_link_libraries(cluster_map_test PUBLIC valkey_module)
finalize_test_flags(cluster_map_test)

string(TOLOWER "$ENV{SAN_BUILD}" SAN_BUILD_LOWER)
if("${SAN_BUILD_LOWER}" STREQUAL "no")
    set(SRCS_SHARDED_ATOMIC_BENCH ${CMAKE_CURRENT_LIST_DIR}/sharded_atomic_benchmark.cc)
    add_executable(sharded_atomic_benchmark ${SRCS_SHARDED_ATOMIC_BENCH})
    target_include_directories(sharded_atomic_benchmark PUBLIC ${CMAKE_CURRENT_LIST_DIR})
    target_link_libraries(sharded_atomic_benchmark PUBLIC vmsdklib)
    target_link_libraries(sharded_atomic_benchmark PUBLIC vmsdk_testing_infra)
    target_link_libraries(sharded_atomic_benchmark PUBLIC valkey_module)
    target_link_libraries(sharded_atomic_benchmark PUBLIC benchmark::benchmark)
    target_link_libraries(sharded_atomic_benchmark PUBLIC benchmark::benchmark_main)
    finalize_test_flags(sharded_atomic_benchmark)
endif()
