diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2020-06-16 07:53:22 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-06-21 12:32:58 +0000 |
commit | 33201c068f9ec37196190be083d61f46dc83d470 (patch) | |
tree | 59a30062c8fd5ece6cecc4702c28d2d5417b5b8c /src/mongo/s/sharding_test_fixture_common.cpp | |
parent | 85707dafe1d2894505fdcf74336f93ed7a5f6636 (diff) | |
download | mongo-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.cpp | 86 |
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; |