Skip to content

Commit 1c4c581

Browse files
authored
Split HS Backend UTs (eBay#262)
HS backend test has grown to 10+ test cases taking nearly 10 minutes to finish. This patch splits the test suite into separate PG, shard, blob and misc tests to make them more lightweight with better maintainability and diagnosability.
1 parent c4f5c4f commit 1c4c581

File tree

6 files changed

+419
-415
lines changed

6 files changed

+419
-415
lines changed

conanfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
class HomeObjectConan(ConanFile):
1111
name = "homeobject"
12-
version = "2.2.9"
12+
version = "2.2.10"
1313

1414
homepage = "https://github.com/eBay/HomeObject"
1515
description = "Blob Store built on HomeReplication"

src/lib/homestore_backend/CMakeLists.txt

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -47,48 +47,55 @@ settings_gen_cpp(
4747
resync_blob_data.fbs
4848
)
4949

50+
# Unit test objects
5051
add_subdirectory(tests)
5152

52-
add_executable (homestore_test)
53-
target_sources(homestore_test PRIVATE
54-
$<TARGET_OBJECTS:homestore_tests>
55-
)
56-
target_link_libraries(homestore_test PUBLIC
57-
homeobject_homestore
58-
${COMMON_TEST_DEPS}
59-
)
60-
add_test(NAME HomestoreTest COMMAND homestore_test -csv error --executor immediate --config_path ./ --override_config homestore_config.consensus.snapshot_freq_distance:0)
61-
set_property(TEST HomestoreTest PROPERTY RUN_SERIAL 1)
53+
# Basic tests
54+
add_executable(homestore_test_pg)
55+
target_sources(homestore_test_pg PRIVATE $<TARGET_OBJECTS:homestore_tests_pg>)
56+
target_link_libraries(homestore_test_pg PUBLIC homeobject_homestore ${COMMON_TEST_DEPS})
57+
add_test(NAME HomestoreTestPg COMMAND homestore_test_pg -csv error --executor immediate --config_path ./
58+
--override_config homestore_config.consensus.snapshot_freq_distance:0)
6259

63-
add_executable (homestore_test_dynamic)
64-
target_sources(homestore_test_dynamic PRIVATE
65-
$<TARGET_OBJECTS:homestore_tests_dynamic>
66-
)
67-
target_link_libraries(homestore_test_dynamic PUBLIC
68-
homeobject_homestore
69-
${COMMON_TEST_DEPS}
70-
)
60+
add_executable(homestore_test_shard)
61+
target_sources(homestore_test_shard PRIVATE $<TARGET_OBJECTS:homestore_tests_shard>)
62+
target_link_libraries(homestore_test_shard PUBLIC homeobject_homestore ${COMMON_TEST_DEPS})
63+
add_test(NAME HomestoreTestShard COMMAND homestore_test_shard -csv error --executor immediate --config_path ./
64+
--override_config homestore_config.consensus.snapshot_freq_distance:0)
65+
66+
add_executable(homestore_test_blob)
67+
target_sources(homestore_test_blob PRIVATE $<TARGET_OBJECTS:homestore_tests_blob>)
68+
target_link_libraries(homestore_test_blob PUBLIC homeobject_homestore ${COMMON_TEST_DEPS})
69+
add_test(NAME HomestoreTestBlob COMMAND homestore_test_blob -csv error --executor immediate --config_path ./
70+
--override_config homestore_config.consensus.snapshot_freq_distance:0)
7171

72+
add_executable(homestore_test_misc)
73+
target_sources(homestore_test_misc PRIVATE $<TARGET_OBJECTS:homestore_tests_misc>)
74+
target_link_libraries(homestore_test_misc PUBLIC homeobject_homestore ${COMMON_TEST_DEPS})
75+
add_test(NAME HomestoreTestMisc COMMAND homestore_test_misc -csv error --executor immediate --config_path ./
76+
--override_config homestore_config.consensus.snapshot_freq_distance:0)
77+
78+
# Dynamic tests
79+
add_executable(homestore_test_dynamic)
80+
target_sources(homestore_test_dynamic PRIVATE $<TARGET_OBJECTS:homestore_tests_dynamic>)
81+
target_link_libraries(homestore_test_dynamic PUBLIC homeobject_homestore ${COMMON_TEST_DEPS})
7282
add_test(NAME HomestoreTestReplaceMember
7383
COMMAND homestore_test_dynamic -csv error --executor immediate --config_path ./
7484
--override_config homestore_config.consensus.snapshot_freq_distance:0
7585
--gtest_filter=HomeObjectFixture.ReplaceMember)
76-
7786
# To test both baseline & incremental resync functionality, we use 13 to minimize the likelihood of it being a divisor of the total LSN (currently 30)
7887
add_test(NAME HomestoreTestReplaceMemberWithBaselineResync
7988
COMMAND homestore_test_dynamic -csv error --executor immediate --config_path ./
8089
--override_config homestore_config.consensus.snapshot_freq_distance:13
8190
--override_config homestore_config.consensus.num_reserved_log_items=13
8291
--override_config homestore_config.consensus.snapshot_sync_ctx_timeout_ms=5000
8392
--gtest_filter=HomeObjectFixture.ReplaceMember)
84-
8593
add_test(NAME HomestoreResyncTestWithFollowerRestart
8694
COMMAND homestore_test_dynamic -csv error --executor immediate --config_path ./
8795
--override_config homestore_config.consensus.snapshot_freq_distance:13
8896
--override_config homestore_config.consensus.num_reserved_log_items=13
8997
--override_config homestore_config.consensus.snapshot_sync_ctx_timeout_ms=5000
9098
--gtest_filter=HomeObjectFixture.RestartFollower*)
91-
9299
add_test(NAME HomestoreResyncTestWithLeaderRestart
93100
COMMAND homestore_test_dynamic -csv error --executor immediate --config_path ./
94101
--override_config homestore_config.consensus.snapshot_freq_distance:13
Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,28 @@
11
cmake_minimum_required(VERSION 3.13)
22

3-
include_directories (BEFORE .)
3+
include_directories(BEFORE .)
44

5-
list(APPEND TEST_SOURCES
6-
hs_shard_tests.cpp
7-
hs_blob_tests.cpp
8-
hs_pg_tests.cpp
9-
homeobj_cp_tests.cpp
10-
test_homestore_backend.cpp
11-
)
5+
add_library(homestore_tests_pg OBJECT)
6+
target_sources(homestore_tests_pg PRIVATE test_homestore_backend.cpp hs_pg_tests.cpp)
7+
target_link_libraries(homestore_tests_pg homeobject_homestore ${COMMON_TEST_DEPS})
128

13-
add_library(homestore_tests OBJECT)
14-
target_sources(homestore_tests PRIVATE ${TEST_SOURCES})
15-
target_link_libraries(homestore_tests
16-
homeobject_homestore
17-
${COMMON_TEST_DEPS}
18-
)
9+
add_library(homestore_tests_shard OBJECT)
10+
target_sources(homestore_tests_shard PRIVATE test_homestore_backend.cpp hs_shard_tests.cpp)
11+
target_link_libraries(homestore_tests_shard homeobject_homestore ${COMMON_TEST_DEPS})
1912

13+
add_library(homestore_tests_blob OBJECT)
14+
target_sources(homestore_tests_blob PRIVATE test_homestore_backend.cpp hs_blob_tests.cpp)
15+
target_link_libraries(homestore_tests_blob homeobject_homestore ${COMMON_TEST_DEPS})
16+
17+
add_library(homestore_tests_misc OBJECT)
18+
target_sources(homestore_tests_misc PRIVATE test_homestore_backend.cpp homeobj_misc_tests.cpp)
19+
target_link_libraries(homestore_tests_misc homeobject_homestore ${COMMON_TEST_DEPS})
2020

2121
add_library(homestore_tests_dynamic OBJECT)
2222
target_sources(homestore_tests_dynamic PRIVATE test_homestore_backend_dynamic.cpp)
23-
target_link_libraries(homestore_tests_dynamic
24-
homeobject_homestore
25-
${COMMON_TEST_DEPS}
26-
)
23+
target_link_libraries(homestore_tests_dynamic homeobject_homestore ${COMMON_TEST_DEPS})
2724

28-
add_executable (test_heap_chunk_selector)
25+
add_executable(test_heap_chunk_selector)
2926
target_sources(test_heap_chunk_selector PRIVATE test_heap_chunk_selector.cpp ../heap_chunk_selector.cpp)
3027
target_link_libraries(test_heap_chunk_selector homestore::homestore ${COMMON_TEST_DEPS})
3128
add_test(NAME HeapChunkSelectorTest COMMAND test_heap_chunk_selector)
32-

src/lib/homestore_backend/tests/homeobj_cp_tests.cpp

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)