summaryrefslogtreecommitdiff
path: root/src/mongo/s/sharding_test_fixture_common.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2020-06-16 07:53:22 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-06-21 12:32:58 +0000
commit33201c068f9ec37196190be083d61f46dc83d470 (patch)
tree59a30062c8fd5ece6cecc4702c28d2d5417b5b8c /src/mongo/s/sharding_test_fixture_common.cpp
parent85707dafe1d2894505fdcf74336f93ed7a5f6636 (diff)
downloadmongo-33201c068f9ec37196190be083d61f46dc83d470.tar.gz
SERVER-48775 Move all Sharding unit-tests that assume a MongoD to the db/s directory
With this change there are no more references from mongo/s (which is code common between MongoS and MongoD) and mongo/db/s (which is code specific for MongoD only).
Diffstat (limited to 'src/mongo/s/sharding_test_fixture_common.cpp')
-rw-r--r--src/mongo/s/sharding_test_fixture_common.cpp86
1 files changed, 85 insertions, 1 deletions
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;