diff options
Diffstat (limited to 'src/mongo/s/routing_table_history_test.cpp')
-rw-r--r-- | src/mongo/s/routing_table_history_test.cpp | 119 |
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); } |