###############################################################################
# gtest utils
###############################################################################

add_executable(gtest_session_pool gtest_session_pool.cpp)
target_link_libraries(gtest_session_pool session_manager gtest)

add_executable(gtest_session_table gtest_session_table.cpp)
target_link_libraries(gtest_session_table session_manager gtest)

add_executable(gtest_session_timer gtest_session_timer.cpp)
target_link_libraries(gtest_session_timer session_manager gtest)

add_executable(gtest_session_filter gtest_session_filter.cpp)
target_link_libraries(gtest_session_filter session_manager gtest)

###############################################################################
# gtest state machine (TCP)
###############################################################################

add_executable(gtest_state_tcp_init_to_opening gtest_state_tcp_init_to_opening.cpp)
target_link_libraries(gtest_state_tcp_init_to_opening session_manager gtest)

add_executable(gtest_state_tcp_opening_to_active gtest_state_tcp_opening_to_active.cpp)
target_link_libraries(gtest_state_tcp_opening_to_active session_manager gtest)

add_executable(gtest_state_tcp_active_to_closing gtest_state_tcp_active_to_closing.cpp)
target_link_libraries(gtest_state_tcp_active_to_closing session_manager gtest)

add_executable(gtest_state_tcp_opening_to_closing gtest_state_tcp_opening_to_closing.cpp)
target_link_libraries(gtest_state_tcp_opening_to_closing session_manager gtest)

add_executable(gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp)
target_link_libraries(gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed session_manager gtest)

###############################################################################
# gtest state machine (UDP)
###############################################################################

add_executable(gtest_state_udp_init_to_opening_to_closing gtest_state_udp_init_to_opening_to_closing.cpp)
target_link_libraries(gtest_state_udp_init_to_opening_to_closing session_manager gtest)

add_executable(gtest_state_udp_init_to_opening_to_active_to_closing gtest_state_udp_init_to_opening_to_active_to_closing.cpp)
target_link_libraries(gtest_state_udp_init_to_opening_to_active_to_closing session_manager gtest)

###############################################################################
# gtest timeout (TCP)
###############################################################################

add_executable(gtest_timeout_tcp_init gtest_timeout_tcp_init.cpp)
target_link_libraries(gtest_timeout_tcp_init session_manager gtest)

add_executable(gtest_timeout_tcp_handshake gtest_timeout_tcp_handshake.cpp)
target_link_libraries(gtest_timeout_tcp_handshake session_manager gtest)

add_executable(gtest_timeout_tcp_data gtest_timeout_tcp_data.cpp)
target_link_libraries(gtest_timeout_tcp_data session_manager gtest)

###############################################################################
# gtest timeout (UDP)
###############################################################################

add_executable(gtest_timeout_udp_data gtest_timeout_udp_data.cpp)
target_link_libraries(gtest_timeout_udp_data session_manager gtest)

###############################################################################
# gtest filter
###############################################################################

add_executable(gtest_filter_tcp_dupkt gtest_filter_tcp_dupkt.cpp)
target_link_libraries(gtest_filter_tcp_dupkt session_manager gtest)

###############################################################################
# gtest overload
###############################################################################

add_executable(gtest_overload_evict_tcp_sess gtest_overload_evict_tcp_sess.cpp)
target_link_libraries(gtest_overload_evict_tcp_sess session_manager gtest)

add_executable(gtest_overload_evict_udp_sess gtest_overload_evict_udp_sess.cpp)
target_link_libraries(gtest_overload_evict_udp_sess session_manager gtest)

###############################################################################
# gtest transistion
###############################################################################

add_executable(gtest_session_transition gtest_session_transition.cpp)
target_link_libraries(gtest_session_transition session_manager gtest)

###############################################################################
# gtest tcp reassembly
###############################################################################

add_executable(gtest_sess_mgr_tcp_reassembly gtest_sess_mgr_tcp_reassembly.cpp)
target_link_libraries(gtest_sess_mgr_tcp_reassembly session_manager gtest)

###############################################################################
# gtest sess mgr scan
###############################################################################

add_executable(gtest_sess_mgr_scan gtest_sess_mgr_scan.cpp)
target_link_libraries(gtest_sess_mgr_scan session_manager gtest)

###############################################################################
# gtest case
###############################################################################

add_executable(gtest_case_tcp_fast_open gtest_case_tcp_fast_open.cpp)
target_link_libraries(gtest_case_tcp_fast_open session_manager gtest)

###############################################################################
# gtest
###############################################################################

include(GoogleTest)
gtest_discover_tests(gtest_session_pool)
gtest_discover_tests(gtest_session_table)
gtest_discover_tests(gtest_session_timer)
gtest_discover_tests(gtest_session_filter)

gtest_discover_tests(gtest_state_tcp_init_to_opening)
gtest_discover_tests(gtest_state_tcp_opening_to_active)
gtest_discover_tests(gtest_state_tcp_active_to_closing)
gtest_discover_tests(gtest_state_tcp_opening_to_closing)

gtest_discover_tests(gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed)
gtest_discover_tests(gtest_state_udp_init_to_opening_to_closing)
gtest_discover_tests(gtest_state_udp_init_to_opening_to_active_to_closing)

gtest_discover_tests(gtest_timeout_tcp_init)
gtest_discover_tests(gtest_timeout_tcp_handshake)
gtest_discover_tests(gtest_timeout_tcp_data)
gtest_discover_tests(gtest_timeout_udp_data)

gtest_discover_tests(gtest_filter_tcp_dupkt)

gtest_discover_tests(gtest_overload_evict_tcp_sess)
gtest_discover_tests(gtest_overload_evict_udp_sess)

gtest_discover_tests(gtest_session_transition)

gtest_discover_tests(gtest_sess_mgr_tcp_reassembly)
gtest_discover_tests(gtest_sess_mgr_scan)

gtest_discover_tests(gtest_case_tcp_fast_open)