summaryrefslogtreecommitdiff
path: root/src/mongo/s/routing_table_history_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/s/routing_table_history_test.cpp')
-rw-r--r--src/mongo/s/routing_table_history_test.cpp119
1 files changed, 63 insertions, 56 deletions
diff --git a/src/mongo/s/routing_table_history_test.cpp b/src/mongo/s/routing_table_history_test.cpp
index b8670f17d06..72de94f95f8 100644
--- a/src/mongo/s/routing_table_history_test.cpp
+++ b/src/mongo/s/routing_table_history_test.cpp
@@ -152,8 +152,8 @@ public:
void setUp() override {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
- const Timestamp kRouting(100, 0);
- ChunkVersion version{1, 0, epoch, boost::none /* timestamp */};
+ const Timestamp timestamp(1);
+ ChunkVersion version{1, 0, epoch, timestamp};
auto initChunk =
ChunkType{uuid,
@@ -167,7 +167,7 @@ public:
nullptr,
false,
epoch,
- boost::none /* timestamp */,
+ timestamp,
boost::none /* timeseriesFields */,
boost::none,
boost::none /* chunkSizeBytes */,
@@ -330,7 +330,8 @@ TEST_F(RoutingTableHistoryTestThreeInitialChunks,
TEST_F(RoutingTableHistoryTest, TestSplits) {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
- ChunkVersion version{1, 0, epoch, boost::none /* timestamp */};
+ const Timestamp timestamp(1);
+ ChunkVersion version{1, 0, epoch, timestamp};
auto chunkAll =
ChunkType{uuid,
@@ -344,7 +345,7 @@ TEST_F(RoutingTableHistoryTest, TestSplits) {
nullptr,
false,
epoch,
- boost::none /* timestamp */,
+ timestamp,
boost::none /* timeseriesFields */,
boost::none,
boost::none /* chunkSizeBytes */,
@@ -354,44 +355,45 @@ TEST_F(RoutingTableHistoryTest, TestSplits) {
std::vector<ChunkType> chunks1 = {
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 0)},
- ChunkVersion{2, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 0), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard}};
auto rt1 = rt.makeUpdated(boost::none, boost::none, true, chunks1);
- auto v1 = ChunkVersion{2, 2, epoch, boost::none /* timestamp */};
+ auto v1 = ChunkVersion{2, 2, epoch, timestamp};
ASSERT_EQ(v1, rt1.getVersion(kThisShard));
std::vector<ChunkType> chunks2 = {
ChunkType{uuid,
ChunkRange{BSON("a" << 0), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << -1)},
- ChunkVersion{3, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << -1), BSON("a" << 0)},
- ChunkVersion{3, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 2, epoch, timestamp},
kThisShard}};
auto rt2 = rt1.makeUpdated(boost::none, boost::none, true, chunks2);
- auto v2 = ChunkVersion{3, 2, epoch, boost::none /* timestamp */};
+ auto v2 = ChunkVersion{3, 2, epoch, timestamp};
ASSERT_EQ(v2, rt2.getVersion(kThisShard));
}
TEST_F(RoutingTableHistoryTest, TestReplaceEmptyChunk) {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
+ const Timestamp timestamp(1);
std::vector<ChunkType> initialChunks = {
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), getShardKeyPattern().globalMax()},
- ChunkVersion{1, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{1, 0, epoch, timestamp},
kThisShard}};
auto rt = RoutingTableHistory::makeNew(kNss,
@@ -400,7 +402,7 @@ TEST_F(RoutingTableHistoryTest, TestReplaceEmptyChunk) {
nullptr,
false,
epoch,
- boost::none /* timestamp */,
+ timestamp,
boost::none /* timeseriesFields */,
boost::none,
boost::none /* chunkSizeBytes */,
@@ -411,15 +413,15 @@ TEST_F(RoutingTableHistoryTest, TestReplaceEmptyChunk) {
std::vector<ChunkType> changedChunks = {
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 0)},
- ChunkVersion{2, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 0), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard}};
auto rt1 = rt.makeUpdated(boost::none, boost::none, true, changedChunks);
- auto v1 = ChunkVersion{2, 2, epoch, boost::none /* timestamp */};
+ auto v1 = ChunkVersion{2, 2, epoch, timestamp};
ASSERT_EQ(v1, rt1.getVersion(kThisShard));
ASSERT_EQ(rt1.numChunks(), 2);
@@ -440,11 +442,12 @@ TEST_F(RoutingTableHistoryTest, TestReplaceEmptyChunk) {
TEST_F(RoutingTableHistoryTest, TestUseLatestVersions) {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
+ const Timestamp timestamp(1);
std::vector<ChunkType> initialChunks = {
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), getShardKeyPattern().globalMax()},
- ChunkVersion{1, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{1, 0, epoch, timestamp},
kThisShard}};
auto rt = RoutingTableHistory::makeNew(kNss,
@@ -453,7 +456,7 @@ TEST_F(RoutingTableHistoryTest, TestUseLatestVersions) {
nullptr,
false,
epoch,
- boost::none /* timestamp */,
+ timestamp,
boost::none /* timeseriesFields */,
boost::none,
boost::none /* chunkSizeBytes */,
@@ -464,19 +467,19 @@ TEST_F(RoutingTableHistoryTest, TestUseLatestVersions) {
std::vector<ChunkType> changedChunks = {
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), getShardKeyPattern().globalMax()},
- ChunkVersion{1, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{1, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 0)},
- ChunkVersion{2, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 0), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard}};
auto rt1 = rt.makeUpdated(boost::none, boost::none, true, changedChunks);
- auto v1 = ChunkVersion{2, 2, epoch, boost::none /* timestamp */};
+ auto v1 = ChunkVersion{2, 2, epoch, timestamp};
ASSERT_EQ(v1, rt1.getVersion(kThisShard));
ASSERT_EQ(rt1.numChunks(), 2);
}
@@ -484,15 +487,16 @@ TEST_F(RoutingTableHistoryTest, TestUseLatestVersions) {
TEST_F(RoutingTableHistoryTest, TestOutOfOrderVersion) {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
+ const Timestamp timestamp(1);
std::vector<ChunkType> initialChunks = {
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 0)},
- ChunkVersion{2, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 0), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard}};
auto rt = RoutingTableHistory::makeNew(kNss,
@@ -501,7 +505,7 @@ TEST_F(RoutingTableHistoryTest, TestOutOfOrderVersion) {
nullptr,
false,
epoch,
- boost::none /* timestamp */,
+ timestamp,
boost::none /* timeseriesFields */,
boost::none,
boost::none /* chunkSizeBytes */,
@@ -512,20 +516,20 @@ TEST_F(RoutingTableHistoryTest, TestOutOfOrderVersion) {
std::vector<ChunkType> changedChunks = {
ChunkType{uuid,
ChunkRange{BSON("a" << 0), getShardKeyPattern().globalMax()},
- ChunkVersion{3, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 0)},
- ChunkVersion{3, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 1, epoch, timestamp},
kThisShard}};
auto rt1 = rt.makeUpdated(boost::none, boost::none, true, changedChunks);
- auto v1 = ChunkVersion{3, 1, epoch, boost::none /* timestamp */};
+ auto v1 = ChunkVersion{3, 1, epoch, timestamp};
ASSERT_EQ(v1, rt1.getVersion(kThisShard));
ASSERT_EQ(rt1.numChunks(), 2);
auto chunk1 = rt1.findIntersectingChunk(BSON("a" << 0));
- ASSERT_EQ(chunk1->getLastmod(), ChunkVersion(3, 0, epoch, boost::none /* timestamp */));
+ ASSERT_EQ(chunk1->getLastmod(), ChunkVersion(3, 0, epoch, timestamp));
ASSERT_EQ(chunk1->getMin().woCompare(BSON("a" << 0)), 0);
ASSERT_EQ(chunk1->getMax().woCompare(getShardKeyPattern().globalMax()), 0);
}
@@ -533,19 +537,20 @@ TEST_F(RoutingTableHistoryTest, TestOutOfOrderVersion) {
TEST_F(RoutingTableHistoryTest, TestMergeChunks) {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
+ const Timestamp timestamp(1);
std::vector<ChunkType> initialChunks = {
ChunkType{uuid,
ChunkRange{BSON("a" << 0), BSON("a" << 10)},
- ChunkVersion{2, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 0)},
- ChunkVersion{2, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 10), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard}};
auto rt = RoutingTableHistory::makeNew(kNss,
@@ -554,27 +559,27 @@ TEST_F(RoutingTableHistoryTest, TestMergeChunks) {
nullptr,
false,
epoch,
+ timestamp,
boost::none,
- boost::none /* timestamp */,
boost::none /* timeseriesFields */,
boost::none /* chunkSizeBytes */,
true,
initialChunks);
ASSERT_EQ(rt.numChunks(), 3);
- ASSERT_EQ(rt.getVersion(), ChunkVersion(2, 2, epoch, boost::none /* timestamp */));
+ ASSERT_EQ(rt.getVersion(), ChunkVersion(2, 2, epoch, timestamp));
std::vector<ChunkType> changedChunks = {
ChunkType{uuid,
ChunkRange{BSON("a" << 10), getShardKeyPattern().globalMax()},
- ChunkVersion{3, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 10)},
- ChunkVersion{3, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 1, epoch, timestamp},
kThisShard}};
auto rt1 = rt.makeUpdated(boost::none, boost::none, true, changedChunks);
- auto v1 = ChunkVersion{3, 1, epoch, boost::none /* timestamp */};
+ auto v1 = ChunkVersion{3, 1, epoch, timestamp};
ASSERT_EQ(v1, rt1.getVersion(kThisShard));
ASSERT_EQ(rt1.numChunks(), 2);
}
@@ -582,19 +587,20 @@ TEST_F(RoutingTableHistoryTest, TestMergeChunks) {
TEST_F(RoutingTableHistoryTest, TestMergeChunksOrdering) {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
+ const Timestamp timestamp(1);
std::vector<ChunkType> initialChunks = {
ChunkType{uuid,
ChunkRange{BSON("a" << -10), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << -500)},
- ChunkVersion{2, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << -500), BSON("a" << -10)},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard}};
auto rt = RoutingTableHistory::makeNew(kNss,
@@ -603,32 +609,32 @@ TEST_F(RoutingTableHistoryTest, TestMergeChunksOrdering) {
nullptr,
false,
epoch,
- boost::none /* timestamp */,
+ timestamp,
boost::none /* timeseriesFields */,
boost::none,
boost::none /* chunkSizeBytes */,
true,
initialChunks);
ASSERT_EQ(rt.numChunks(), 3);
- ASSERT_EQ(rt.getVersion(), ChunkVersion(2, 2, epoch, boost::none /* timestamp */));
+ ASSERT_EQ(rt.getVersion(), ChunkVersion(2, 2, epoch, timestamp));
std::vector<ChunkType> changedChunks = {
ChunkType{uuid,
ChunkRange{BSON("a" << -500), BSON("a" << -10)},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << -10)},
- ChunkVersion{3, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 1, epoch, timestamp},
kThisShard}};
auto rt1 = rt.makeUpdated(boost::none, boost::none, true, changedChunks);
- auto v1 = ChunkVersion{3, 1, epoch, boost::none /* timestamp */};
+ auto v1 = ChunkVersion{3, 1, epoch, timestamp};
ASSERT_EQ(v1, rt1.getVersion(kThisShard));
ASSERT_EQ(rt1.numChunks(), 2);
auto chunk1 = rt1.findIntersectingChunk(BSON("a" << -500));
- ASSERT_EQ(chunk1->getLastmod(), ChunkVersion(3, 1, epoch, boost::none /* timestamp */));
+ ASSERT_EQ(chunk1->getLastmod(), ChunkVersion(3, 1, epoch, timestamp));
ASSERT_EQ(chunk1->getMin().woCompare(getShardKeyPattern().globalMin()), 0);
ASSERT_EQ(chunk1->getMax().woCompare(BSON("a" << -10)), 0);
}
@@ -636,31 +642,32 @@ TEST_F(RoutingTableHistoryTest, TestMergeChunksOrdering) {
TEST_F(RoutingTableHistoryTest, TestFlatten) {
const UUID uuid = UUID::gen();
const OID epoch = OID::gen();
+ const Timestamp timestamp(1);
std::vector<ChunkType> initialChunks = {
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 10)},
- ChunkVersion{2, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 10), BSON("a" << 20)},
- ChunkVersion{2, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 1, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 20), getShardKeyPattern().globalMax()},
- ChunkVersion{2, 2, epoch, boost::none /* timestamp */},
+ ChunkVersion{2, 2, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), getShardKeyPattern().globalMax()},
- ChunkVersion{3, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{3, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{getShardKeyPattern().globalMin(), BSON("a" << 10)},
- ChunkVersion{4, 0, epoch, boost::none /* timestamp */},
+ ChunkVersion{4, 0, epoch, timestamp},
kThisShard},
ChunkType{uuid,
ChunkRange{BSON("a" << 10), getShardKeyPattern().globalMax()},
- ChunkVersion{4, 1, epoch, boost::none /* timestamp */},
+ ChunkVersion{4, 1, epoch, timestamp},
kThisShard},
};
@@ -670,17 +677,17 @@ TEST_F(RoutingTableHistoryTest, TestFlatten) {
nullptr,
false,
epoch,
- boost::none /* timestamp */,
+ timestamp,
boost::none /* timeseriesFields */,
boost::none,
boost::none /* chunkSizeBytes */,
true,
initialChunks);
ASSERT_EQ(rt.numChunks(), 2);
- ASSERT_EQ(rt.getVersion(), ChunkVersion(4, 1, epoch, boost::none /* timestamp */));
+ ASSERT_EQ(rt.getVersion(), ChunkVersion(4, 1, epoch, timestamp));
auto chunk1 = rt.findIntersectingChunk(BSON("a" << 0));
- ASSERT_EQ(chunk1->getLastmod(), ChunkVersion(4, 0, epoch, boost::none /* timestamp */));
+ ASSERT_EQ(chunk1->getLastmod(), ChunkVersion(4, 0, epoch, timestamp));
ASSERT_EQ(chunk1->getMin().woCompare(getShardKeyPattern().globalMin()), 0);
ASSERT_EQ(chunk1->getMax().woCompare(BSON("a" << 10)), 0);
}