summaryrefslogtreecommitdiff
path: root/src/mongo/client/sdam/election_id_set_version_pair_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/client/sdam/election_id_set_version_pair_test.cpp')
-rw-r--r--src/mongo/client/sdam/election_id_set_version_pair_test.cpp64
1 files changed, 54 insertions, 10 deletions
diff --git a/src/mongo/client/sdam/election_id_set_version_pair_test.cpp b/src/mongo/client/sdam/election_id_set_version_pair_test.cpp
index b375a6760fc..93a95c10097 100644
--- a/src/mongo/client/sdam/election_id_set_version_pair_test.cpp
+++ b/src/mongo/client/sdam/election_id_set_version_pair_test.cpp
@@ -97,27 +97,27 @@ public:
TEST_F(ElectionIdSetVersionPairTest, ExpectedOutcome) {
std::vector<TestCase> tests = {
- // At startup, both current fields are not set.
- {kNullOid, kNullSet, kOidOne, 1, Compare::kNotComparable, Consistency::kConsistent},
+ // At startup, both current fields are not set. Field set > unset.
+ {kNullOid, kNullSet, kOidOne, 1, Compare::kLess, Consistency::kConsistent},
{kOidOne, 1, kOidOne, 1, Compare::kEquals, Consistency::kConsistent},
// One field is not set. This should never happen however added for better
// coverage for malformed protocol.
- {kNullOid, 1, kOidOne, 1, Compare::kNotComparable, Consistency::kConsistent},
- {kOidOne, kNullSet, kOidOne, 1, Compare::kNotComparable, Consistency::kConsistent},
- {kOidOne, 1, kNullOid, 1, Compare::kNotComparable, Consistency::kInconsistent},
- {kOidOne, 1, kOidOne, kNullSet, Compare::kNotComparable, Consistency::kInconsistent},
+ {kNullOid, 1, kOidOne, 1, Compare::kLess, Consistency::kConsistent},
+ {kOidOne, kNullSet, kOidOne, 1, Compare::kLess, Consistency::kConsistent},
+ {kOidOne, 1, kNullOid, 1, Compare::kGreater, Consistency::kConsistent},
+ {kOidOne, 1, kOidOne, kNullSet, Compare::kGreater, Consistency::kConsistent},
// Primary advanced one way or another. "Less" means current < incoming.
{kOidOne, 1, kOidTwo, 1, Compare::kLess, Consistency::kConsistent},
{kOidOne, 1, kOidOne, 2, Compare::kLess, Consistency::kConsistent},
// Primary advanced but current state is incomplete.
- {kNullOid, 1, kOidTwo, 1, Compare::kNotComparable, Consistency::kConsistent},
- {kNullOid, 1, kOidOne, 2, Compare::kNotComparable, Consistency::kConsistent},
+ {kNullOid, 1, kOidTwo, 1, Compare::kLess, Consistency::kConsistent},
+ {kNullOid, 1, kOidOne, 2, Compare::kLess, Consistency::kConsistent},
{kOidOne, kNullSet, kOidTwo, 1, Compare::kLess, Consistency::kConsistent},
- {kOidOne, kNullSet, kOidOne, 2, Compare::kNotComparable, Consistency::kConsistent},
+ {kOidOne, kNullSet, kOidOne, 2, Compare::kLess, Consistency::kConsistent},
// Primary went backwards one way or another.
// Inconsistent because Set version went backwards without Term being changed (same
@@ -126,7 +126,7 @@ TEST_F(ElectionIdSetVersionPairTest, ExpectedOutcome) {
{kOidTwo, 2, kOidOne, 2, Compare::kGreater, Consistency::kConsistent},
// Primary went backwards with current state incomplete.
- {kNullOid, 2, kOidTwo, 1, Compare::kNotComparable, Consistency::kConsistent},
+ {kNullOid, 2, kOidTwo, 1, Compare::kLess, Consistency::kConsistent},
{kOidTwo, kNullSet, kOidOne, 1, Compare::kGreater, Consistency::kConsistent},
// Stale primary case when Term went backwards but Set version advanced.
@@ -145,5 +145,49 @@ TEST_F(ElectionIdSetVersionPairTest, ExpectedOutcome) {
}
}
+TEST_F(ElectionIdSetVersionPairTest, TestLessThanRelation) {
+ ElectionIdSetVersionPair hasNone{boost::none, boost::none};
+ ElectionIdSetVersionPair hasBoth{kOidOne, 1};
+ ElectionIdSetVersionPair hasBoth2{kOidOne, 2};
+ ElectionIdSetVersionPair noEid{boost::none, 1};
+ ElectionIdSetVersionPair noEid2{boost::none, 2};
+ ElectionIdSetVersionPair noSet{kOidOne, boost::none};
+ ElectionIdSetVersionPair noSet2{kOidTwo, boost::none};
+
+ ASSERT_TRUE(hasNone < noEid);
+ ASSERT(hasNone == hasNone);
+
+ ASSERT_TRUE(hasNone < noEid2);
+ ASSERT_TRUE(noEid < noEid2);
+ ASSERT(noEid == noEid);
+
+ ASSERT_TRUE(hasNone < noSet);
+ ASSERT_TRUE(noEid < noSet);
+ ASSERT_TRUE(noEid2 < noSet);
+ ASSERT(noEid2 == noEid2);
+
+ ASSERT_TRUE(hasNone < noSet2);
+ ASSERT_TRUE(noEid < noSet2);
+ ASSERT_TRUE(noEid2 < noSet2);
+ ASSERT_TRUE(noSet < noSet2);
+ ASSERT(noSet == noSet);
+
+ ASSERT_TRUE(hasNone < hasBoth);
+ ASSERT_TRUE(noEid < hasBoth);
+ ASSERT_TRUE(noEid2 < hasBoth);
+ ASSERT_TRUE(noSet < hasBoth);
+ ASSERT_TRUE(noSet2 < hasBoth);
+ ASSERT(noSet2 == noSet2);
+
+ ASSERT_TRUE(hasNone < hasBoth2);
+ ASSERT_TRUE(noEid < hasBoth2);
+ ASSERT_TRUE(noEid2 < hasBoth2);
+ ASSERT_TRUE(noSet < hasBoth2);
+ ASSERT_TRUE(noSet2 < hasBoth2);
+ ASSERT_TRUE(hasBoth < hasBoth2);
+ ASSERT(hasBoth == hasBoth);
+ ASSERT(hasBoth2 == hasBoth2);
+}
+
} // namespace
} // namespace mongo::sdam