summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/replication_consistency_markers_impl_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/repl/replication_consistency_markers_impl_test.cpp')
-rw-r--r--src/mongo/db/repl/replication_consistency_markers_impl_test.cpp47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/mongo/db/repl/replication_consistency_markers_impl_test.cpp b/src/mongo/db/repl/replication_consistency_markers_impl_test.cpp
index 8d1e7c07bc5..8767fec7057 100644
--- a/src/mongo/db/repl/replication_consistency_markers_impl_test.cpp
+++ b/src/mongo/db/repl/replication_consistency_markers_impl_test.cpp
@@ -56,6 +56,7 @@ using namespace mongo::repl;
NamespaceString kMinValidNss("local", "replset.minvalid");
NamespaceString kOplogTruncateAfterPointNss("local", "replset.oplogTruncateAfterPoint");
+NamespaceString kInitialSyncIdNss("local", "replset.initialSyncId");
/**
* Returns min valid document.
@@ -121,7 +122,7 @@ bool RecoveryUnitWithDurabilityTracking::waitUntilDurable(OperationContext* opCt
TEST_F(ReplicationConsistencyMarkersTest, InitialSyncFlag) {
ReplicationConsistencyMarkersImpl consistencyMarkers(
- getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss);
+ getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss, kInitialSyncIdNss);
auto opCtx = getOperationContext();
ASSERT(consistencyMarkers.createInternalCollections(opCtx).isOK());
consistencyMarkers.initializeMinValidDocument(opCtx);
@@ -145,7 +146,7 @@ TEST_F(ReplicationConsistencyMarkersTest, InitialSyncFlag) {
TEST_F(ReplicationConsistencyMarkersTest, GetMinValidAfterSettingInitialSyncFlagWorks) {
ReplicationConsistencyMarkersImpl consistencyMarkers(
- getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss);
+ getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss, kInitialSyncIdNss);
auto opCtx = getOperationContext();
ASSERT(consistencyMarkers.createInternalCollections(opCtx).isOK());
consistencyMarkers.initializeMinValidDocument(opCtx);
@@ -164,7 +165,7 @@ TEST_F(ReplicationConsistencyMarkersTest, GetMinValidAfterSettingInitialSyncFlag
TEST_F(ReplicationConsistencyMarkersTest, ClearInitialSyncFlagResetsOplogTruncateAfterPoint) {
ReplicationConsistencyMarkersImpl consistencyMarkers(
- getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss);
+ getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss, kInitialSyncIdNss);
auto opCtx = getOperationContext();
ASSERT(consistencyMarkers.createInternalCollections(opCtx).isOK());
consistencyMarkers.initializeMinValidDocument(opCtx);
@@ -187,7 +188,7 @@ TEST_F(ReplicationConsistencyMarkersTest, ClearInitialSyncFlagResetsOplogTruncat
TEST_F(ReplicationConsistencyMarkersTest, ReplicationConsistencyMarkers) {
ReplicationConsistencyMarkersImpl consistencyMarkers(
- getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss);
+ getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss, kInitialSyncIdNss);
auto opCtx = getOperationContext();
ASSERT(consistencyMarkers.createInternalCollections(opCtx).isOK());
consistencyMarkers.initializeMinValidDocument(opCtx);
@@ -242,5 +243,43 @@ TEST_F(ReplicationConsistencyMarkersTest, ReplicationConsistencyMarkers) {
ASSERT_FALSE(recoveryUnit->waitUntilDurableCalled);
}
+TEST_F(ReplicationConsistencyMarkersTest, InitialSyncId) {
+ ReplicationConsistencyMarkersImpl consistencyMarkers(
+ getStorageInterface(), kMinValidNss, kOplogTruncateAfterPointNss, kInitialSyncIdNss);
+ auto opCtx = getOperationContext();
+
+ // Initially, initialSyncId should be unset.
+ auto initialSyncIdShouldBeUnset = consistencyMarkers.getInitialSyncId(opCtx);
+ ASSERT(initialSyncIdShouldBeUnset.isEmpty()) << initialSyncIdShouldBeUnset;
+
+ // Clearing an already-clear initialSyncId should be OK.
+ consistencyMarkers.clearInitialSyncId(opCtx);
+ initialSyncIdShouldBeUnset = consistencyMarkers.getInitialSyncId(opCtx);
+ ASSERT(initialSyncIdShouldBeUnset.isEmpty()) << initialSyncIdShouldBeUnset;
+
+ consistencyMarkers.setInitialSyncIdIfNotSet(opCtx);
+ auto firstInitialSyncIdBson = consistencyMarkers.getInitialSyncId(opCtx);
+ ASSERT_FALSE(firstInitialSyncIdBson.isEmpty());
+ InitialSyncIdDocument firstInitialSyncIdDoc = InitialSyncIdDocument::parse(
+ IDLParserErrorContext("initialSyncId"), firstInitialSyncIdBson);
+
+ // Setting it twice should change nothing.
+ consistencyMarkers.setInitialSyncIdIfNotSet(opCtx);
+ ASSERT_BSONOBJ_EQ(firstInitialSyncIdBson, consistencyMarkers.getInitialSyncId(opCtx));
+
+ // Clear it; should return to empty.
+ consistencyMarkers.clearInitialSyncId(opCtx);
+ initialSyncIdShouldBeUnset = consistencyMarkers.getInitialSyncId(opCtx);
+ ASSERT(initialSyncIdShouldBeUnset.isEmpty()) << initialSyncIdShouldBeUnset;
+
+ // Set it; it should have a different UUID.
+ consistencyMarkers.setInitialSyncIdIfNotSet(opCtx);
+ auto secondInitialSyncIdBson = consistencyMarkers.getInitialSyncId(opCtx);
+ ASSERT_FALSE(secondInitialSyncIdBson.isEmpty());
+ InitialSyncIdDocument secondInitialSyncIdDoc = InitialSyncIdDocument::parse(
+ IDLParserErrorContext("initialSyncId"), secondInitialSyncIdBson);
+ ASSERT_NE(firstInitialSyncIdDoc.get_id(), secondInitialSyncIdDoc.get_id());
+}
+
} // namespace
} // namespace mongo