summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/mock
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@mongodb.com>2014-11-18 19:10:13 -0500
committerSpencer T Brody <spencer@mongodb.com>2014-11-20 11:38:11 -0500
commit13577a48b51202aabd2e55ef95404439aaa4a0c3 (patch)
treefc39effb51783448ce01d782ca1e767e97b583e6 /src/mongo/dbtests/mock
parent42d802af32f99663bc1c66456b2d57749010bed5 (diff)
downloadmongo-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.cpp74
-rw-r--r--src/mongo/dbtests/mock/mock_replica_set.h10
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;
};