summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/client/remote_command_targeter.h10
-rw-r--r--src/mongo/client/remote_command_targeter_factory_mock.cpp7
-rw-r--r--src/mongo/client/remote_command_targeter_factory_mock.h3
-rw-r--r--src/mongo/client/remote_command_targeter_mock.cpp3
-rw-r--r--src/mongo/client/remote_command_targeter_mock.h2
-rw-r--r--src/mongo/db/SConscript28
-rw-r--r--src/mongo/db/keys_collection_client_direct.h3
-rw-r--r--src/mongo/db/logical_clock_test_fixture.h3
-rw-r--r--src/mongo/db/pipeline/SConscript1
-rw-r--r--src/mongo/db/pipeline/process_interface/SConscript2
-rw-r--r--src/mongo/db/rs_local_client.cpp (renamed from src/mongo/s/client/rs_local_client.cpp)7
-rw-r--r--src/mongo/db/rs_local_client.h (renamed from src/mongo/s/client/rs_local_client.h)0
-rw-r--r--src/mongo/db/s/SConscript92
-rw-r--r--src/mongo/db/s/collection_metadata_filtering_test.cpp2
-rw-r--r--src/mongo/db/s/collection_sharding_runtime_test.cpp2
-rw-r--r--src/mongo/db/s/config/config_server_test_fixture.cpp5
-rw-r--r--src/mongo/db/s/config/config_server_test_fixture.h17
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp2
-rw-r--r--src/mongo/db/s/metadata_manager_test.cpp2
-rw-r--r--src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp2
-rw-r--r--src/mongo/db/s/migration_destination_manager_test.cpp3
-rw-r--r--src/mongo/db/s/migration_util_test.cpp3
-rw-r--r--src/mongo/db/s/op_observer_sharding_test.cpp2
-rw-r--r--src/mongo/db/s/persistent_task_queue_test.cpp3
-rw-r--r--src/mongo/db/s/persistent_task_store_test.cpp5
-rw-r--r--src/mongo/db/s/range_deletion_util_test.cpp3
-rw-r--r--src/mongo/db/s/session_catalog_migration_destination_test.cpp3
-rw-r--r--src/mongo/db/s/shard_local.cpp (renamed from src/mongo/s/client/shard_local.cpp)6
-rw-r--r--src/mongo/db/s/shard_local.h (renamed from src/mongo/s/client/shard_local.h)2
-rw-r--r--src/mongo/db/s/shard_local_test.cpp (renamed from src/mongo/s/client/shard_local_test.cpp)5
-rw-r--r--src/mongo/db/s/shard_metadata_util_test.cpp3
-rw-r--r--src/mongo/db/s/shard_server_catalog_cache_loader_test.cpp6
-rw-r--r--src/mongo/db/s/shard_server_test_fixture.cpp (renamed from src/mongo/s/shard_server_test_fixture.cpp)10
-rw-r--r--src/mongo/db/s/shard_server_test_fixture.h (renamed from src/mongo/s/shard_server_test_fixture.h)17
-rw-r--r--src/mongo/db/s/sharding_initialization_mongod.cpp2
-rw-r--r--src/mongo/db/s/sharding_initialization_mongod_test.cpp2
-rw-r--r--src/mongo/db/s/sharding_initialization_op_observer_test.cpp2
-rw-r--r--src/mongo/db/s/sharding_logging_test.cpp37
-rw-r--r--src/mongo/db/s/sharding_mongod_test_fixture.cpp (renamed from src/mongo/s/sharding_mongod_test_fixture.cpp)33
-rw-r--r--src/mongo/db/s/sharding_mongod_test_fixture.h (renamed from src/mongo/s/sharding_mongod_test_fixture.h)43
-rw-r--r--src/mongo/db/s/split_chunk_test.cpp5
-rw-r--r--src/mongo/db/s/split_vector_test.cpp3
-rw-r--r--src/mongo/db/s/transaction_coordinator_futures_util_test.cpp3
-rw-r--r--src/mongo/db/s/transaction_coordinator_test_fixture.h2
-rw-r--r--src/mongo/db/s/vector_clock_shard_server_test.cpp3
-rw-r--r--src/mongo/db/service_context_d_test_fixture.cpp11
-rw-r--r--src/mongo/db/service_context_d_test_fixture.h7
-rw-r--r--src/mongo/db/service_context_test_fixture.h1
-rw-r--r--src/mongo/db/vector_clock_mongod_test.cpp3
-rw-r--r--src/mongo/s/SConscript49
-rw-r--r--src/mongo/s/catalog/SConscript2
-rw-r--r--src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp3
-rw-r--r--src/mongo/s/catalog/replset_dist_lock_manager_test.cpp2
-rw-r--r--src/mongo/s/catalog/sharding_catalog_test.cpp1
-rw-r--r--src/mongo/s/catalog/sharding_catalog_write_retry_test.cpp2
-rw-r--r--src/mongo/s/catalog/type_shard_collection_test.cpp1
-rw-r--r--src/mongo/s/chunk_manager_index_bounds_test.cpp4
-rw-r--r--src/mongo/s/client/SConscript64
-rw-r--r--src/mongo/s/client/shard_registry_data_test.cpp8
-rw-r--r--src/mongo/s/client/shard_remote_test.cpp4
-rw-r--r--src/mongo/s/cluster_identity_loader_test.cpp1
-rw-r--r--src/mongo/s/cluster_last_error_info_test.cpp1
-rw-r--r--src/mongo/s/commands/SConscript2
-rw-r--r--src/mongo/s/commands/cluster_balancer_collection_status_cmd.cpp5
-rw-r--r--src/mongo/s/query/SConscript4
-rw-r--r--src/mongo/s/query/results_merger_test_fixture.cpp1
-rw-r--r--src/mongo/s/routing_table_history_test.cpp6
-rw-r--r--src/mongo/s/sessions_collection_sharded_test.cpp1
-rw-r--r--src/mongo/s/sharding_router_test_fixture.cpp117
-rw-r--r--src/mongo/s/sharding_router_test_fixture.h59
-rw-r--r--src/mongo/s/sharding_task_executor_test.cpp1
-rw-r--r--src/mongo/s/sharding_test_fixture_common.cpp86
-rw-r--r--src/mongo/s/sharding_test_fixture_common.h40
-rw-r--r--src/mongo/s/write_ops/batch_write_op.cpp1
74 files changed, 311 insertions, 575 deletions
diff --git a/src/mongo/client/remote_command_targeter.h b/src/mongo/client/remote_command_targeter.h
index 7eed209d226..6e9cfcd582f 100644
--- a/src/mongo/client/remote_command_targeter.h
+++ b/src/mongo/client/remote_command_targeter.h
@@ -29,19 +29,15 @@
#pragma once
+#include "mongo/base/status_with.h"
+#include "mongo/client/connection_string.h"
+#include "mongo/client/read_preference.h"
#include "mongo/util/future.h"
#include "mongo/util/net/hostandport.h"
#include "mongo/util/time_support.h"
namespace mongo {
-class ConnectionString;
-class OperationContext;
-struct ReadPreferenceSetting;
-struct HostAndPort;
-template <typename T>
-class StatusWith;
-
/**
* Interface encapsulating the targeting logic for a given replica set or a standalone host.
*/
diff --git a/src/mongo/client/remote_command_targeter_factory_mock.cpp b/src/mongo/client/remote_command_targeter_factory_mock.cpp
index 09fba5a0ac4..0aaafa8d301 100644
--- a/src/mongo/client/remote_command_targeter_factory_mock.cpp
+++ b/src/mongo/client/remote_command_targeter_factory_mock.cpp
@@ -31,13 +31,6 @@
#include "mongo/client/remote_command_targeter_factory_mock.h"
-#include <memory>
-
-#include "mongo/base/status_with.h"
-#include "mongo/client/connection_string.h"
-#include "mongo/client/remote_command_targeter_mock.h"
-#include "mongo/util/assert_util.h"
-
namespace mongo {
namespace {
diff --git a/src/mongo/client/remote_command_targeter_factory_mock.h b/src/mongo/client/remote_command_targeter_factory_mock.h
index 96d2299c3ba..470d79e21a8 100644
--- a/src/mongo/client/remote_command_targeter_factory_mock.h
+++ b/src/mongo/client/remote_command_targeter_factory_mock.h
@@ -32,11 +32,10 @@
#include <map>
#include "mongo/client/remote_command_targeter_factory.h"
+#include "mongo/client/remote_command_targeter_mock.h"
namespace mongo {
-class RemoteCommandTargeterMock;
-
/**
* Factory which instantiates mock remote command targeters. This class is not thread-safe and is
* only used for unit-testing.
diff --git a/src/mongo/client/remote_command_targeter_mock.cpp b/src/mongo/client/remote_command_targeter_mock.cpp
index fbf5b91ae65..e643a1af8c7 100644
--- a/src/mongo/client/remote_command_targeter_mock.cpp
+++ b/src/mongo/client/remote_command_targeter_mock.cpp
@@ -31,9 +31,6 @@
#include "mongo/client/remote_command_targeter_mock.h"
-#include "mongo/base/status_with.h"
-#include "mongo/client/read_preference.h"
-
namespace mongo {
RemoteCommandTargeterMock::RemoteCommandTargeterMock()
diff --git a/src/mongo/client/remote_command_targeter_mock.h b/src/mongo/client/remote_command_targeter_mock.h
index f9731ca03f4..1b89b08dde7 100644
--- a/src/mongo/client/remote_command_targeter_mock.h
+++ b/src/mongo/client/remote_command_targeter_mock.h
@@ -31,9 +31,7 @@
#include <set>
-#include "mongo/client/connection_string.h"
#include "mongo/client/remote_command_targeter.h"
-#include "mongo/util/net/hostandport.h"
namespace mongo {
diff --git a/src/mongo/db/SConscript b/src/mongo/db/SConscript
index 642e54fbb7a..adab7bc70e4 100644
--- a/src/mongo/db/SConscript
+++ b/src/mongo/db/SConscript
@@ -1507,6 +1507,17 @@ env.Library(
)
env.Library(
+ target='rs_local_client',
+ source=[
+ 'rs_local_client.cpp',
+ ],
+ LIBDEPS_PRIVATE=[
+ '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
+ 'dbdirectclient',
+ ],
+)
+
+env.Library(
target='keys_collection_document',
source=[
'keys_collection_document.cpp',
@@ -1523,11 +1534,13 @@ env.Library(
'keys_collection_client_direct.cpp',
],
LIBDEPS=[
- 'keys_collection_document',
- 'logical_time',
'$BUILD_DIR/mongo/s/catalog/sharding_catalog_client',
- '$BUILD_DIR/mongo/s/client/rs_local_client',
'$BUILD_DIR/mongo/s/client/shard_interface',
+ 'keys_collection_document',
+ 'logical_time',
+ ],
+ LIBDEPS_PRIVATE=[
+ 'rs_local_client',
],
)
@@ -1635,11 +1648,11 @@ env.Library(
'logical_clock_test_fixture.cpp',
],
LIBDEPS= [
+ '$BUILD_DIR/mongo/db/auth/authmocks',
+ '$BUILD_DIR/mongo/util/clock_source_mock',
+ 's/sharding_mongod_test_fixture',
'signed_logical_time',
'vector_clock',
- '$BUILD_DIR/mongo/db/auth/authmocks',
- '$BUILD_DIR/mongo/s/sharding_mongod_test_fixture',
- '$BUILD_DIR/mongo/util/clock_source_mock'
],
)
@@ -1663,7 +1676,6 @@ env.Library(
'service_context_d_test_fixture.cpp',
],
LIBDEPS=[
- '$BUILD_DIR/mongo/unittest/unittest',
'service_context_test_fixture',
],
LIBDEPS_PRIVATE=[
@@ -1989,7 +2001,7 @@ env.CppLibfuzzerTest(
'$BUILD_DIR/mongo/transport/service_entry_point',
'$BUILD_DIR/mongo/transport/transport_layer_mock',
'$BUILD_DIR/mongo/db/repl/replmocks',
- '$BUILD_DIR/mongo/unittest/unittest/',
+ '$BUILD_DIR/mongo/unittest/unittest',
],
)
diff --git a/src/mongo/db/keys_collection_client_direct.h b/src/mongo/db/keys_collection_client_direct.h
index 6e96d8e94ed..3b101d99167 100644
--- a/src/mongo/db/keys_collection_client_direct.h
+++ b/src/mongo/db/keys_collection_client_direct.h
@@ -32,9 +32,8 @@
#include <memory>
#include <string>
-#include "mongo/base/status.h"
#include "mongo/db/keys_collection_client.h"
-#include "mongo/s/client/rs_local_client.h"
+#include "mongo/db/rs_local_client.h"
namespace mongo {
diff --git a/src/mongo/db/logical_clock_test_fixture.h b/src/mongo/db/logical_clock_test_fixture.h
index 4b3322d406b..4602ae629cd 100644
--- a/src/mongo/db/logical_clock_test_fixture.h
+++ b/src/mongo/db/logical_clock_test_fixture.h
@@ -29,8 +29,7 @@
#pragma once
-#include "mongo/s/sharding_mongod_test_fixture.h"
-#include "mongo/unittest/unittest.h"
+#include "mongo/db/s/sharding_mongod_test_fixture.h"
namespace mongo {
diff --git a/src/mongo/db/pipeline/SConscript b/src/mongo/db/pipeline/SConscript
index d7841f55b3c..a45860c9c15 100644
--- a/src/mongo/db/pipeline/SConscript
+++ b/src/mongo/db/pipeline/SConscript
@@ -402,7 +402,6 @@ env.CppUnitTest(
'$BUILD_DIR/mongo/db/service_context_d_test_fixture',
'$BUILD_DIR/mongo/db/service_context_test_fixture',
'$BUILD_DIR/mongo/executor/thread_pool_task_executor_test_fixture',
- '$BUILD_DIR/mongo/s/catalog_cache_test_fixture',
'$BUILD_DIR/mongo/s/is_mongos',
'$BUILD_DIR/mongo/s/query/router_exec_stage',
'$BUILD_DIR/mongo/s/sharding_router_test_fixture',
diff --git a/src/mongo/db/pipeline/process_interface/SConscript b/src/mongo/db/pipeline/process_interface/SConscript
index aa783988fd3..5c74b6f7999 100644
--- a/src/mongo/db/pipeline/process_interface/SConscript
+++ b/src/mongo/db/pipeline/process_interface/SConscript
@@ -120,7 +120,7 @@ env.CppUnitTest(
'$BUILD_DIR/mongo/db/query/query_test_service_context',
'$BUILD_DIR/mongo/db/service_context_test_fixture',
'$BUILD_DIR/mongo/db/vector_clock_mongod',
- '$BUILD_DIR/mongo/s/catalog_cache_test_fixture',
+ '$BUILD_DIR/mongo/s/sharding_router_test_fixture',
'mongos_process_interface',
'shardsvr_process_interface',
]
diff --git a/src/mongo/s/client/rs_local_client.cpp b/src/mongo/db/rs_local_client.cpp
index e1ec4917f8f..253efa13eca 100644
--- a/src/mongo/s/client/rs_local_client.cpp
+++ b/src/mongo/db/rs_local_client.cpp
@@ -27,14 +27,10 @@
* it in the license file.
*/
-#include <boost/none_t.hpp>
-
#include "mongo/platform/basic.h"
-#include "mongo/s/client/rs_local_client.h"
+#include "mongo/db/rs_local_client.h"
-#include "mongo/base/status.h"
-#include "mongo/base/status_with.h"
#include "mongo/db/curop.h"
#include "mongo/db/dbdirectclient.h"
#include "mongo/db/repl/repl_client_info.h"
@@ -42,7 +38,6 @@
#include "mongo/db/repl/replication_coordinator.h"
#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/rpc/unique_message.h"
-#include "mongo/s/client/shard.h"
#include "mongo/util/scopeguard.h"
namespace mongo {
diff --git a/src/mongo/s/client/rs_local_client.h b/src/mongo/db/rs_local_client.h
index 233732b5c8e..233732b5c8e 100644
--- a/src/mongo/s/client/rs_local_client.h
+++ b/src/mongo/db/rs_local_client.h
diff --git a/src/mongo/db/s/SConscript b/src/mongo/db/s/SConscript
index 841cddda124..d072b62a778 100644
--- a/src/mongo/db/s/SConscript
+++ b/src/mongo/db/s/SConscript
@@ -81,6 +81,7 @@ env.Library(
'sharding_state_recovery.cpp',
'sharding_statistics.cpp',
'split_chunk.cpp',
+ 'shard_local.cpp',
'split_vector.cpp',
'start_chunk_clone_request.cpp',
env.Idlc('migration_coordinator_document.idl')[0],
@@ -95,13 +96,11 @@ env.Library(
'$BUILD_DIR/mongo/db/op_observer_impl',
'$BUILD_DIR/mongo/db/ops/write_ops_exec',
'$BUILD_DIR/mongo/db/repl/oplog',
- '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
'$BUILD_DIR/mongo/db/rw_concern_d',
'$BUILD_DIR/mongo/db/server_options_core',
'$BUILD_DIR/mongo/db/storage/remove_saver',
'$BUILD_DIR/mongo/db/transaction',
'$BUILD_DIR/mongo/db/vector_clock_mongod',
- '$BUILD_DIR/mongo/s/client/shard_local',
'$BUILD_DIR/mongo/s/query/cluster_aggregate',
'$BUILD_DIR/mongo/s/sharding_initialization',
'chunk_splitter',
@@ -113,6 +112,7 @@ env.Library(
],
LIBDEPS_PRIVATE=[
'$BUILD_DIR/mongo/db/index_builds_coordinator_interface',
+ '$BUILD_DIR/mongo/db/rs_local_client',
'$BUILD_DIR/mongo/db/session_catalog',
'$BUILD_DIR/mongo/idl/server_parameter',
],
@@ -342,60 +342,40 @@ env.Library(
)
env.Library(
- target='config_server_test_fixture',
+ target='sharding_mongod_test_fixture',
source=[
- 'config/config_server_test_fixture.cpp',
+ 'sharding_mongod_test_fixture.cpp',
],
LIBDEPS=[
- '$BUILD_DIR/mongo/s/sharding_mongod_test_fixture',
- 'sharding_catalog_manager',
+ '$BUILD_DIR/mongo/db/repl/drop_pending_collection_reaper',
+ '$BUILD_DIR/mongo/db/repl/replmocks',
+ '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
+ '$BUILD_DIR/mongo/s/sharding_test_fixture_common',
+ 'sharding_runtime_d',
],
)
-env.CppUnitTest(
- target='db_s_test',
+env.Library(
+ target='shard_server_test_fixture',
source=[
- 'chunk_split_state_driver_test.cpp',
- 'config_server_op_observer_test.cpp',
- 'migration_session_id_test.cpp',
- 'sharding_logging_test.cpp',
- 'start_chunk_clone_request_test.cpp',
- 'type_shard_identity_test.cpp',
- 'vector_clock_config_server_test.cpp',
- 'wait_for_majority_service_test.cpp',
+ 'shard_server_test_fixture.cpp',
],
LIBDEPS=[
- '$BUILD_DIR/mongo/db/auth/authmocks',
+ '$BUILD_DIR/mongo/s/catalog/dist_lock_catalog_mock',
'$BUILD_DIR/mongo/s/catalog/dist_lock_manager_mock',
- '$BUILD_DIR/mongo/s/sharding_router_test_fixture',
- 'chunk_splitter',
- 'config_server_test_fixture',
- 'sharding_logging',
- 'sharding_runtime_d',
- 'type_shard_identity',
+ 'sharding_mongod_test_fixture',
],
)
-env.CppUnitTest(
- target='db_s_balancer_test',
+env.Library(
+ target='config_server_test_fixture',
source=[
- 'balancer/balancer_chunk_selection_policy_test.cpp',
- 'balancer/balancer_policy_test.cpp',
- 'balancer/cluster_statistics_test.cpp',
- 'balancer/core_options_stub.cpp',
- 'balancer/migration_manager_test.cpp',
- 'balancer/migration_test_fixture.cpp',
- 'balancer/scoped_migration_request_test.cpp',
- 'balancer/type_migration_test.cpp',
+ 'config/config_server_test_fixture.cpp',
],
LIBDEPS=[
- '$BUILD_DIR/mongo/db/auth/authmocks',
- '$BUILD_DIR/mongo/db/read_write_concern_defaults_mock',
- '$BUILD_DIR/mongo/db/repl/replication_info',
- '$BUILD_DIR/mongo/util/version_impl',
- 'balancer',
- 'config_server_test_fixture',
- ]
+ 'sharding_catalog_manager',
+ 'sharding_mongod_test_fixture',
+ ],
)
env.CppUnitTest(
@@ -405,18 +385,25 @@ env.CppUnitTest(
'active_move_primaries_registry_test.cpp',
'active_shard_collection_registry_test.cpp',
'catalog_cache_loader_mock.cpp',
+ 'chunk_split_state_driver_test.cpp',
'migration_chunk_cloner_source_legacy_test.cpp',
'migration_destination_manager_test.cpp',
+ 'migration_session_id_test.cpp',
'migration_util_test.cpp',
'namespace_metadata_change_notifications_test.cpp',
'session_catalog_migration_destination_test.cpp',
'session_catalog_migration_source_test.cpp',
+ 'shard_local_test.cpp',
'shard_metadata_util_test.cpp',
'shard_server_catalog_cache_loader_test.cpp',
'sharding_initialization_mongod_test.cpp',
'sharding_initialization_op_observer_test.cpp',
+ 'sharding_logging_test.cpp',
'split_vector_test.cpp',
+ 'start_chunk_clone_request_test.cpp',
+ 'type_shard_identity_test.cpp',
'vector_clock_shard_server_test.cpp',
+ 'wait_for_majority_service_test.cpp',
],
LIBDEPS_PRIVATE=[
'$BUILD_DIR/mongo/db/auth/authmocks',
@@ -427,9 +414,9 @@ env.CppUnitTest(
'$BUILD_DIR/mongo/db/repl/mock_repl_coord_server_fixture',
'$BUILD_DIR/mongo/db/repl/storage_interface_impl',
'$BUILD_DIR/mongo/s/catalog/dist_lock_manager_mock',
- '$BUILD_DIR/mongo/s/catalog/sharding_catalog_client_impl',
'$BUILD_DIR/mongo/s/catalog/sharding_catalog_client_mock',
- '$BUILD_DIR/mongo/s/shard_server_test_fixture',
+ 'shard_server_test_fixture',
+ 'sharding_logging',
'sharding_runtime_d',
],
)
@@ -450,9 +437,8 @@ env.CppUnitTest(
'$BUILD_DIR/mongo/client/remote_command_targeter_mock',
'$BUILD_DIR/mongo/db/auth/authmocks',
'$BUILD_DIR/mongo/db/repl/replmocks',
- '$BUILD_DIR/mongo/executor/network_test_env',
'$BUILD_DIR/mongo/executor/thread_pool_task_executor_test_fixture',
- '$BUILD_DIR/mongo/s/shard_server_test_fixture',
+ 'shard_server_test_fixture',
],
)
@@ -470,13 +456,13 @@ env.CppUnitTest(
'$BUILD_DIR/mongo/db/auth/authmocks',
'$BUILD_DIR/mongo/db/commands/server_status',
'$BUILD_DIR/mongo/s/catalog/sharding_catalog_client_mock',
- '$BUILD_DIR/mongo/s/shard_server_test_fixture',
+ 'shard_server_test_fixture',
'transaction_coordinator',
],
)
env.CppUnitTest(
- target='db_s_sharding_catalog_manager_test',
+ target='db_s_config_server_test',
source=[
'config/initial_split_policy_test.cpp',
'config/sharding_catalog_manager_add_shard_test.cpp',
@@ -494,10 +480,24 @@ env.CppUnitTest(
'config/sharding_catalog_manager_remove_shard_test.cpp',
'config/sharding_catalog_manager_shard_collection_test.cpp',
'config/sharding_catalog_manager_split_chunk_test.cpp',
+ 'balancer/balancer_chunk_selection_policy_test.cpp',
+ 'balancer/balancer_policy_test.cpp',
+ 'balancer/cluster_statistics_test.cpp',
+ 'balancer/core_options_stub.cpp',
+ 'balancer/migration_manager_test.cpp',
+ 'balancer/migration_test_fixture.cpp',
+ 'balancer/scoped_migration_request_test.cpp',
+ 'balancer/type_migration_test.cpp',
+ 'config_server_op_observer_test.cpp',
+ 'vector_clock_config_server_test.cpp',
],
LIBDEPS=[
'$BUILD_DIR/mongo/db/auth/authmocks',
+ '$BUILD_DIR/mongo/db/read_write_concern_defaults_mock',
+ '$BUILD_DIR/mongo/db/repl/replication_info',
+ '$BUILD_DIR/mongo/s/catalog/dist_lock_manager_mock',
'$BUILD_DIR/mongo/util/version_impl',
+ 'balancer',
'config_server_test_fixture',
]
)
diff --git a/src/mongo/db/s/collection_metadata_filtering_test.cpp b/src/mongo/db/s/collection_metadata_filtering_test.cpp
index 348cd18bfb4..ebb0d564bea 100644
--- a/src/mongo/db/s/collection_metadata_filtering_test.cpp
+++ b/src/mongo/db/s/collection_metadata_filtering_test.cpp
@@ -32,8 +32,8 @@
#include "mongo/db/catalog_raii.h"
#include "mongo/db/s/collection_sharding_runtime.h"
#include "mongo/db/s/operation_sharding_state.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/s/catalog/type_chunk.h"
-#include "mongo/s/shard_server_test_fixture.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/collection_sharding_runtime_test.cpp b/src/mongo/db/s/collection_sharding_runtime_test.cpp
index c20f65db9d0..08d6ad3edad 100644
--- a/src/mongo/db/s/collection_sharding_runtime_test.cpp
+++ b/src/mongo/db/s/collection_sharding_runtime_test.cpp
@@ -34,8 +34,8 @@
#include "mongo/db/dbdirectclient.h"
#include "mongo/db/s/collection_sharding_runtime.h"
#include "mongo/db/s/operation_sharding_state.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/wait_for_majority_service.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/util/fail_point.h"
namespace mongo {
diff --git a/src/mongo/db/s/config/config_server_test_fixture.cpp b/src/mongo/db/s/config/config_server_test_fixture.cpp
index 0cbc51e25b4..de55abb2be4 100644
--- a/src/mongo/db/s/config/config_server_test_fixture.cpp
+++ b/src/mongo/db/s/config/config_server_test_fixture.cpp
@@ -51,7 +51,6 @@
#include "mongo/db/repl/repl_settings.h"
#include "mongo/db/repl/replication_coordinator_mock.h"
#include "mongo/db/s/config/sharding_catalog_manager.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor_pool.h"
#include "mongo/executor/thread_pool_task_executor_test_fixture.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
@@ -60,17 +59,13 @@
#include "mongo/s/catalog/dist_lock_catalog_impl.h"
#include "mongo/s/catalog/replset_dist_lock_manager.h"
#include "mongo/s/catalog/sharding_catalog_client_impl.h"
-#include "mongo/s/catalog/type_changelog.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog/type_collection.h"
#include "mongo/s/catalog/type_database.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/catalog_cache.h"
#include "mongo/s/chunk_version.h"
-#include "mongo/s/client/shard_factory.h"
-#include "mongo/s/client/shard_local.h"
#include "mongo/s/client/shard_registry.h"
-#include "mongo/s/client/shard_remote.h"
#include "mongo/s/config_server_catalog_cache_loader.h"
#include "mongo/s/database_version_helpers.h"
#include "mongo/s/grid.h"
diff --git a/src/mongo/db/s/config/config_server_test_fixture.h b/src/mongo/db/s/config/config_server_test_fixture.h
index 0c64cfca33b..ba008a827f6 100644
--- a/src/mongo/db/s/config/config_server_test_fixture.h
+++ b/src/mongo/db/s/config/config_server_test_fixture.h
@@ -30,7 +30,7 @@
#pragma once
#include "mongo/db/catalog_raii.h"
-#include "mongo/s/sharding_mongod_test_fixture.h"
+#include "mongo/db/s/sharding_mongod_test_fixture.h"
namespace mongo {
@@ -43,18 +43,19 @@ class Shard;
class ShardId;
class ShardRegistry;
class ShardType;
-template <typename T>
-class StatusWith;
/**
* Provides config-specific functionality in addition to the mock storage engine and mock network
* provided by ShardingMongodTestFixture.
*/
class ConfigServerTestFixture : public ShardingMongodTestFixture {
-public:
+protected:
ConfigServerTestFixture();
~ConfigServerTestFixture();
+ void setUp() override;
+ void tearDown() override;
+
std::shared_ptr<Shard> getConfigShard() const;
/**
@@ -150,12 +151,6 @@ public:
*/
std::vector<KeysCollectionDocument> getKeys(OperationContext* opCtx);
-protected:
- /**
- * Sets this node up as a mongod with sharding components for ClusterRole::ConfigServer.
- */
- void setUp() override;
-
/**
* Sets this node up and locks the config db in _setUp() before calling
* initializeGlobalShardingStateForMongodForTest(). The RAII object for the database lock is
@@ -170,8 +165,6 @@ protected:
*/
void setUpAndInitializeConfigDb();
- void tearDown() override;
-
std::unique_ptr<DistLockCatalog> makeDistLockCatalog() override;
std::unique_ptr<DistLockManager> makeDistLockManager(
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp b/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp
index acf08255915..254afab7c12 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_remove_shard_test.cpp
@@ -39,11 +39,9 @@
#include "mongo/db/ops/write_ops.h"
#include "mongo/db/s/config/config_server_test_fixture.h"
#include "mongo/db/s/config/sharding_catalog_manager.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
#include "mongo/rpc/metadata/tracking_metadata.h"
-#include "mongo/s/catalog/type_changelog.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog/type_database.h"
#include "mongo/s/catalog/type_shard.h"
diff --git a/src/mongo/db/s/metadata_manager_test.cpp b/src/mongo/db/s/metadata_manager_test.cpp
index dc053e3c202..760f04ea78e 100644
--- a/src/mongo/db/s/metadata_manager_test.cpp
+++ b/src/mongo/db/s/metadata_manager_test.cpp
@@ -37,6 +37,7 @@
#include "mongo/db/jsobj.h"
#include "mongo/db/namespace_string.h"
#include "mongo/db/s/metadata_manager.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/sharding_runtime_d_params_gen.h"
#include "mongo/db/s/sharding_state.h"
#include "mongo/db/server_options.h"
@@ -44,7 +45,6 @@
#include "mongo/executor/task_executor.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/client/shard_registry.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/stdx/condition_variable.h"
#include "mongo/unittest/unittest.h"
#include "mongo/util/assert_util.h"
diff --git a/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp b/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp
index 730a2d4af3b..446b5984c68 100644
--- a/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp
+++ b/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp
@@ -36,10 +36,10 @@
#include "mongo/db/namespace_string.h"
#include "mongo/db/s/collection_sharding_runtime.h"
#include "mongo/db/s/migration_chunk_cloner_source_legacy.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/s/catalog/sharding_catalog_client_mock.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/client/shard_registry.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/unittest/unittest.h"
#include "mongo/util/clock_source_mock.h"
diff --git a/src/mongo/db/s/migration_destination_manager_test.cpp b/src/mongo/db/s/migration_destination_manager_test.cpp
index 9c5fc74de87..51aa7174b35 100644
--- a/src/mongo/db/s/migration_destination_manager_test.cpp
+++ b/src/mongo/db/s/migration_destination_manager_test.cpp
@@ -30,8 +30,7 @@
#include "mongo/platform/basic.h"
#include "mongo/db/s/migration_destination_manager.h"
-#include "mongo/s/shard_server_test_fixture.h"
-#include "mongo/unittest/unittest.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/migration_util_test.cpp b/src/mongo/db/s/migration_util_test.cpp
index 9ae0dfa8bed..f643224ccee 100644
--- a/src/mongo/db/s/migration_util_test.cpp
+++ b/src/mongo/db/s/migration_util_test.cpp
@@ -37,13 +37,12 @@
#include "mongo/db/s/persistent_task_store.h"
#include "mongo/db/s/shard_filtering_metadata_refresh.h"
#include "mongo/db/s/shard_server_catalog_cache_loader.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/sharding_state.h"
#include "mongo/db/s/wait_for_majority_service.h"
#include "mongo/s/catalog/sharding_catalog_client_mock.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/database_version_helpers.h"
-#include "mongo/s/shard_server_test_fixture.h"
-#include "mongo/unittest/unittest.h"
#include "mongo/util/future.h"
namespace mongo {
diff --git a/src/mongo/db/s/op_observer_sharding_test.cpp b/src/mongo/db/s/op_observer_sharding_test.cpp
index 54b15903ce8..eaf8e55f78b 100644
--- a/src/mongo/db/s/op_observer_sharding_test.cpp
+++ b/src/mongo/db/s/op_observer_sharding_test.cpp
@@ -33,8 +33,8 @@
#include "mongo/db/s/collection_sharding_runtime.h"
#include "mongo/db/s/op_observer_sharding_impl.h"
#include "mongo/db/s/operation_sharding_state.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/type_shard_identity.h"
-#include "mongo/s/shard_server_test_fixture.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/persistent_task_queue_test.cpp b/src/mongo/db/s/persistent_task_queue_test.cpp
index 96324d13761..6009b99860c 100644
--- a/src/mongo/db/s/persistent_task_queue_test.cpp
+++ b/src/mongo/db/s/persistent_task_queue_test.cpp
@@ -31,10 +31,9 @@
#include "mongo/db/db_raii.h"
#include "mongo/db/s/collection_sharding_runtime.h"
#include "mongo/db/s/persistent_task_queue.h"
-#include "mongo/s/shard_server_test_fixture.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/stdx/thread.h"
#include "mongo/unittest/barrier.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/persistent_task_store_test.cpp b/src/mongo/db/s/persistent_task_store_test.cpp
index c2abcf6a7be..177fe264d1d 100644
--- a/src/mongo/db/s/persistent_task_store_test.cpp
+++ b/src/mongo/db/s/persistent_task_store_test.cpp
@@ -27,11 +27,12 @@
* it in the license file.
*/
+#include "mongo/platform/basic.h"
+
#include "mongo/db/db_raii.h"
#include "mongo/db/s/collection_sharding_runtime.h"
#include "mongo/db/s/persistent_task_store.h"
-#include "mongo/s/shard_server_test_fixture.h"
-#include "mongo/unittest/unittest.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/range_deletion_util_test.cpp b/src/mongo/db/s/range_deletion_util_test.cpp
index 0121d4b9e7c..919d723028f 100644
--- a/src/mongo/db/s/range_deletion_util_test.cpp
+++ b/src/mongo/db/s/range_deletion_util_test.cpp
@@ -37,11 +37,10 @@
#include "mongo/db/s/persistent_task_store.h"
#include "mongo/db/s/range_deletion_task_gen.h"
#include "mongo/db/s/range_deletion_util.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/sharding_runtime_d_params_gen.h"
#include "mongo/db/s/wait_for_majority_service.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/unittest/death_test.h"
-#include "mongo/unittest/unittest.h"
#include "mongo/util/fail_point.h"
namespace mongo {
diff --git a/src/mongo/db/s/session_catalog_migration_destination_test.cpp b/src/mongo/db/s/session_catalog_migration_destination_test.cpp
index 1f8e00bd3b2..68119925dfb 100644
--- a/src/mongo/db/s/session_catalog_migration_destination_test.cpp
+++ b/src/mongo/db/s/session_catalog_migration_destination_test.cpp
@@ -46,6 +46,7 @@
#include "mongo/db/s/collection_sharding_runtime.h"
#include "mongo/db/s/migration_session_id.h"
#include "mongo/db/s/session_catalog_migration_destination.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/server_options.h"
#include "mongo/db/session_catalog_mongod.h"
#include "mongo/db/session_txn_record_gen.h"
@@ -55,9 +56,7 @@
#include "mongo/s/catalog/sharding_catalog_client_mock.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/client/shard_registry.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/stdx/thread.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
diff --git a/src/mongo/s/client/shard_local.cpp b/src/mongo/db/s/shard_local.cpp
index ef6ec9cda7c..6b18e6fa849 100644
--- a/src/mongo/s/client/shard_local.cpp
+++ b/src/mongo/db/s/shard_local.cpp
@@ -27,14 +27,10 @@
* it in the license file.
*/
-#include <boost/none_t.hpp>
-
#include "mongo/platform/basic.h"
-#include "mongo/s/client/shard_local.h"
+#include "mongo/db/s/shard_local.h"
-#include "mongo/base/status.h"
-#include "mongo/base/status_with.h"
#include "mongo/client/remote_command_targeter.h"
#include "mongo/db/catalog/index_catalog.h"
#include "mongo/db/catalog_raii.h"
diff --git a/src/mongo/s/client/shard_local.h b/src/mongo/db/s/shard_local.h
index 7a2ed6d1c78..2bce2dad081 100644
--- a/src/mongo/s/client/shard_local.h
+++ b/src/mongo/db/s/shard_local.h
@@ -29,7 +29,7 @@
#pragma once
-#include "mongo/s/client/rs_local_client.h"
+#include "mongo/db/rs_local_client.h"
#include "mongo/s/client/shard.h"
namespace mongo {
diff --git a/src/mongo/s/client/shard_local_test.cpp b/src/mongo/db/s/shard_local_test.cpp
index fcc00899ecf..d7314c965cf 100644
--- a/src/mongo/s/client/shard_local_test.cpp
+++ b/src/mongo/db/s/shard_local_test.cpp
@@ -29,10 +29,6 @@
#include "mongo/platform/basic.h"
-#include "mongo/s/client/shard_local.h"
-
-#include <memory>
-
#include "mongo/client/read_preference.h"
#include "mongo/db/catalog_raii.h"
#include "mongo/db/client.h"
@@ -40,6 +36,7 @@
#include "mongo/db/query/find_and_modify_request.h"
#include "mongo/db/repl/replication_coordinator.h"
#include "mongo/db/repl/replication_coordinator_mock.h"
+#include "mongo/db/s/shard_local.h"
#include "mongo/db/service_context_d_test_fixture.h"
#include "mongo/db/write_concern_options.h"
#include "mongo/s/client/shard_registry.h"
diff --git a/src/mongo/db/s/shard_metadata_util_test.cpp b/src/mongo/db/s/shard_metadata_util_test.cpp
index 771dbab13ec..0b963169f8d 100644
--- a/src/mongo/db/s/shard_metadata_util_test.cpp
+++ b/src/mongo/db/s/shard_metadata_util_test.cpp
@@ -35,11 +35,10 @@
#include "mongo/client/remote_command_targeter_mock.h"
#include "mongo/db/commands.h"
#include "mongo/db/dbdirectclient.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog/type_shard_collection.h"
-#include "mongo/s/shard_server_test_fixture.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/shard_server_catalog_cache_loader_test.cpp b/src/mongo/db/s/shard_server_catalog_cache_loader_test.cpp
index 902b09c3a64..5cfc7ce4124 100644
--- a/src/mongo/db/s/shard_server_catalog_cache_loader_test.cpp
+++ b/src/mongo/db/s/shard_server_catalog_cache_loader_test.cpp
@@ -29,13 +29,11 @@
#include "mongo/platform/basic.h"
-#include "mongo/db/s/shard_server_catalog_cache_loader.h"
-
#include "mongo/db/s/catalog_cache_loader_mock.h"
+#include "mongo/db/s/shard_server_catalog_cache_loader.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog/type_collection.h"
-#include "mongo/s/shard_server_test_fixture.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
diff --git a/src/mongo/s/shard_server_test_fixture.cpp b/src/mongo/db/s/shard_server_test_fixture.cpp
index bd42dc5be66..b916c674792 100644
--- a/src/mongo/s/shard_server_test_fixture.cpp
+++ b/src/mongo/db/s/shard_server_test_fixture.cpp
@@ -29,9 +29,7 @@
#include "mongo/platform/basic.h"
-#include "mongo/s/shard_server_test_fixture.h"
-
-#include <memory>
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/client/remote_command_targeter_mock.h"
#include "mongo/db/commands.h"
@@ -45,11 +43,8 @@
#include "mongo/s/config_server_catalog_cache_loader.h"
namespace mongo {
-namespace {
-
-const HostAndPort kConfigHostAndPort("dummy", 123);
-} // namespace
+const HostAndPort ShardServerTestFixture::kConfigHostAndPort("dummy", 123);
ShardServerTestFixture::ShardServerTestFixture() = default;
@@ -62,7 +57,6 @@ std::shared_ptr<RemoteCommandTargeterMock> ShardServerTestFixture::configTargete
void ShardServerTestFixture::setUp() {
ShardingMongodTestFixture::setUp();
-
replicationCoordinator()->alwaysAllowWrites(true);
// Initialize sharding components as a shard server.
diff --git a/src/mongo/s/shard_server_test_fixture.h b/src/mongo/db/s/shard_server_test_fixture.h
index e898b933d99..deee682e174 100644
--- a/src/mongo/s/shard_server_test_fixture.h
+++ b/src/mongo/db/s/shard_server_test_fixture.h
@@ -29,23 +29,23 @@
#pragma once
-#include "mongo/db/server_options.h"
-#include "mongo/s/sharding_mongod_test_fixture.h"
+#include "mongo/db/s/sharding_mongod_test_fixture.h"
namespace mongo {
-class RemoteCommandTargeterMock;
-
/**
* Test fixture for shard components, as opposed to config or mongos components. Provides a mock
* network and ephemeral storage engine via ShardingMongodTestFixture. Additionally sets up mock
* dist lock catalog and manager with a real catalog client.
*/
class ShardServerTestFixture : public ShardingMongodTestFixture {
-public:
+protected:
ShardServerTestFixture();
~ShardServerTestFixture();
+ void setUp() override;
+ void tearDown() override;
+
/**
* Returns the mock targeter for the config server. Useful to use like so,
*
@@ -57,11 +57,6 @@ public:
*/
std::shared_ptr<RemoteCommandTargeterMock> configTargeterMock();
-protected:
- void setUp() override;
-
- void tearDown() override;
-
/**
* Creates a DistLockCatalogMock.
*/
@@ -79,6 +74,8 @@ protected:
std::unique_ptr<ShardingCatalogClient> makeShardingCatalogClient(
std::unique_ptr<DistLockManager> distLockManager) override;
+ static const HostAndPort kConfigHostAndPort;
+
const ShardId _myShardName{"myShardName"};
OID _clusterId;
};
diff --git a/src/mongo/db/s/sharding_initialization_mongod.cpp b/src/mongo/db/s/sharding_initialization_mongod.cpp
index accb9c65406..0ab2d96fab7 100644
--- a/src/mongo/db/s/sharding_initialization_mongod.cpp
+++ b/src/mongo/db/s/sharding_initialization_mongod.cpp
@@ -50,6 +50,7 @@
#include "mongo/db/s/chunk_splitter.h"
#include "mongo/db/s/periodic_balancer_config_refresher.h"
#include "mongo/db/s/read_only_catalog_cache_loader.h"
+#include "mongo/db/s/shard_local.h"
#include "mongo/db/s/shard_server_catalog_cache_loader.h"
#include "mongo/db/s/sharding_config_optime_gossip.h"
#include "mongo/db/s/transaction_coordinator_service.h"
@@ -59,7 +60,6 @@
#include "mongo/rpc/metadata/egress_metadata_hook_list.h"
#include "mongo/s/catalog_cache.h"
#include "mongo/s/client/shard_factory.h"
-#include "mongo/s/client/shard_local.h"
#include "mongo/s/client/shard_remote.h"
#include "mongo/s/client/sharding_connection_hook.h"
#include "mongo/s/config_server_catalog_cache_loader.h"
diff --git a/src/mongo/db/s/sharding_initialization_mongod_test.cpp b/src/mongo/db/s/sharding_initialization_mongod_test.cpp
index 6af6ff00399..a724a245f84 100644
--- a/src/mongo/db/s/sharding_initialization_mongod_test.cpp
+++ b/src/mongo/db/s/sharding_initialization_mongod_test.cpp
@@ -40,6 +40,7 @@
#include "mongo/db/s/op_observer_sharding_impl.h"
#include "mongo/db/s/shard_server_catalog_cache_loader.h"
#include "mongo/db/s/shard_server_op_observer.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/sharding_initialization_mongod.h"
#include "mongo/db/s/type_shard_identity.h"
#include "mongo/db/server_options.h"
@@ -47,7 +48,6 @@
#include "mongo/s/catalog/sharding_catalog_client_impl.h"
#include "mongo/s/client/shard_registry.h"
#include "mongo/s/config_server_catalog_cache_loader.h"
-#include "mongo/s/shard_server_test_fixture.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/sharding_initialization_op_observer_test.cpp b/src/mongo/db/s/sharding_initialization_op_observer_test.cpp
index 6cd2ccd2605..563a6325454 100644
--- a/src/mongo/db/s/sharding_initialization_op_observer_test.cpp
+++ b/src/mongo/db/s/sharding_initialization_op_observer_test.cpp
@@ -40,12 +40,12 @@
#include "mongo/db/s/shard_server_catalog_cache_loader.h"
#include "mongo/db/s/shard_server_op_observer.h"
#include "mongo/db/s/sharding_initialization_mongod.h"
+#include "mongo/db/s/sharding_mongod_test_fixture.h"
#include "mongo/db/s/type_shard_identity.h"
#include "mongo/db/server_options.h"
#include "mongo/s/catalog/dist_lock_manager_mock.h"
#include "mongo/s/client/shard_registry.h"
#include "mongo/s/config_server_catalog_cache_loader.h"
-#include "mongo/s/sharding_mongod_test_fixture.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/sharding_logging_test.cpp b/src/mongo/db/s/sharding_logging_test.cpp
index a014091b49b..a5622798baa 100644
--- a/src/mongo/db/s/sharding_logging_test.cpp
+++ b/src/mongo/db/s/sharding_logging_test.cpp
@@ -33,14 +33,12 @@
#include <vector>
-#include "mongo/client/remote_command_targeter_mock.h"
#include "mongo/db/commands.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/sharding_logging.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor.h"
#include "mongo/s/catalog/sharding_catalog_client.h"
#include "mongo/s/client/shard_registry.h"
-#include "mongo/s/sharding_router_test_fixture.h"
#include "mongo/stdx/chrono.h"
#include "mongo/stdx/future.h"
#include "mongo/util/str.h"
@@ -49,34 +47,24 @@
namespace mongo {
namespace {
-using executor::NetworkInterfaceMock;
-using executor::TaskExecutor;
-using stdx::async;
using unittest::assertGet;
-const HostAndPort configHost{"TestHost1"};
-
-class InfoLoggingTest : public ShardingTestFixture {
+class InfoLoggingTest : public ShardServerTestFixture {
public:
enum CollType { ActionLog, ChangeLog };
InfoLoggingTest(CollType configCollType, int cappedSize)
: _configCollType(configCollType), _cappedSize(cappedSize) {}
- void setUp() override {
- ShardingTestFixture::setUp();
-
- configTargeter()->setFindHostReturnValue(configHost);
- }
-
protected:
void noRetryAfterSuccessfulCreate() {
auto future = launchAsync([this] {
log("moved a chunk", "foo.bar", BSON("min" << 3 << "max" << 4)).transitional_ignore();
});
- expectConfigCollectionCreate(configHost, getConfigCollName(), _cappedSize, BSON("ok" << 1));
- expectConfigCollectionInsert(configHost,
+ expectConfigCollectionCreate(
+ kConfigHostAndPort, getConfigCollName(), _cappedSize, BSON("ok" << 1));
+ expectConfigCollectionInsert(kConfigHostAndPort,
getConfigCollName(),
network()->now(),
"moved a chunk",
@@ -92,7 +80,7 @@ protected:
.transitional_ignore();
});
- expectConfigCollectionInsert(configHost,
+ expectConfigCollectionInsert(kConfigHostAndPort,
getConfigCollName(),
network()->now(),
"moved a second chunk",
@@ -112,8 +100,8 @@ protected:
CommandHelpers::appendCommandStatusNoThrow(
createResponseBuilder, Status(ErrorCodes::NamespaceExists, "coll already exists"));
expectConfigCollectionCreate(
- configHost, getConfigCollName(), _cappedSize, createResponseBuilder.obj());
- expectConfigCollectionInsert(configHost,
+ kConfigHostAndPort, getConfigCollName(), _cappedSize, createResponseBuilder.obj());
+ expectConfigCollectionInsert(kConfigHostAndPort,
getConfigCollName(),
network()->now(),
"moved a chunk",
@@ -129,7 +117,7 @@ protected:
.transitional_ignore();
});
- expectConfigCollectionInsert(configHost,
+ expectConfigCollectionInsert(kConfigHostAndPort,
getConfigCollName(),
network()->now(),
"moved a second chunk",
@@ -149,7 +137,7 @@ protected:
CommandHelpers::appendCommandStatusNoThrow(
createResponseBuilder, Status(ErrorCodes::Interrupted, "operation interrupted"));
expectConfigCollectionCreate(
- configHost, getConfigCollName(), _cappedSize, createResponseBuilder.obj());
+ kConfigHostAndPort, getConfigCollName(), _cappedSize, createResponseBuilder.obj());
// Now wait for the logAction call to return
future.default_timed_get();
@@ -160,8 +148,9 @@ protected:
.transitional_ignore();
});
- expectConfigCollectionCreate(configHost, getConfigCollName(), _cappedSize, BSON("ok" << 1));
- expectConfigCollectionInsert(configHost,
+ expectConfigCollectionCreate(
+ kConfigHostAndPort, getConfigCollName(), _cappedSize, BSON("ok" << 1));
+ expectConfigCollectionInsert(kConfigHostAndPort,
getConfigCollName(),
network()->now(),
"moved a second chunk",
diff --git a/src/mongo/s/sharding_mongod_test_fixture.cpp b/src/mongo/db/s/sharding_mongod_test_fixture.cpp
index 4ba28ab2f8c..932b2ff5424 100644
--- a/src/mongo/s/sharding_mongod_test_fixture.cpp
+++ b/src/mongo/db/s/sharding_mongod_test_fixture.cpp
@@ -29,16 +29,13 @@
#include "mongo/platform/basic.h"
-#include "mongo/s/sharding_mongod_test_fixture.h"
+#include "mongo/db/s/sharding_mongod_test_fixture.h"
#include <algorithm>
#include <memory>
#include <vector>
#include "mongo/base/checked_cast.h"
-#include "mongo/base/status_with.h"
-#include "mongo/client/remote_command_targeter_factory_mock.h"
-#include "mongo/client/remote_command_targeter_mock.h"
#include "mongo/client/replica_set_monitor.h"
#include "mongo/db/catalog_raii.h"
#include "mongo/db/client.h"
@@ -58,8 +55,8 @@
#include "mongo/db/s/collection_sharding_state_factory_shard.h"
#include "mongo/db/s/config_server_op_observer.h"
#include "mongo/db/s/op_observer_sharding_impl.h"
+#include "mongo/db/s/shard_local.h"
#include "mongo/db/s/shard_server_op_observer.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor_pool.h"
#include "mongo/executor/thread_pool_task_executor_test_fixture.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
@@ -67,13 +64,11 @@
#include "mongo/s/catalog/dist_lock_catalog.h"
#include "mongo/s/catalog/dist_lock_manager.h"
#include "mongo/s/catalog/sharding_catalog_client.h"
-#include "mongo/s/catalog/type_changelog.h"
#include "mongo/s/catalog/type_collection.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/catalog_cache.h"
#include "mongo/s/catalog_cache_loader.h"
#include "mongo/s/client/shard_factory.h"
-#include "mongo/s/client/shard_local.h"
#include "mongo/s/client/shard_registry.h"
#include "mongo/s/client/shard_remote.h"
#include "mongo/s/grid.h"
@@ -93,17 +88,10 @@ using repl::ReplicationCoordinatorMock;
using repl::ReplSettings;
using unittest::assertGet;
-ShardingMongodTestFixture::ShardingMongodTestFixture() = default;
-
-ShardingMongodTestFixture::~ShardingMongodTestFixture() = default;
-
-void ShardingMongodTestFixture::setUp() {
- ServiceContextMongoDTest::setUp();
-
+ShardingMongodTestFixture::ShardingMongodTestFixture() {
const auto service = getServiceContext();
- _opCtx = makeOperationContext();
- // Set up this node as part of a replica set.
+ // Set up this node as shard node, which is part of a replica set
repl::ReplSettings replSettings;
replSettings.setOplogSizeBytes(512'000);
@@ -115,6 +103,7 @@ void ShardingMongodTestFixture::setUp() {
for (size_t i = 0; i < _servers.size(); ++i) {
serversBob.append(BSON("host" << _servers[i].toString() << "_id" << static_cast<int>(i)));
}
+
auto replSetConfig =
repl::ReplSetConfig::parse(BSON("_id" << _setName << "protocolVersion" << 1 << "version"
<< 3 << "members" << serversBob.arr()));
@@ -133,7 +122,8 @@ void ShardingMongodTestFixture::setUp() {
std::make_unique<repl::ReplicationConsistencyMarkersMock>(),
std::make_unique<repl::ReplicationRecoveryMock>()));
- ASSERT_OK(repl::ReplicationProcess::get(_opCtx.get())->initializeRollbackID(_opCtx.get()));
+ ASSERT_OK(repl::ReplicationProcess::get(operationContext())
+ ->initializeRollbackID(operationContext()));
repl::StorageInterface::set(service, std::move(storagePtr));
@@ -143,7 +133,7 @@ void ShardingMongodTestFixture::setUp() {
opObserver->addObserver(std::make_unique<ShardServerOpObserver>());
repl::setOplogCollectionName(service);
- repl::createOplog(_opCtx.get());
+ repl::createOplog(operationContext());
// Set the highest FCV because otherwise it defaults to the lower FCV. This way we default to
// testing this release's code, not backwards compatibility code.
@@ -151,6 +141,8 @@ void ShardingMongodTestFixture::setUp() {
ServerGlobalParams::FeatureCompatibility::Version::kFullyUpgradedTo46);
}
+ShardingMongodTestFixture::~ShardingMongodTestFixture() = default;
+
std::unique_ptr<ReplicationCoordinatorMock> ShardingMongodTestFixture::makeReplicationCoordinator(
ReplSettings replSettings) {
auto coordinator =
@@ -159,7 +151,7 @@ std::unique_ptr<ReplicationCoordinatorMock> ShardingMongodTestFixture::makeRepli
return coordinator;
}
-std::unique_ptr<executor::TaskExecutorPool> ShardingMongodTestFixture::makeTaskExecutorPool() {
+std::unique_ptr<executor::TaskExecutorPool> ShardingMongodTestFixture::_makeTaskExecutorPool() {
// Set up a NetworkInterfaceMock. Note, unlike NetworkInterfaceASIO, which has its own pool of
// threads, tasks in the NetworkInterfaceMock must be carried out synchronously by the (single)
// thread the unit test is running on.
@@ -250,7 +242,7 @@ Status ShardingMongodTestFixture::initializeGlobalShardingStateForMongodForTest(
// Create and initialize each sharding component individually before moving them to the Grid
// in order to control the order of initialization, since some components depend on others.
- auto executorPoolPtr = makeTaskExecutorPool();
+ auto executorPoolPtr = _makeTaskExecutorPool();
if (executorPoolPtr) {
executorPoolPtr->startup();
}
@@ -298,7 +290,6 @@ void ShardingMongodTestFixture::tearDown() {
Grid::get(operationContext())->clearForUnitTests();
- _opCtx.reset();
ServiceContextMongoDTest::tearDown();
}
diff --git a/src/mongo/s/sharding_mongod_test_fixture.h b/src/mongo/db/s/sharding_mongod_test_fixture.h
index 2ef48dde70c..6495ee3377a 100644
--- a/src/mongo/s/sharding_mongod_test_fixture.h
+++ b/src/mongo/db/s/sharding_mongod_test_fixture.h
@@ -36,7 +36,6 @@
namespace mongo {
class CatalogCacheLoader;
-class ConnectionString;
namespace repl {
class ReplSettings;
@@ -53,10 +52,12 @@ class ReplSettings;
*/
class ShardingMongodTestFixture : public ServiceContextMongoDTest,
public ShardingTestFixtureCommon {
-public:
+protected:
ShardingMongodTestFixture();
~ShardingMongodTestFixture();
+ void tearDown() override;
+
/**
* Initializes sharding components according to the cluster role in
* serverGlobalParams.clusterRole and puts the components on the Grid, mimicking the
@@ -86,25 +87,6 @@ public:
repl::ReplicationCoordinatorMock* replicationCoordinator() const;
- /**
- * Returns the stored raw pointer to the OperationContext.
- */
- OperationContext* operationContext() const {
- return _opCtx.get();
- }
-
-protected:
- /**
- * Sets up this fixture with a storage engine, OpObserver, and as a member of a replica set.
- */
- void setUp() override;
-
- /**
- * Resets the storage engine and operation context, and shuts down and resets any sharding
- * components that have been initialized but not yet shut down and reset.
- */
- void tearDown() override;
-
// Methods for creating and returning sharding components. Some of these methods have been
// implemented to return the real implementation of the component as the default, while others
// return a mock or nullptr. Subclasses can override any of these methods to create and
@@ -121,13 +103,6 @@ protected:
repl::ReplSettings replSettings);
/**
- * Base class returns a TaskExecutorPool with a fixed TaskExecutor and a set of arbitrary
- * executors containing one TaskExecutor, each backed by a NetworkInterfaceMock/ThreadPoolMock
- * subsytem.
- */
- virtual std::unique_ptr<executor::TaskExecutorPool> makeTaskExecutorPool();
-
- /**
* Base class returns a real implementation of ShardRegistry.
*/
virtual std::unique_ptr<ShardRegistry> makeShardRegistry(ConnectionString configConnStr);
@@ -157,12 +132,16 @@ protected:
virtual std::unique_ptr<BalancerConfiguration> makeBalancerConfiguration();
private:
- const HostAndPort _host{"node1:12345"};
+ /**
+ * Base class returns a TaskExecutorPool with a fixed TaskExecutor and a set of arbitrary
+ * executors containing one TaskExecutor, each backed by a NetworkInterfaceMock/ThreadPoolMock
+ * subsytem.
+ */
+ std::unique_ptr<executor::TaskExecutorPool> _makeTaskExecutorPool();
+
const std::string _setName = "mySet";
const std::vector<HostAndPort> _servers{
- _host, HostAndPort("node2:12345"), HostAndPort("node3:12345")};
-
- ServiceContext::UniqueOperationContext _opCtx;
+ HostAndPort("node1:12345"), HostAndPort("node2:12345"), HostAndPort("node3:12345")};
repl::ReplicationCoordinatorMock* _replCoord = nullptr;
diff --git a/src/mongo/db/s/split_chunk_test.cpp b/src/mongo/db/s/split_chunk_test.cpp
index cfdc61f2b61..532ff9dab55 100644
--- a/src/mongo/db/s/split_chunk_test.cpp
+++ b/src/mongo/db/s/split_chunk_test.cpp
@@ -33,12 +33,11 @@
#include <boost/optional.hpp>
-#include "mongo/client/remote_command_targeter_mock.h"
#include "mongo/db/json.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/sharding_initialization_mongod.h"
#include "mongo/db/s/split_chunk.h"
#include "mongo/db/server_options.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/remote_command_request.h"
#include "mongo/executor/remote_command_response.h"
#include "mongo/executor/task_executor.h"
@@ -51,10 +50,8 @@
#include "mongo/s/catalog_cache_loader.h"
#include "mongo/s/client/shard_registry.h"
#include "mongo/s/grid.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/s/write_ops/batched_command_request.h"
#include "mongo/s/write_ops/batched_command_response.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/split_vector_test.cpp b/src/mongo/db/s/split_vector_test.cpp
index 7350527d8b3..807bb35d4aa 100644
--- a/src/mongo/db/s/split_vector_test.cpp
+++ b/src/mongo/db/s/split_vector_test.cpp
@@ -34,9 +34,8 @@
#include "mongo/db/db_raii.h"
#include "mongo/db/dbdirectclient.h"
#include "mongo/db/s/collection_sharding_runtime.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/split_vector.h"
-#include "mongo/s/shard_server_test_fixture.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
diff --git a/src/mongo/db/s/transaction_coordinator_futures_util_test.cpp b/src/mongo/db/s/transaction_coordinator_futures_util_test.cpp
index fb145b325aa..e46ab94599f 100644
--- a/src/mongo/db/s/transaction_coordinator_futures_util_test.cpp
+++ b/src/mongo/db/s/transaction_coordinator_futures_util_test.cpp
@@ -30,12 +30,11 @@
#include "mongo/platform/basic.h"
#include "mongo/client/remote_command_targeter_mock.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/transaction_coordinator_futures_util.h"
#include "mongo/s/catalog/sharding_catalog_client_mock.h"
#include "mongo/s/catalog/type_shard.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/unittest/barrier.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace txn {
diff --git a/src/mongo/db/s/transaction_coordinator_test_fixture.h b/src/mongo/db/s/transaction_coordinator_test_fixture.h
index 03763d3e2a1..37232f0d340 100644
--- a/src/mongo/db/s/transaction_coordinator_test_fixture.h
+++ b/src/mongo/db/s/transaction_coordinator_test_fixture.h
@@ -33,9 +33,9 @@
#include <vector>
#include "mongo/base/status.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/s/transaction_coordinator.h"
#include "mongo/s/shard_id.h"
-#include "mongo/s/shard_server_test_fixture.h"
namespace mongo {
diff --git a/src/mongo/db/s/vector_clock_shard_server_test.cpp b/src/mongo/db/s/vector_clock_shard_server_test.cpp
index a2c7577769c..0f6af735ac6 100644
--- a/src/mongo/db/s/vector_clock_shard_server_test.cpp
+++ b/src/mongo/db/s/vector_clock_shard_server_test.cpp
@@ -32,10 +32,9 @@
#include "mongo/db/keys_collection_client_direct.h"
#include "mongo/db/keys_collection_manager.h"
#include "mongo/db/logical_time_validator.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/vector_clock_mutable.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/unittest/death_test.h"
-#include "mongo/unittest/unittest.h"
#include "mongo/util/clock_source_mock.h"
namespace mongo {
diff --git a/src/mongo/db/service_context_d_test_fixture.cpp b/src/mongo/db/service_context_d_test_fixture.cpp
index 8c0b6b8abf5..a0b8caab275 100644
--- a/src/mongo/db/service_context_d_test_fixture.cpp
+++ b/src/mongo/db/service_context_d_test_fixture.cpp
@@ -90,6 +90,9 @@ ServiceContextMongoDTest::ServiceContextMongoDTest(std::string engine, RepairAct
IndexAccessMethodFactory::set(serviceContext, std::make_unique<IndexAccessMethodFactoryImpl>());
Collection::Factory::set(serviceContext, std::make_unique<CollectionImpl::FactoryImpl>());
IndexBuildsCoordinator::set(serviceContext, std::make_unique<IndexBuildsCoordinatorMongod>());
+ CollectionShardingStateFactory::set(
+ getServiceContext(),
+ std::make_unique<CollectionShardingStateFactoryShard>(getServiceContext()));
}
ServiceContextMongoDTest::~ServiceContextMongoDTest() {
@@ -107,14 +110,6 @@ ServiceContextMongoDTest::~ServiceContextMongoDTest() {
std::swap(storageGlobalParams.repair, _stashedStorageParams.repair);
}
-void ServiceContextMongoDTest::setUp() {
- ServiceContextTest::setUp();
-
- CollectionShardingStateFactory::set(
- getServiceContext(),
- std::make_unique<CollectionShardingStateFactoryShard>(getServiceContext()));
-}
-
void ServiceContextMongoDTest::tearDown() {
{
// Some tests set the current OperationContext but do not release it until destruction.
diff --git a/src/mongo/db/service_context_d_test_fixture.h b/src/mongo/db/service_context_d_test_fixture.h
index 0b25498a1a9..00f5f37883f 100644
--- a/src/mongo/db/service_context_d_test_fixture.h
+++ b/src/mongo/db/service_context_d_test_fixture.h
@@ -29,17 +29,15 @@
#pragma once
-#include "mongo/db/operation_context.h"
#include "mongo/db/service_context_test_fixture.h"
#include "mongo/unittest/temp_dir.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
/**
* Test fixture class for tests that use the "ephemeralForTest" storage engine.
*/
-class ServiceContextMongoDTest : public ServiceContextTest {
+class ServiceContextMongoDTest : public virtual ServiceContextTest {
protected:
enum class RepairAction { kNoRepair, kRepair };
@@ -52,8 +50,6 @@ protected:
ServiceContextMongoDTest(std::string engine, RepairAction repair);
virtual ~ServiceContextMongoDTest();
- void setUp() override;
-
void tearDown() override;
private:
@@ -62,6 +58,7 @@ private:
bool engineSetByUser;
bool repair;
} _stashedStorageParams;
+
unittest::TempDir _tempDir;
};
diff --git a/src/mongo/db/service_context_test_fixture.h b/src/mongo/db/service_context_test_fixture.h
index e7508898c0f..a1097c6a943 100644
--- a/src/mongo/db/service_context_test_fixture.h
+++ b/src/mongo/db/service_context_test_fixture.h
@@ -35,7 +35,6 @@
namespace mongo {
-
class ScopedGlobalServiceContextForTest {
public:
/**
diff --git a/src/mongo/db/vector_clock_mongod_test.cpp b/src/mongo/db/vector_clock_mongod_test.cpp
index a54b966b8f6..758db55118e 100644
--- a/src/mongo/db/vector_clock_mongod_test.cpp
+++ b/src/mongo/db/vector_clock_mongod_test.cpp
@@ -32,10 +32,9 @@
#include "mongo/db/keys_collection_client_direct.h"
#include "mongo/db/keys_collection_manager.h"
#include "mongo/db/logical_time_validator.h"
+#include "mongo/db/s/sharding_mongod_test_fixture.h"
#include "mongo/db/vector_clock_mutable.h"
-#include "mongo/s/sharding_mongod_test_fixture.h"
#include "mongo/unittest/death_test.h"
-#include "mongo/unittest/unittest.h"
#include "mongo/util/clock_source_mock.h"
namespace mongo {
diff --git a/src/mongo/s/SConscript b/src/mongo/s/SConscript
index 70604de3b82..7745088ead9 100644
--- a/src/mongo/s/SConscript
+++ b/src/mongo/s/SConscript
@@ -192,21 +192,22 @@ env.Library(
],
LIBDEPS=[
'$BUILD_DIR/mongo/client/remote_command_targeter_mock',
+ '$BUILD_DIR/mongo/db/service_context_test_fixture',
'$BUILD_DIR/mongo/executor/network_interface_mock',
'$BUILD_DIR/mongo/executor/network_test_env',
'$BUILD_DIR/mongo/executor/thread_pool_task_executor_test_fixture',
- '$BUILD_DIR/mongo/unittest/unittest',
+ 'write_ops/batch_write_types',
],
)
env.Library(
target='sharding_router_test_fixture',
source=[
+ 'catalog_cache_test_fixture.cpp',
'sharding_router_test_fixture.cpp',
],
LIBDEPS=[
'$BUILD_DIR/mongo/db/query/collation/collator_factory_mock',
- '$BUILD_DIR/mongo/db/service_context_test_fixture',
'$BUILD_DIR/mongo/executor/task_executor_pool',
'$BUILD_DIR/mongo/s/catalog/dist_lock_manager_mock',
'$BUILD_DIR/mongo/s/catalog/sharding_catalog_client_impl',
@@ -221,32 +222,6 @@ env.Library(
)
env.Library(
- target='sharding_mongod_test_fixture',
- source=[
- 'sharding_mongod_test_fixture.cpp',
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/db/repl/drop_pending_collection_reaper',
- '$BUILD_DIR/mongo/db/repl/replmocks',
- '$BUILD_DIR/mongo/db/s/sharding_runtime_d',
- '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
- 'sharding_test_fixture_common',
- ],
-)
-
-env.Library(
- target='shard_server_test_fixture',
- source=[
- 'shard_server_test_fixture.cpp',
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/s/catalog/dist_lock_catalog_mock',
- '$BUILD_DIR/mongo/s/catalog/dist_lock_manager_mock',
- 'sharding_mongod_test_fixture',
- ],
-)
-
-env.Library(
target='sharding_task_executor',
source=[
'sharding_task_executor.cpp',
@@ -320,19 +295,6 @@ env.Library(
)
env.Library(
- target='catalog_cache_test_fixture',
- source=[
- 'catalog_cache_test_fixture.cpp',
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/db/auth/authmocks',
- '$BUILD_DIR/mongo/db/query/query_test_service_context',
- 'coreshard',
- 'sharding_router_test_fixture',
- ]
-)
-
-env.Library(
target='cluster_last_error_info',
source=[
'cluster_last_error_info.cpp'
@@ -458,6 +420,8 @@ env.CppUnitTest(
'chunk_test.cpp',
'chunk_version_test.cpp',
'chunk_writes_tracker_test.cpp',
+ 'client/shard_registry_data_test.cpp',
+ 'client/shard_remote_test.cpp',
'cluster_identity_loader_test.cpp',
'cluster_last_error_info_test.cpp',
'hedge_options_util_test.cpp',
@@ -491,10 +455,9 @@ env.CppUnitTest(
'$BUILD_DIR/mongo/db/auth/authmocks',
'$BUILD_DIR/mongo/db/ops/write_ops_parsers_test_helpers',
'$BUILD_DIR/mongo/db/pipeline/process_interface/mongos_process_interface_factory',
- '$BUILD_DIR/mongo/db/service_context_test_fixture',
+ '$BUILD_DIR/mongo/db/query/query_test_service_context',
'$BUILD_DIR/mongo/dbtests/mocklib',
'$BUILD_DIR/mongo/util/net/network',
- 'catalog_cache_test_fixture',
'catalog/sharding_catalog_client_mock',
'chunk_writes_tracker',
'cluster_last_error_info',
diff --git a/src/mongo/s/catalog/SConscript b/src/mongo/s/catalog/SConscript
index 9c0cbcf2efa..9cbe083901a 100644
--- a/src/mongo/s/catalog/SConscript
+++ b/src/mongo/s/catalog/SConscript
@@ -133,10 +133,10 @@ env.CppUnitTest(
],
LIBDEPS=[
'$BUILD_DIR/mongo/db/auth/authmocks',
+ '$BUILD_DIR/mongo/db/s/shard_server_test_fixture',
'$BUILD_DIR/mongo/db/storage/duplicate_key_error_info',
'$BUILD_DIR/mongo/s/catalog/dist_lock_catalog_mock',
'$BUILD_DIR/mongo/s/catalog/sharding_catalog_client_mock',
- '$BUILD_DIR/mongo/s/shard_server_test_fixture',
'$BUILD_DIR/mongo/s/sharding_router_test_fixture',
'dist_lock_catalog_impl',
'replset_dist_lock_manager',
diff --git a/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp b/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp
index 73e53f595e9..56f25d713c8 100644
--- a/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp
+++ b/src/mongo/s/catalog/dist_lock_catalog_impl_test.cpp
@@ -37,8 +37,8 @@
#include "mongo/db/commands.h"
#include "mongo/db/query/find_and_modify_request.h"
#include "mongo/db/repl/read_concern_args.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/db/storage/duplicate_key_error_info.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/network_test_env.h"
#include "mongo/s/catalog/dist_lock_catalog_impl.h"
#include "mongo/s/catalog/dist_lock_manager_mock.h"
@@ -48,7 +48,6 @@
#include "mongo/s/client/shard_factory.h"
#include "mongo/s/client/shard_registry.h"
#include "mongo/s/grid.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/s/write_ops/batched_command_request.h"
#include "mongo/util/time_support.h"
diff --git a/src/mongo/s/catalog/replset_dist_lock_manager_test.cpp b/src/mongo/s/catalog/replset_dist_lock_manager_test.cpp
index 6bef0ad7987..c71bdd93dd0 100644
--- a/src/mongo/s/catalog/replset_dist_lock_manager_test.cpp
+++ b/src/mongo/s/catalog/replset_dist_lock_manager_test.cpp
@@ -36,6 +36,7 @@
#include <vector>
#include "mongo/bson/json.h"
+#include "mongo/db/s/shard_server_test_fixture.h"
#include "mongo/platform/mutex.h"
#include "mongo/s/balancer_configuration.h"
#include "mongo/s/catalog/dist_lock_catalog_mock.h"
@@ -44,7 +45,6 @@
#include "mongo/s/catalog/type_lockpings.h"
#include "mongo/s/catalog/type_locks.h"
#include "mongo/s/grid.h"
-#include "mongo/s/shard_server_test_fixture.h"
#include "mongo/stdx/condition_variable.h"
#include "mongo/unittest/unittest.h"
#include "mongo/util/system_tick_source.h"
diff --git a/src/mongo/s/catalog/sharding_catalog_test.cpp b/src/mongo/s/catalog/sharding_catalog_test.cpp
index 3acf38fae8b..b30c044739d 100644
--- a/src/mongo/s/catalog/sharding_catalog_test.cpp
+++ b/src/mongo/s/catalog/sharding_catalog_test.cpp
@@ -39,7 +39,6 @@
#include "mongo/db/ops/write_ops.h"
#include "mongo/db/query/query_request.h"
#include "mongo/db/repl/read_concern_args.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor.h"
#include "mongo/rpc/get_status_from_command_result.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
diff --git a/src/mongo/s/catalog/sharding_catalog_write_retry_test.cpp b/src/mongo/s/catalog/sharding_catalog_write_retry_test.cpp
index 7381fe5980f..5fe063a6ce4 100644
--- a/src/mongo/s/catalog/sharding_catalog_write_retry_test.cpp
+++ b/src/mongo/s/catalog/sharding_catalog_write_retry_test.cpp
@@ -42,12 +42,10 @@
#include "mongo/db/ops/write_ops.h"
#include "mongo/db/storage/duplicate_key_error_info.h"
#include "mongo/db/write_concern.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
#include "mongo/s/catalog/dist_lock_manager_mock.h"
#include "mongo/s/catalog/sharding_catalog_client_impl.h"
-#include "mongo/s/catalog/type_changelog.h"
#include "mongo/s/catalog/type_chunk.h"
#include "mongo/s/catalog/type_collection.h"
#include "mongo/s/catalog/type_database.h"
diff --git a/src/mongo/s/catalog/type_shard_collection_test.cpp b/src/mongo/s/catalog/type_shard_collection_test.cpp
index bde4643c186..7dbae054904 100644
--- a/src/mongo/s/catalog/type_shard_collection_test.cpp
+++ b/src/mongo/s/catalog/type_shard_collection_test.cpp
@@ -29,7 +29,6 @@
#include "mongo/platform/basic.h"
-#include "mongo/db/s/shard_metadata_util.h"
#include "mongo/s/catalog/type_shard_collection.h"
#include "mongo/bson/oid.h"
diff --git a/src/mongo/s/chunk_manager_index_bounds_test.cpp b/src/mongo/s/chunk_manager_index_bounds_test.cpp
index 7207db79f3d..8b8c490fd92 100644
--- a/src/mongo/s/chunk_manager_index_bounds_test.cpp
+++ b/src/mongo/s/chunk_manager_index_bounds_test.cpp
@@ -41,7 +41,6 @@
#include "mongo/s/chunk_manager.h"
#include "mongo/s/shard_key_pattern.h"
#include "mongo/s/sharding_router_test_fixture.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
@@ -59,7 +58,8 @@ protected:
const NamespaceString nss("test.foo");
auto qr = std::make_unique<QueryRequest>(nss);
qr->setFilter(queryObj);
- boost::intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
+ boost::intrusive_ptr<ExpressionContextForTest> expCtx(
+ new ExpressionContextForTest(operationContext()));
auto statusWithCQ =
CanonicalQuery::canonicalize(operationContext(),
std::move(qr),
diff --git a/src/mongo/s/client/SConscript b/src/mongo/s/client/SConscript
index c488f2793d8..8e338108840 100644
--- a/src/mongo/s/client/SConscript
+++ b/src/mongo/s/client/SConscript
@@ -37,67 +37,3 @@ env.Library(
'$BUILD_DIR/mongo/s/write_ops/batch_write_types',
],
)
-
-env.Library(
- target='rs_local_client',
- source=[
- 'rs_local_client.cpp',
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/client/clientdriver_minimal',
- '$BUILD_DIR/mongo/db/dbdirectclient',
- '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
- ],
-)
-
-env.Library(
- target='shard_local',
- source=[
- 'shard_local.cpp',
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/client/clientdriver_minimal',
- '$BUILD_DIR/mongo/db/repl/repl_coordinator_interface',
- 'rs_local_client',
- 'shard_interface',
- ],
- LIBDEPS_PRIVATE=[
- '$BUILD_DIR/mongo/db/catalog/collection_catalog',
- '$BUILD_DIR/mongo/db/catalog_raii',
- '$BUILD_DIR/mongo/db/concurrency/write_conflict_exception',
- '$BUILD_DIR/mongo/db/db_raii',
- '$BUILD_DIR/mongo/db/index_builds_coordinator_interface',
- '$BUILD_DIR/mongo/db/server_options_core',
- ],
-)
-
-env.CppUnitTest(
- target='mongos_client_test',
- source=[
- 'shard_registry_data_test.cpp',
- 'shard_remote_test.cpp',
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/s/coreshard',
- '$BUILD_DIR/mongo/s/query/async_results_merger',
- '$BUILD_DIR/mongo/s/sharding_router_test_fixture',
- '$BUILD_DIR/mongo/s/vector_clock_mongos',
- 'sharding_client',
- ],
-)
-
-# The shard local test globally sets server options into the config
-# server state, which is incompatible with the other tests.
-env.CppUnitTest(
- target='mongos_client_local_test',
- source=[
- 'shard_local_test.cpp',
- ],
- LIBDEPS=[
- '$BUILD_DIR/mongo/db/auth/authmocks',
- '$BUILD_DIR/mongo/db/repl/replmocks',
- '$BUILD_DIR/mongo/db/service_context_d_test_fixture',
- '$BUILD_DIR/mongo/s/grid',
- 'shard_local',
- ],
-)
diff --git a/src/mongo/s/client/shard_registry_data_test.cpp b/src/mongo/s/client/shard_registry_data_test.cpp
index d7f96320a08..2fcfed25e63 100644
--- a/src/mongo/s/client/shard_registry_data_test.cpp
+++ b/src/mongo/s/client/shard_registry_data_test.cpp
@@ -29,11 +29,6 @@
#include "mongo/platform/basic.h"
-#include <memory>
-#include <utility>
-
-#include "mongo/base/status.h"
-#include "mongo/base/status_with.h"
#include "mongo/bson/json.h"
#include "mongo/client/remote_command_targeter_factory_mock.h"
#include "mongo/client/remote_command_targeter_mock.h"
@@ -83,7 +78,6 @@ private:
std::unique_ptr<ShardFactory> _shardFactory;
};
-
TEST_F(ShardRegistryDataTest, AddConfigShard) {
ConnectionString configCS("rs/dummy1:1234,dummy2:2345,dummy3:3456", ConnectionString::SET);
auto configShard = shardFactory()->createShard(ShardRegistry::kConfigServerShardId, configCS);
@@ -94,5 +88,5 @@ TEST_F(ShardRegistryDataTest, AddConfigShard) {
ASSERT_EQUALS(configCS.toString(), data.getConfigShard()->originalConnString().toString());
}
-} // unnamed namespace
+} // namespace
} // namespace mongo
diff --git a/src/mongo/s/client/shard_remote_test.cpp b/src/mongo/s/client/shard_remote_test.cpp
index 327ed75ed8c..3c4cc4181ca 100644
--- a/src/mongo/s/client/shard_remote_test.cpp
+++ b/src/mongo/s/client/shard_remote_test.cpp
@@ -30,9 +30,6 @@
#include "mongo/platform/basic.h"
#include "mongo/client/connection_string.h"
-#include "mongo/client/remote_command_targeter.h"
-#include "mongo/client/remote_command_targeter_factory_mock.h"
-#include "mongo/client/remote_command_targeter_mock.h"
#include "mongo/db/logical_time.h"
#include "mongo/db/query/cursor_response.h"
#include "mongo/s/catalog/type_shard.h"
@@ -42,7 +39,6 @@
#include "mongo/s/query/establish_cursors.h"
#include "mongo/s/shard_id.h"
#include "mongo/s/sharding_router_test_fixture.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
namespace {
diff --git a/src/mongo/s/cluster_identity_loader_test.cpp b/src/mongo/s/cluster_identity_loader_test.cpp
index 770f437c584..94fe79d4271 100644
--- a/src/mongo/s/cluster_identity_loader_test.cpp
+++ b/src/mongo/s/cluster_identity_loader_test.cpp
@@ -37,7 +37,6 @@
#include "mongo/db/commands.h"
#include "mongo/db/query/query_request.h"
#include "mongo/db/service_context.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor.h"
#include "mongo/rpc/metadata/repl_set_metadata.h"
#include "mongo/rpc/metadata/tracking_metadata.h"
diff --git a/src/mongo/s/cluster_last_error_info_test.cpp b/src/mongo/s/cluster_last_error_info_test.cpp
index 0a3f0ae2cc2..0e210078413 100644
--- a/src/mongo/s/cluster_last_error_info_test.cpp
+++ b/src/mongo/s/cluster_last_error_info_test.cpp
@@ -34,7 +34,6 @@
#include <vector>
#include "mongo/db/operation_context.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/rpc/metadata/sharding_metadata.h"
#include "mongo/s/cluster_last_error_info.h"
#include "mongo/s/sharding_router_test_fixture.h"
diff --git a/src/mongo/s/commands/SConscript b/src/mongo/s/commands/SConscript
index b11a0394cf2..e81c51aa805 100644
--- a/src/mongo/s/commands/SConscript
+++ b/src/mongo/s/commands/SConscript
@@ -154,7 +154,7 @@ env.Library(
],
LIBDEPS=[
'cluster_commands',
- '$BUILD_DIR/mongo/s/catalog_cache_test_fixture',
+ '$BUILD_DIR/mongo/s/sharding_router_test_fixture',
]
)
diff --git a/src/mongo/s/commands/cluster_balancer_collection_status_cmd.cpp b/src/mongo/s/commands/cluster_balancer_collection_status_cmd.cpp
index bf07c401cff..2daf3a8169d 100644
--- a/src/mongo/s/commands/cluster_balancer_collection_status_cmd.cpp
+++ b/src/mongo/s/commands/cluster_balancer_collection_status_cmd.cpp
@@ -40,11 +40,6 @@
#include "mongo/db/commands.h"
#include "mongo/db/operation_context.h"
#include "mongo/db/repl/repl_client_info.h"
-#include "mongo/db/s/database_sharding_state.h"
-#include "mongo/db/s/migration_source_manager.h"
-#include "mongo/db/s/operation_sharding_state.h"
-#include "mongo/db/s/shard_filtering_metadata_refresh.h"
-#include "mongo/db/s/sharding_state.h"
#include "mongo/idl/idl_parser.h"
#include "mongo/s/catalog_cache_loader.h"
#include "mongo/s/grid.h"
diff --git a/src/mongo/s/query/SConscript b/src/mongo/s/query/SConscript
index 99159d1f925..0b924534119 100644
--- a/src/mongo/s/query/SConscript
+++ b/src/mongo/s/query/SConscript
@@ -159,15 +159,15 @@ env.CppUnitTest(
"$BUILD_DIR/mongo/db/auth/saslauth",
"$BUILD_DIR/mongo/db/logical_session_id",
"$BUILD_DIR/mongo/db/query/query_request",
- "$BUILD_DIR/mongo/db/service_context_test_fixture",
+ "$BUILD_DIR/mongo/db/query/query_test_service_context",
"$BUILD_DIR/mongo/executor/thread_pool_task_executor_test_fixture",
"$BUILD_DIR/mongo/s/commands/cluster_command_test_fixture",
"$BUILD_DIR/mongo/s/sharding_router_test_fixture",
"$BUILD_DIR/mongo/util/clock_source_mock",
"async_results_merger",
"cluster_aggregate",
- "cluster_client_cursor",
"cluster_client_cursor_mock",
+ "cluster_client_cursor",
"cluster_cursor_manager",
"router_exec_stage",
"store_possible_cursor",
diff --git a/src/mongo/s/query/results_merger_test_fixture.cpp b/src/mongo/s/query/results_merger_test_fixture.cpp
index 11a1a8379bd..564d7e6bf0e 100644
--- a/src/mongo/s/query/results_merger_test_fixture.cpp
+++ b/src/mongo/s/query/results_merger_test_fixture.cpp
@@ -32,7 +32,6 @@
#include "mongo/client/remote_command_targeter_factory_mock.h"
#include "mongo/client/remote_command_targeter_mock.h"
#include "mongo/db/curop.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/thread_pool_task_executor_test_fixture.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/query/results_merger_test_fixture.h"
diff --git a/src/mongo/s/routing_table_history_test.cpp b/src/mongo/s/routing_table_history_test.cpp
index 8218f505cd0..974437d512c 100644
--- a/src/mongo/s/routing_table_history_test.cpp
+++ b/src/mongo/s/routing_table_history_test.cpp
@@ -29,15 +29,11 @@
#include "mongo/platform/basic.h"
-#include "mongo/s/chunk_manager.h"
-
#include "mongo/bson/bsonobjbuilder.h"
-#include "mongo/db/catalog_raii.h"
#include "mongo/db/namespace_string.h"
-#include "mongo/db/repl/replication_coordinator_mock.h"
-#include "mongo/db/s/sharding_state.h"
#include "mongo/db/service_context.h"
#include "mongo/s/catalog/type_chunk.h"
+#include "mongo/s/chunk_manager.h"
#include "mongo/s/chunk_writes_tracker.h"
#include "mongo/unittest/death_test.h"
#include "mongo/unittest/unittest.h"
diff --git a/src/mongo/s/sessions_collection_sharded_test.cpp b/src/mongo/s/sessions_collection_sharded_test.cpp
index ea2a7c29fdf..0bbfc0ea2c0 100644
--- a/src/mongo/s/sessions_collection_sharded_test.cpp
+++ b/src/mongo/s/sessions_collection_sharded_test.cpp
@@ -35,7 +35,6 @@
#include "mongo/db/commands.h"
#include "mongo/db/logical_clock.h"
#include "mongo/db/logical_session_id.h"
-#include "mongo/db/s/sharding_state.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/catalog_cache_test_fixture.h"
#include "mongo/s/client/shard_registry.h"
diff --git a/src/mongo/s/sharding_router_test_fixture.cpp b/src/mongo/s/sharding_router_test_fixture.cpp
index b3fd6d362ed..a7a0e35b13d 100644
--- a/src/mongo/s/sharding_router_test_fixture.cpp
+++ b/src/mongo/s/sharding_router_test_fixture.cpp
@@ -47,7 +47,6 @@
#include "mongo/db/query/collation/collator_factory_mock.h"
#include "mongo/db/query/query_request.h"
#include "mongo/db/repl/read_concern_args.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor_pool.h"
#include "mongo/executor/thread_pool_task_executor_test_fixture.h"
#include "mongo/rpc/metadata/egress_metadata_hook_list.h"
@@ -56,7 +55,6 @@
#include "mongo/s/balancer_configuration.h"
#include "mongo/s/catalog/dist_lock_manager_mock.h"
#include "mongo/s/catalog/sharding_catalog_client_impl.h"
-#include "mongo/s/catalog/type_changelog.h"
#include "mongo/s/catalog/type_collection.h"
#include "mongo/s/catalog/type_shard.h"
#include "mongo/s/catalog_cache.h"
@@ -95,8 +93,9 @@ std::unique_ptr<ShardingTaskExecutor> makeShardingTestExecutor(
} // namespace
-ShardingTestFixture::ShardingTestFixture() {
- auto const service = getServiceContext();
+ShardingTestFixture::ShardingTestFixture()
+ : _transportSession(transport::MockSession::create(nullptr)) {
+ const auto service = getServiceContext();
// Configure the service context
service->setFastClockSource(std::make_unique<ClockSourceMock>());
@@ -104,8 +103,6 @@ ShardingTestFixture::ShardingTestFixture() {
service->setTickSource(std::make_unique<TickSourceMock<>>());
CollatorFactoryInterface::set(service, std::make_unique<CollatorFactoryMock>());
- _transportSession = transport::MockSession::create(nullptr);
- _opCtx = makeOperationContext();
// Set up executor pool used for most operations.
auto makeMetadataHookList = [&] {
@@ -147,10 +144,6 @@ ShardingTestFixture::ShardingTestFixture() {
auto targeterFactoryPtr = targeterFactory.get();
_targeterFactory = targeterFactoryPtr;
- auto configTargeter(std::make_unique<RemoteCommandTargeterMock>());
- _configTargeter = configTargeter.get();
- _targeterFactory->addTargeterToReturn(configCS, std::move(configTargeter));
-
ShardFactory::BuilderCallable setBuilder = [targeterFactoryPtr](
const ShardId& shardId,
const ConnectionString& connStr) {
@@ -196,6 +189,10 @@ ShardingTestFixture::~ShardingTestFixture() {
CatalogCacheLoader::clearForTests(getServiceContext());
}
+std::shared_ptr<RemoteCommandTargeterMock> ShardingTestFixture::configTargeter() {
+ return RemoteCommandTargeterMock::get(shardRegistry()->getConfigShard()->getTargeter());
+}
+
void ShardingTestFixture::shutdownExecutor() {
if (_fixedExecutor)
_fixedExecutor->shutdown();
@@ -209,24 +206,12 @@ ShardRegistry* ShardingTestFixture::shardRegistry() const {
return Grid::get(operationContext())->shardRegistry();
}
-RemoteCommandTargeterMock* ShardingTestFixture::configTargeter() const {
- invariant(_configTargeter);
-
- return _configTargeter;
-}
-
std::shared_ptr<executor::TaskExecutor> ShardingTestFixture::executor() const {
invariant(_fixedExecutor);
return _fixedExecutor;
}
-OperationContext* ShardingTestFixture::operationContext() const {
- invariant(_opCtx);
-
- return _opCtx.get();
-}
-
void ShardingTestFixture::onCommandForPoolExecutor(NetworkTestEnv::OnCommandFunction func) {
_networkTestEnvForPool->onCommand(func);
}
@@ -315,94 +300,6 @@ void ShardingTestFixture::expectInserts(const NamespaceString& nss,
});
}
-void ShardingTestFixture::expectConfigCollectionCreate(const HostAndPort& configHost,
- StringData collName,
- int cappedSize,
- const BSONObj& response) {
- onCommand([&](const RemoteCommandRequest& request) {
- ASSERT_EQUALS(configHost, request.target);
- ASSERT_EQUALS("config", request.dbname);
-
- BSONObj expectedCreateCmd =
- BSON("create" << collName << "capped" << true << "size" << cappedSize << "writeConcern"
- << BSON("w"
- << "majority"
- << "wtimeout" << 60000)
- << "maxTimeMS" << 30000);
- ASSERT_BSONOBJ_EQ(expectedCreateCmd, request.cmdObj);
-
- return response;
- });
-}
-
-void ShardingTestFixture::expectConfigCollectionInsert(const HostAndPort& configHost,
- StringData collName,
- Date_t timestamp,
- const std::string& what,
- const std::string& ns,
- const BSONObj& detail) {
- onCommand([&](const RemoteCommandRequest& request) {
- ASSERT_EQUALS(configHost, request.target);
- ASSERT_EQUALS(NamespaceString::kConfigDb, request.dbname);
-
- const auto opMsgRequest = OpMsgRequest::fromDBAndBody(request.dbname, request.cmdObj);
- const auto insertOp = InsertOp::parse(opMsgRequest);
-
- ASSERT_EQ(NamespaceString::kConfigDb, insertOp.getNamespace().db());
- ASSERT_EQ(collName, insertOp.getNamespace().coll());
-
- const auto& inserts = insertOp.getDocuments();
- ASSERT_EQUALS(1U, inserts.size());
-
- const ChangeLogType& actualChangeLog = assertGet(ChangeLogType::fromBSON(inserts.front()));
-
- ASSERT_EQUALS(operationContext()->getClient()->clientAddress(true),
- actualChangeLog.getClientAddr());
- ASSERT_BSONOBJ_EQ(detail, actualChangeLog.getDetails());
- ASSERT_EQUALS(ns, actualChangeLog.getNS());
- const std::string expectedServer = str::stream() << network()->getHostName() << ":27017";
- ASSERT_EQUALS(expectedServer, actualChangeLog.getServer());
- ASSERT_EQUALS(timestamp, actualChangeLog.getTime());
- ASSERT_EQUALS(what, actualChangeLog.getWhat());
-
- // Handle changeId specially because there's no way to know what OID was generated
- std::string changeId = actualChangeLog.getChangeId();
- size_t firstDash = changeId.find("-");
- size_t lastDash = changeId.rfind("-");
-
- const std::string serverPiece = changeId.substr(0, firstDash);
- const std::string timePiece = changeId.substr(firstDash + 1, lastDash - firstDash - 1);
- const std::string oidPiece = changeId.substr(lastDash + 1);
-
- const std::string expectedServerPiece = str::stream()
- << Grid::get(operationContext())->getNetwork()->getHostName() << ":27017";
- ASSERT_EQUALS(expectedServerPiece, serverPiece);
- ASSERT_EQUALS(timestamp.toString(), timePiece);
-
- OID generatedOID;
- // Just make sure this doesn't throws and assume the OID is valid
- generatedOID.init(oidPiece);
-
- BatchedCommandResponse response;
- response.setStatus(Status::OK());
-
- return response.toBSON();
- });
-}
-
-void ShardingTestFixture::expectChangeLogCreate(const HostAndPort& configHost,
- const BSONObj& response) {
- expectConfigCollectionCreate(configHost, "changelog", 10 * 1024 * 1024, response);
-}
-
-void ShardingTestFixture::expectChangeLogInsert(const HostAndPort& configHost,
- Date_t timestamp,
- const std::string& what,
- const std::string& ns,
- const BSONObj& detail) {
- expectConfigCollectionInsert(configHost, "changelog", timestamp, what, ns, detail);
-}
-
void ShardingTestFixture::expectUpdateCollection(const HostAndPort& expectedHost,
const CollectionType& coll,
bool expectUpsert) {
diff --git a/src/mongo/s/sharding_router_test_fixture.h b/src/mongo/s/sharding_router_test_fixture.h
index feccfa13134..87956428105 100644
--- a/src/mongo/s/sharding_router_test_fixture.h
+++ b/src/mongo/s/sharding_router_test_fixture.h
@@ -29,7 +29,6 @@
#pragma once
-#include "mongo/db/service_context_test_fixture.h"
#include "mongo/s/sharding_test_fixture_common.h"
namespace mongo {
@@ -39,8 +38,6 @@ class ShardingCatalogClient;
struct ChunkVersion;
class CollectionType;
class DistLockManagerMock;
-class RemoteCommandTargeterFactoryMock;
-class RemoteCommandTargeterMock;
class ShardRegistry;
class ShardType;
@@ -52,19 +49,27 @@ class TransportLayerMock;
* Sets up the mocked out objects for testing the replica-set backed catalog manager and catalog
* client.
*/
-class ShardingTestFixture : public ServiceContextTest, public ShardingTestFixtureCommon {
-public:
+class ShardingTestFixture : public ShardingTestFixtureCommon {
+protected:
ShardingTestFixture();
~ShardingTestFixture();
+ /**
+ * Returns the mock targeter for the config server. Useful to use like so,
+ *
+ * configTargeterMock()->setFindHostReturnValue(HostAndPort);
+ * configTargeterMock()->setFindHostReturnValue({ErrorCodes::InternalError, "can't target"})
+ *
+ * Remote calls always need to resolve a host with RemoteCommandTargeterMock::findHost, so it
+ * must be set.
+ */
+ std::shared_ptr<RemoteCommandTargeterMock> configTargeter();
+
// Syntactic sugar for getting sharding components off the Grid, if they have been initialized.
ShardingCatalogClient* catalogClient() const;
ShardRegistry* shardRegistry() const;
std::shared_ptr<executor::TaskExecutor> executor() const;
- RemoteCommandTargeterMock* configTargeter() const;
-
- OperationContext* operationContext() const;
/**
* Same as the onCommand* variants, but expects the request to be placed on the arbitrary
@@ -108,41 +113,6 @@ public:
void expectFindSendBSONObjVector(const HostAndPort& configHost, std::vector<BSONObj> obj);
/**
- * Waits for an operation which creates a capped config collection with the specified name and
- * capped size.
- */
- void expectConfigCollectionCreate(const HostAndPort& configHost,
- StringData collName,
- int cappedSize,
- const BSONObj& response);
-
- /**
- * Wait for a single insert in one of the change or action log collections with the specified
- * contents and return a successful response.
- */
- void expectConfigCollectionInsert(const HostAndPort& configHost,
- StringData collName,
- Date_t timestamp,
- const std::string& what,
- const std::string& ns,
- const BSONObj& detail);
-
- /**
- * Wait for the config.changelog collection to be created on the specified host.
- */
- void expectChangeLogCreate(const HostAndPort& configHost, const BSONObj& response);
-
- /**
- * Expect a log message with the specified contents to be written to the config.changelog
- * collection.
- */
- void expectChangeLogInsert(const HostAndPort& configHost,
- Date_t timestamp,
- const std::string& what,
- const std::string& ns,
- const BSONObj& detail);
-
- /**
* Expects an update call, which changes the specified collection's namespace contents to match
* those of the input argument.
*/
@@ -176,11 +146,8 @@ private:
std::unique_ptr<ShardingCatalogClient> makeShardingCatalogClient(
std::unique_ptr<DistLockManager> distLockManager) override;
- ServiceContext::UniqueOperationContext _opCtx;
transport::SessionHandle _transportSession;
- RemoteCommandTargeterMock* _configTargeter;
-
// For the Grid's fixed executor.
std::shared_ptr<executor::TaskExecutor> _fixedExecutor;
diff --git a/src/mongo/s/sharding_task_executor_test.cpp b/src/mongo/s/sharding_task_executor_test.cpp
index 488e9a54315..df0fcd5b51c 100644
--- a/src/mongo/s/sharding_task_executor_test.cpp
+++ b/src/mongo/s/sharding_task_executor_test.cpp
@@ -32,7 +32,6 @@
#include "mongo/platform/basic.h"
#include "mongo/client/remote_command_targeter_mock.h"
-#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/task_executor_test_common.h"
#include "mongo/executor/task_executor_test_fixture.h"
#include "mongo/executor/thread_pool_mock.h"
diff --git a/src/mongo/s/sharding_test_fixture_common.cpp b/src/mongo/s/sharding_test_fixture_common.cpp
index 633e203ccc8..ed1fbd2b043 100644
--- a/src/mongo/s/sharding_test_fixture_common.cpp
+++ b/src/mongo/s/sharding_test_fixture_common.cpp
@@ -31,11 +31,19 @@
#include "mongo/s/sharding_test_fixture_common.h"
+#include "mongo/s/catalog/type_changelog.h"
+#include "mongo/s/write_ops/batched_command_request.h"
+#include "mongo/s/write_ops/batched_command_response.h"
+
namespace mongo {
using executor::NetworkTestEnv;
+using executor::RemoteCommandRequest;
+using unittest::assertGet;
-ShardingTestFixtureCommon::ShardingTestFixtureCommon() = default;
+ShardingTestFixtureCommon::ShardingTestFixtureCommon() {
+ _opCtxHolder = makeOperationContext();
+}
ShardingTestFixtureCommon::~ShardingTestFixtureCommon() = default;
@@ -62,6 +70,82 @@ void ShardingTestFixtureCommon::onFindWithMetadataCommand(
_networkTestEnv->onFindWithMetadataCommand(func);
}
+void ShardingTestFixtureCommon::expectConfigCollectionCreate(const HostAndPort& configHost,
+ StringData collName,
+ int cappedSize,
+ const BSONObj& response) {
+ onCommand([&](const RemoteCommandRequest& request) {
+ ASSERT_EQUALS(configHost, request.target);
+ ASSERT_EQUALS("config", request.dbname);
+
+ BSONObj expectedCreateCmd =
+ BSON("create" << collName << "capped" << true << "size" << cappedSize << "writeConcern"
+ << BSON("w"
+ << "majority"
+ << "wtimeout" << 60000)
+ << "maxTimeMS" << 30000);
+ ASSERT_BSONOBJ_EQ(expectedCreateCmd, request.cmdObj);
+
+ return response;
+ });
+}
+
+void ShardingTestFixtureCommon::expectConfigCollectionInsert(const HostAndPort& configHost,
+ StringData collName,
+ Date_t timestamp,
+ const std::string& what,
+ const std::string& ns,
+ const BSONObj& detail) {
+ onCommand([&](const RemoteCommandRequest& request) {
+ ASSERT_EQUALS(configHost, request.target);
+ ASSERT_EQUALS(NamespaceString::kConfigDb, request.dbname);
+
+ const auto opMsg = OpMsgRequest::fromDBAndBody(request.dbname, request.cmdObj);
+ const auto batchRequest(BatchedCommandRequest::parseInsert(opMsg));
+ const auto& insertReq(batchRequest.getInsertRequest());
+
+ ASSERT_EQ(NamespaceString::kConfigDb, insertReq.getNamespace().db());
+ ASSERT_EQ(collName, insertReq.getNamespace().coll());
+
+ const auto& inserts = insertReq.getDocuments();
+ ASSERT_EQUALS(1U, inserts.size());
+
+ const ChangeLogType& actualChangeLog = assertGet(ChangeLogType::fromBSON(inserts.front()));
+
+ ASSERT_EQUALS(operationContext()->getClient()->clientAddress(true),
+ actualChangeLog.getClientAddr());
+ ASSERT_BSONOBJ_EQ(detail, actualChangeLog.getDetails());
+ ASSERT_EQUALS(ns, actualChangeLog.getNS());
+ const std::string expectedServer = str::stream() << network()->getHostName() << ":27017";
+ ASSERT_EQUALS(expectedServer, actualChangeLog.getServer());
+ ASSERT_EQUALS(timestamp, actualChangeLog.getTime());
+ ASSERT_EQUALS(what, actualChangeLog.getWhat());
+
+ // Handle changeId specially because there's no way to know what OID was generated
+ std::string changeId = actualChangeLog.getChangeId();
+ size_t firstDash = changeId.find("-");
+ size_t lastDash = changeId.rfind("-");
+
+ const std::string serverPiece = changeId.substr(0, firstDash);
+ const std::string timePiece = changeId.substr(firstDash + 1, lastDash - firstDash - 1);
+ const std::string oidPiece = changeId.substr(lastDash + 1);
+
+ const std::string expectedServerPiece = str::stream()
+ << Grid::get(operationContext())->getNetwork()->getHostName() << ":27017";
+ ASSERT_EQUALS(expectedServerPiece, serverPiece);
+ ASSERT_EQUALS(timestamp.toString(), timePiece);
+
+ OID generatedOID;
+ // Just make sure this doesn't throws and assume the OID is valid
+ generatedOID.init(oidPiece);
+
+ BatchedCommandResponse response;
+ response.setStatus(Status::OK());
+
+ return response.toBSON();
+ });
+}
+
std::unique_ptr<ShardingCatalogClient> ShardingTestFixtureCommon::makeShardingCatalogClient(
std::unique_ptr<DistLockManager> distLockManager) {
return nullptr;
diff --git a/src/mongo/s/sharding_test_fixture_common.h b/src/mongo/s/sharding_test_fixture_common.h
index 36d4a5221a4..317e7f03b50 100644
--- a/src/mongo/s/sharding_test_fixture_common.h
+++ b/src/mongo/s/sharding_test_fixture_common.h
@@ -29,32 +29,34 @@
#pragma once
-#include "mongo/db/operation_context.h"
-#include "mongo/db/service_context.h"
+#include "mongo/client/remote_command_targeter_factory_mock.h"
+#include "mongo/db/service_context_test_fixture.h"
+#include "mongo/executor/network_interface_mock.h"
#include "mongo/executor/network_test_env.h"
#include "mongo/s/grid.h"
#include "mongo/transport/session.h"
-#include "mongo/unittest/unittest.h"
namespace mongo {
class DistLockCatalog;
class DistLockManager;
-class RemoteCommandTargeterFactoryMock;
namespace executor {
-class NetworkInterfaceMock;
class TaskExecutor;
} // namespace executor
/**
* Contains common functionality and tools, which apply to both mongos and mongod unit-tests.
*/
-class ShardingTestFixtureCommon {
-public:
+class ShardingTestFixtureCommon : public virtual ServiceContextTest {
+protected:
ShardingTestFixtureCommon();
~ShardingTestFixtureCommon();
+ OperationContext* operationContext() const {
+ return _opCtxHolder.get();
+ }
+
template <typename Lambda>
executor::NetworkTestEnv::FutureHandle<typename std::invoke_result<Lambda>::type> launchAsync(
Lambda&& func) const {
@@ -93,6 +95,26 @@ public:
void onFindWithMetadataCommand(
executor::NetworkTestEnv::OnFindCommandWithMetadataFunction func);
+ /**
+ * Waits for an operation which creates a capped config collection with the specified name and
+ * capped size.
+ */
+ void expectConfigCollectionCreate(const HostAndPort& configHost,
+ StringData collName,
+ int cappedSize,
+ const BSONObj& response);
+
+ /**
+ * Wait for a single insert in one of the change or action log collections with the specified
+ * contents and return a successful response.
+ */
+ void expectConfigCollectionInsert(const HostAndPort& configHost,
+ StringData collName,
+ Date_t timestamp,
+ const std::string& what,
+ const std::string& ns,
+ const BSONObj& detail);
+
protected:
/**
* Base class returns nullptr.
@@ -125,6 +147,10 @@ protected:
// Since the DistLockManager is currently a private member of ShardingCatalogClient, we
// store a raw pointer to it here.
DistLockManager* _distLockManager = nullptr;
+
+private:
+ // Keeps the lifetime of the operation context
+ ServiceContext::UniqueOperationContext _opCtxHolder;
};
} // namespace mongo
diff --git a/src/mongo/s/write_ops/batch_write_op.cpp b/src/mongo/s/write_ops/batch_write_op.cpp
index 4b3698b1ec6..b9bd33d9782 100644
--- a/src/mongo/s/write_ops/batch_write_op.cpp
+++ b/src/mongo/s/write_ops/batch_write_op.cpp
@@ -37,7 +37,6 @@
#include "mongo/base/error_codes.h"
#include "mongo/db/operation_context.h"
#include "mongo/db/ops/write_ops_parsers.h"
-#include "mongo/db/s/database_sharding_state.h"
#include "mongo/s/client/num_hosts_targeted_metrics.h"
#include "mongo/s/cluster_commands_helpers.h"
#include "mongo/s/grid.h"