diff options
author | Spencer T Brody <spencer@mongodb.com> | 2014-11-18 19:10:13 -0500 |
---|---|---|
committer | Spencer T Brody <spencer@mongodb.com> | 2014-11-20 11:38:11 -0500 |
commit | 13577a48b51202aabd2e55ef95404439aaa4a0c3 (patch) | |
tree | fc39effb51783448ce01d782ca1e767e97b583e6 /src/mongo/dbtests/mock | |
parent | 42d802af32f99663bc1c66456b2d57749010bed5 (diff) | |
download | mongo-13577a48b51202aabd2e55ef95404439aaa4a0c3.tar.gz |
SERVER-15496 Update old unit tests to use new ReplicaSetConfig
Diffstat (limited to 'src/mongo/dbtests/mock')
-rw-r--r-- | src/mongo/dbtests/mock/mock_replica_set.cpp | 74 | ||||
-rw-r--r-- | src/mongo/dbtests/mock/mock_replica_set.h | 10 |
2 files changed, 46 insertions, 38 deletions
diff --git a/src/mongo/dbtests/mock/mock_replica_set.cpp b/src/mongo/dbtests/mock/mock_replica_set.cpp index d1bc8c1edbe..851d69e8a7e 100644 --- a/src/mongo/dbtests/mock/mock_replica_set.cpp +++ b/src/mongo/dbtests/mock/mock_replica_set.cpp @@ -39,8 +39,11 @@ using namespace mongo::repl; namespace mongo { MockReplicaSet::MockReplicaSet(const string& setName, size_t nodes): _setName(setName) { - ReplConfigMap replConfig; + BSONObjBuilder configBuilder; + configBuilder.append("_id", setName); + configBuilder.append("version", 1); + BSONArrayBuilder membersBuilder(configBuilder.subarrayStart("members")); for (size_t n = 0; n < nodes; n++) { std::stringstream str; str << "$" << setName << n << ":27017"; @@ -55,11 +58,13 @@ namespace mongo { MockConnRegistry::get()->addServer(mockServer); - ReplSetConfig::MemberCfg config; - config.h = HostAndPort(hostName); - replConfig.insert(std::make_pair(hostName, config)); + membersBuilder.append(BSON("_id" << static_cast<int>(n) << "host" << hostName)); } + membersBuilder.done(); + ReplicaSetConfig replConfig; + fassert(28566, replConfig.initialize(configBuilder.obj())); + fassert(28573, replConfig.validate()); setConfig(replConfig); } @@ -109,11 +114,10 @@ namespace mongo { } void MockReplicaSet::setPrimary(const string& hostAndPort) { - ReplConfigMap::const_iterator iter = _replConfig.find(hostAndPort); - fassert(16578, iter != _replConfig.end()); + const MemberConfig* config = _replConfig.findMemberByHostAndPort(HostAndPort(hostAndPort)); + fassert(16578, config); - const ReplSetConfig::MemberCfg& config = iter->second; - fassert(16579, !config.hidden && config.priority > 0 && !config.arbiterOnly); + fassert(16579, !config->isHidden() && config->getPriority() > 0 && !config->isArbiter()); _primaryHost = hostAndPort; @@ -124,10 +128,10 @@ namespace mongo { vector<string> MockReplicaSet::getSecondaries() const { vector<string> secondaries; - for (ReplConfigMap::const_iterator iter = _replConfig.begin(); - iter != _replConfig.end(); ++iter) { - if (iter->first != _primaryHost) { - secondaries.push_back(iter->first); + for (ReplicaSetConfig::MemberIterator member = _replConfig.membersBegin(); + member != _replConfig.membersEnd(); ++member) { + if (member->getHostAndPort() != HostAndPort(_primaryHost)) { + secondaries.push_back(member->getHostAndPort().toString()); } } @@ -138,11 +142,11 @@ namespace mongo { return mapFindWithDefault(_nodeMap, hostAndPort, static_cast<MockRemoteDBServer*>(NULL)); } - MockReplicaSet::ReplConfigMap MockReplicaSet::getReplConfig() const { + repl::ReplicaSetConfig MockReplicaSet::getReplConfig() const { return _replConfig; } - void MockReplicaSet::setConfig(const MockReplicaSet::ReplConfigMap& newConfig) { + void MockReplicaSet::setConfig(const repl::ReplicaSetConfig& newConfig) { _replConfig = newConfig; mockIsMasterCmd(); mockReplSetGetStatusCmd(); @@ -166,7 +170,6 @@ namespace mongo { } void MockReplicaSet::mockIsMasterCmd() { - // Copied from ReplSetImpl::_fillIsMaster for (ReplNodeMap::iterator nodeIter = _nodeMap.begin(); nodeIter != _nodeMap.end(); ++nodeIter) { const string& hostAndPort = nodeIter->first; @@ -174,8 +177,9 @@ namespace mongo { BSONObjBuilder builder; builder.append("setName", _setName); - ReplConfigMap::const_iterator configIter = _replConfig.find(hostAndPort); - if (configIter == _replConfig.end()) { + const MemberConfig* member = _replConfig.findMemberByHostAndPort( + HostAndPort(hostAndPort)); + if (!member) { builder.append("ismaster", false); builder.append("secondary", false); @@ -203,34 +207,38 @@ namespace mongo { builder.append("primary", getPrimary()); - const ReplSetConfig::MemberCfg& replConfig = configIter->second; - if (replConfig.arbiterOnly) { + if (member->isArbiter()) { builder.append("arbiterOnly", true); } - if (replConfig.priority == 0 && !replConfig.arbiterOnly) { + if (member->getPriority() == 0 && !member->isArbiter()) { builder.append("passive", true); } - if (replConfig.slaveDelay) { - builder.append("slaveDelay", replConfig.slaveDelay); + if (member->getSlaveDelay().total_seconds()) { + builder.append("slaveDelay", member->getSlaveDelay().total_seconds()); } - if (replConfig.hidden) { + if (member->isHidden()) { builder.append("hidden", true); } - if (!replConfig.buildIndexes) { + if (!member->shouldBuildIndexes()) { builder.append("buildIndexes", false); } - if(!replConfig.tags.empty()) { + const ReplicaSetTagConfig tagConfig = _replConfig.getTagConfig(); + if (member->hasTags(tagConfig)) { BSONObjBuilder tagBuilder; - for(map<string, string>::const_iterator tagIter = replConfig.tags.begin(); - tagIter != replConfig.tags.end(); tagIter++) { - tagBuilder.append(tagIter->first, tagIter->second); + for (MemberConfig::TagIterator tag = member->tagsBegin(); + tag != member->tagsEnd(); ++tag) { + std::string tagKey = tagConfig.getTagKey(*tag); + if (tagKey[0] == '$') { + // Filter out internal tags + continue; + } + tagBuilder.append(tagKey, tagConfig.getTagValue(*tag)); } - builder.append("tags", tagBuilder.done()); } } @@ -243,7 +251,7 @@ namespace mongo { } int MockReplicaSet::getState(const std::string& hostAndPort) const { - if (_replConfig.count(hostAndPort) < 1) { + if (!_replConfig.findMemberByHostAndPort(HostAndPort(hostAndPort))) { return static_cast<int>(MemberState::RS_REMOVED); } else if (hostAndPort == getPrimary()) { @@ -275,9 +283,9 @@ namespace mongo { hostsField.push_back(selfStatBuilder.obj()); } - for (ReplConfigMap::const_iterator replConfIter = _replConfig.begin(); - replConfIter != _replConfig.end(); ++replConfIter) { - MockRemoteDBServer* hostNode = getNode(replConfIter->first); + for (ReplicaSetConfig::MemberIterator member = _replConfig.membersBegin(); + member != _replConfig.membersEnd(); ++member) { + MockRemoteDBServer* hostNode = getNode(member->getHostAndPort().toString()); if (hostNode == node) { continue; diff --git a/src/mongo/dbtests/mock/mock_replica_set.h b/src/mongo/dbtests/mock/mock_replica_set.h index 92f238cd1b7..9c394c97648 100644 --- a/src/mongo/dbtests/mock/mock_replica_set.h +++ b/src/mongo/dbtests/mock/mock_replica_set.h @@ -28,7 +28,8 @@ #pragma once #include "mongo/dbtests/mock/mock_remote_db_server.h" -#include "mongo/db/repl/rs_config.h" +#include "mongo/db/repl/member_config.h" +#include "mongo/db/repl/replica_set_config.h" #include <string> #include <map> @@ -49,7 +50,6 @@ namespace mongo { */ class MockReplicaSet { public: - typedef std::map<std::string, repl::ReplSetConfig::MemberCfg> ReplConfigMap; /** * Creates a mock replica set and automatically mocks the isMaster @@ -69,7 +69,7 @@ namespace mongo { std::string getSetName() const; std::string getConnectionString() const; std::vector<HostAndPort> getHosts() const; - ReplConfigMap getReplConfig() const; + repl::ReplicaSetConfig getReplConfig() const; std::string getPrimary() const; std::vector<std::string> getSecondaries() const; @@ -81,7 +81,7 @@ namespace mongo { * Note: does not automatically select a new primary. Can be done manually by * calling setPrimary. */ - void setConfig(const ReplConfigMap& newConfig); + void setConfig(const repl::ReplicaSetConfig& newConfig); void setPrimary(const std::string& hostAndPort); @@ -134,7 +134,7 @@ namespace mongo { const std::string _setName; ReplNodeMap _nodeMap; - ReplConfigMap _replConfig; + repl::ReplicaSetConfig _replConfig; std::string _primaryHost; }; |