diff --git a/db/db_iter_test.cc b/db/db_iter_test.cc index 30956e35c..ab92efc22 100644 --- a/db/db_iter_test.cc +++ b/db/db_iter_test.cc @@ -1842,7 +1842,7 @@ TEST_F(DBIteratorTest, DBIterator12) { ASSERT_FALSE(db_iter->Valid()); } -class DBIterWithMergeIterTest : public testing::Test { +class DBIterWithMergeIterTest : public ::testing::TestWithParam { public: DBIterWithMergeIterTest() : env_(Env::Default()), icomp_(BytewiseComparator()) { @@ -1865,9 +1865,11 @@ class DBIterWithMergeIterTest : public testing::Test { child_iters.push_back(internal_iter1_); child_iters.push_back(internal_iter2_); InternalKeyComparator icomp(BytewiseComparator()); - InternalIterator* merge_iter = - NewMergingIterator(&icomp_, &child_iters[0], 2u); - + if (GetParam() == false) { + options_.prefix_extractor.reset(NewFixedPrefixTransform(0)); + } + InternalIterator* merge_iter = NewMergingIterator( + &icomp_, &child_iters[0], 2u, nullptr, options_.prefix_extractor.get()); db_iter_.reset(NewDBIterator(env_, ImmutableCFOptions(options_), BytewiseComparator(), merge_iter, 8 /* read data earlier than seqId 8 */, @@ -1883,7 +1885,7 @@ class DBIterWithMergeIterTest : public testing::Test { std::unique_ptr db_iter_; }; -TEST_F(DBIterWithMergeIterTest, InnerMergeIterator1) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIterator1) { db_iter_->SeekToFirst(); ASSERT_TRUE(db_iter_->Valid()); ASSERT_EQ(db_iter_->key().ToString(), "a"); @@ -1912,7 +1914,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIterator1) { ASSERT_FALSE(db_iter_->Valid()); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIterator2) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIterator2) { // Test Prev() when one child iterator is at its end. db_iter_->Seek("g"); ASSERT_TRUE(db_iter_->Valid()); @@ -1940,7 +1942,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIterator2) { ASSERT_EQ(db_iter_->value().ToString(), "4"); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace1) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace1) { // Test Prev() when one child iterator is at its end but more rows // are added. db_iter_->Seek("f"); @@ -1976,7 +1978,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace1) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace2) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace2) { // Test Prev() when one child iterator is at its end but more rows // are added. db_iter_->Seek("f"); @@ -2014,7 +2016,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace2) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace3) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace3) { // Test Prev() when one child iterator is at its end but more rows // are added and max_skipped is triggered. db_iter_->Seek("f"); @@ -2056,7 +2058,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace3) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace4) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace4) { // Test Prev() when one child iterator has more rows inserted // between Seek() and Prev() when changing directions. internal_iter2_->Add("z", kTypeValue, "9", 4u); @@ -2107,7 +2109,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace4) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace5) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace5) { internal_iter2_->Add("z", kTypeValue, "9", 4u); // Test Prev() when one child iterator has more rows inserted @@ -2154,7 +2156,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace5) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace6) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace6) { internal_iter2_->Add("z", kTypeValue, "9", 4u); // Test Prev() when one child iterator has more rows inserted @@ -2200,7 +2202,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace6) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace7) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace7) { internal_iter1_->Add("u", kTypeValue, "10", 4u); internal_iter1_->Add("v", kTypeValue, "11", 4u); internal_iter1_->Add("w", kTypeValue, "12", 4u); @@ -2254,7 +2256,7 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace7) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace8) { +TEST_P(DBIterWithMergeIterTest, InnerMergeIteratorDataRace8) { // internal_iter1_: a, f, g // internal_iter2_: a, b, c, d, adding (z) internal_iter2_->Add("z", kTypeValue, "9", 4u); @@ -2290,6 +2292,10 @@ TEST_F(DBIterWithMergeIterTest, InnerMergeIteratorDataRace8) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } + +INSTANTIATE_TEST_CASE_P(InnerMergeIteratorDataRaceInstance, + DBIterWithMergeIterTest, ::testing::Bool()); + } // namespace rocksdb int main(int argc, char** argv) {