|
|
|
@ -461,16 +461,17 @@ TEST_F(DBCompactionTest, DisableStatsUpdateReopen) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_P(DBCompactionTestWithParam, CompactionTrigger) { |
|
|
|
|
int kNumKeysPerFile = 100; |
|
|
|
|
const int kNumKeysPerFile = 100; |
|
|
|
|
|
|
|
|
|
Options options; |
|
|
|
|
options.write_buffer_size = 200 << 10; |
|
|
|
|
options.write_buffer_size = 110 << 10; // 110KB
|
|
|
|
|
options.arena_block_size = 4 << 10; |
|
|
|
|
options.num_levels = 3; |
|
|
|
|
options.level0_file_num_compaction_trigger = 3; |
|
|
|
|
options.max_subcompactions = max_subcompactions_; |
|
|
|
|
options.memtable_factory.reset(new SpecialSkipListFactory(kNumKeysPerFile)); |
|
|
|
|
options = CurrentOptions(options); |
|
|
|
|
options.memtable_factory.reset(new SpecialSkipListFactory(kNumKeysPerFile)); |
|
|
|
|
CreateAndReopenWithCF({"pikachu"}, options); |
|
|
|
|
|
|
|
|
|
Random rnd(301); |
|
|
|
@ -483,6 +484,7 @@ TEST_P(DBCompactionTestWithParam, CompactionTrigger) { |
|
|
|
|
values.push_back(RandomString(&rnd, 990)); |
|
|
|
|
ASSERT_OK(Put(1, Key(i), values[i])); |
|
|
|
|
} |
|
|
|
|
// put extra key to trigger flush
|
|
|
|
|
ASSERT_OK(Put(1, "", "")); |
|
|
|
|
dbfull()->TEST_WaitForFlushMemTable(handles_[1]); |
|
|
|
|
ASSERT_EQ(NumTableFilesAtLevel(0, 1), num + 1); |
|
|
|
@ -490,10 +492,12 @@ TEST_P(DBCompactionTestWithParam, CompactionTrigger) { |
|
|
|
|
|
|
|
|
|
// generate one more file in level-0, and should trigger level-0 compaction
|
|
|
|
|
std::vector<std::string> values; |
|
|
|
|
for (int i = 0; i < 100; i++) { |
|
|
|
|
for (int i = 0; i < kNumKeysPerFile; i++) { |
|
|
|
|
values.push_back(RandomString(&rnd, 990)); |
|
|
|
|
ASSERT_OK(Put(1, Key(i), values[i])); |
|
|
|
|
} |
|
|
|
|
// put extra key to trigger flush
|
|
|
|
|
ASSERT_OK(Put(1, "", "")); |
|
|
|
|
dbfull()->TEST_WaitForCompact(); |
|
|
|
|
|
|
|
|
|
ASSERT_EQ(NumTableFilesAtLevel(0, 1), 0); |
|
|
|
|