function(mit_unittest case)
  if(ARGC EQUAL 1)
    add_executable(${case} ${case}.cpp)
  else()
    add_executable(${ARGV})
  endif()
  if (case MATCHES "^test_.*")
    add_test(${case} ${case})
    set_tests_properties(${case} PROPERTIES TIMEOUT 300)
  endif()
  target_link_libraries(${case} PRIVATE -Wl,--whole-archive mock_di -Wl,--no-whole-archive oceanbase gtest gmock ${HYPERSCAN_LIB})
  target_include_directories(${case}
    PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/unittest ${CMAKE_SOURCE_DIR}/deps/oblib/unittest ${CMAKE_SOURCE_DIR}/sensitive_test)
endfunction()

function(mit_shared_storage_unittest case)
  mit_unittest(${case})
  if (case MATCHES "^test_.*")
    set_tests_properties(${case} PROPERTIES TIMEOUT 600)
  endif()
endfunction()

if(OB_BUILD_CLOSE_MODULES)
  mit_shared_storage_unittest(test_disk_space_manager)
  mit_shared_storage_unittest(test_file_manager)
  mit_shared_storage_unittest(test_open_close)
  mit_shared_storage_unittest(test_ss_ha_prewarm_struct)
  mit_shared_storage_unittest(test_ss_mc_prewarm_struct)
  mit_shared_storage_unittest(test_ss_mem_data_manager)
  mit_shared_storage_unittest(test_ss_micro_cache)
  mit_shared_storage_unittest(test_ss_micro_cache_resize)
  mit_shared_storage_unittest(test_ss_micro_cache_reach_mem_limit)
  mit_shared_storage_unittest(test_ss_micro_cache_random_size)
  mit_shared_storage_unittest(test_ss_micro_cache_eviction)
  mit_shared_storage_unittest(test_ss_micro_cache_huge_data)
  mit_shared_storage_unittest(test_ss_micro_cache_parallelism)
  mit_shared_storage_unittest(test_ss_micro_cache_check_prewarm)
  mit_shared_storage_unittest(test_ss_micro_cache_restart)
  mit_shared_storage_unittest(test_ss_micro_meta_manager)
  mit_shared_storage_unittest(test_ss_micro_cache_basic_op)
  mit_shared_storage_unittest(test_ss_micro_cache_struct)
  mit_shared_storage_unittest(test_ss_micro_cache_stat)
  mit_shared_storage_unittest(test_ss_micro_cache_checkpoint)
  mit_shared_storage_unittest(test_ss_reorganize_phy_block)
  mit_shared_storage_unittest(test_ss_execute_checkpoint_task)
  mit_shared_storage_unittest(test_ss_handle_arc_seg_op)
  mit_shared_storage_unittest(test_ss_persist_micro_data_task)
  mit_shared_storage_unittest(test_ss_micro_cache_io_helper)
  mit_shared_storage_unittest(test_ss_physical_block_manager)
  mit_shared_storage_unittest(test_ss_micro_cache_abnormal_case)
  mit_shared_storage_unittest(test_ss_reader_writer)
  mit_shared_storage_unittest(test_device_config_mgr)
  mit_shared_storage_unittest(test_ss_preread_task)
  mit_shared_storage_unittest(test_sstable_private_object_cleaner)
  mit_shared_storage_unittest(test_clean_residual_data)
  mit_shared_storage_unittest(test_ddl_clog)
  mit_shared_storage_unittest(test_ss_linked_phy_block)
  mit_shared_storage_unittest(test_ss_la_micro_key_manager)
  mit_shared_storage_unittest(test_ss_micro_cache_util)
  mit_shared_storage_unittest(test_ss_fd_cache_perf)
  mit_shared_storage_unittest(test_calibrate_disk_space)
  mit_shared_storage_unittest(test_segment_file_manager)
  mit_shared_storage_unittest(test_flush_unsealed_tmp_file)
endif()

add_subdirectory(tmp_file)
add_subdirectory(simple_server)
