summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2018-04-05 11:12:13 -0400
committerHenrik Edin <henrik.edin@mongodb.com>2018-04-06 14:55:48 -0400
commit1c0c35ba16ab6f03902db70f9e5750a74877e8a4 (patch)
treec68eaa1368e1f690630edcba6dee3ba03bafe7ba
parent91e426664fdfb52070275c2a498f71d7d196ea02 (diff)
downloadmongo-1c0c35ba16ab6f03902db70f9e5750a74877e8a4.tar.gz
SERVER-34320 Fix index building in embedded.
-rw-r--r--src/mongo/client/embedded/libmongodbcapi_test.cpp24
-rw-r--r--src/mongo/client/embedded/replication_coordinator_embedded.cpp8
-rw-r--r--src/mongo/client/embedded/replication_coordinator_embedded.h3
3 files changed, 29 insertions, 6 deletions
diff --git a/src/mongo/client/embedded/libmongodbcapi_test.cpp b/src/mongo/client/embedded/libmongodbcapi_test.cpp
index 967b59b1acd..918778ff7c8 100644
--- a/src/mongo/client/embedded/libmongodbcapi_test.cpp
+++ b/src/mongo/client/embedded/libmongodbcapi_test.cpp
@@ -173,6 +173,30 @@ TEST_F(MongodbCAPITest, IsMaster) {
ASSERT(output.getBoolField("ismaster"));
}
+TEST_F(MongodbCAPITest, CreateIndex) {
+ // create the client object
+ auto client = createClient();
+
+ // craft the createIndexes message
+ mongo::BSONObj inputObj = mongo::fromjson(
+ R"raw_delimiter({
+ createIndexes: 'items',
+ indexes:
+ [
+ {
+ key: {
+ task: 1
+ },
+ name: 'task_1'
+ }
+ ]
+ })raw_delimiter");
+ auto inputOpMsg = mongo::OpMsgRequest::fromDBAndBody("todo", inputObj);
+ auto output = performRpc(client, inputOpMsg);
+
+ ASSERT(output.getIntField("numIndexesAfter") == output.getIntField("numIndexesBefore") + 1);
+}
+
TEST_F(MongodbCAPITest, TrimMemory) {
// create the client object
auto client = createClient();
diff --git a/src/mongo/client/embedded/replication_coordinator_embedded.cpp b/src/mongo/client/embedded/replication_coordinator_embedded.cpp
index affd8a085ba..2667506d914 100644
--- a/src/mongo/client/embedded/replication_coordinator_embedded.cpp
+++ b/src/mongo/client/embedded/replication_coordinator_embedded.cpp
@@ -129,6 +129,10 @@ WriteConcernOptions ReplicationCoordinatorEmbedded::populateUnsetWriteConcernOpt
return writeConcern;
}
+bool ReplicationCoordinatorEmbedded::buildsIndexes() {
+ return true;
+}
+
OpTime ReplicationCoordinatorEmbedded::getCurrentCommittedSnapshotOpTime() const {
UASSERT_NOT_IMPLEMENTED;
}
@@ -328,10 +332,6 @@ Status ReplicationCoordinatorEmbedded::processReplSetUpdatePosition(const Update
UASSERT_NOT_IMPLEMENTED;
}
-bool ReplicationCoordinatorEmbedded::buildsIndexes() {
- UASSERT_NOT_IMPLEMENTED;
-}
-
std::vector<HostAndPort> ReplicationCoordinatorEmbedded::getHostsWrittenTo(const OpTime&, bool) {
UASSERT_NOT_IMPLEMENTED;
}
diff --git a/src/mongo/client/embedded/replication_coordinator_embedded.h b/src/mongo/client/embedded/replication_coordinator_embedded.h
index 6e6e9368936..8ebd438ea46 100644
--- a/src/mongo/client/embedded/replication_coordinator_embedded.h
+++ b/src/mongo/client/embedded/replication_coordinator_embedded.h
@@ -83,6 +83,7 @@ public:
WriteConcernOptions populateUnsetWriteConcernOptionsSyncMode(WriteConcernOptions wc) override;
+ bool buildsIndexes() override;
// Not implemented members that should not be called. Will assert or invariant.
@@ -176,8 +177,6 @@ public:
Status processReplSetUpdatePosition(const repl::UpdatePositionArgs&, long long*) override;
- bool buildsIndexes() override;
-
std::vector<HostAndPort> getHostsWrittenTo(const repl::OpTime&, bool) override;
std::vector<HostAndPort> getOtherNodesInReplSet() const override;