diff --git a/db/db_test.cc b/db/db_test.cc index b71b859eb..dd120d51d 100644 --- a/db/db_test.cc +++ b/db/db_test.cc @@ -9822,87 +9822,6 @@ TEST(DBTest, ThreadStatusSingleCompaction) { rocksdb::SyncPoint::GetInstance()->DisableProcessing(); } -TEST(DBTest, ThreadStatusMultipleCompaction) { - const int kTestKeySize = 16; - const int kTestValueSize = 984; - const int kEntrySize = kTestKeySize + kTestValueSize; - const int kEntriesPerBuffer = 10; - const int kNumL0Files = 4; - - const int kHighPriCount = 3; - const int kLowPriCount = 5; - env_->SetBackgroundThreads(kHighPriCount, Env::HIGH); - env_->SetBackgroundThreads(kLowPriCount, Env::LOW); - - Options options; - options.create_if_missing = true; - options.write_buffer_size = kEntrySize * kEntriesPerBuffer; - options.compaction_style = kCompactionStyleLevel; - options.target_file_size_base = options.write_buffer_size; - options.max_bytes_for_level_base = - options.target_file_size_base * kNumL0Files; - options.compression = kNoCompression; - options = CurrentOptions(options); - options.env = env_; - options.enable_thread_tracking = true; - options.level0_file_num_compaction_trigger = kNumL0Files; - options.max_bytes_for_level_multiplier = 2; - options.max_background_compactions = kLowPriCount; - - TryReopen(options); - Random rnd(301); - - std::vector thread_list; - // Delay both flush and compaction - rocksdb::SyncPoint::GetInstance()->LoadDependency({ - {"FlushJob::Run:Start", - "CompactionJob::Run:Start"}, - {"CompactionJob::Run:Start", - "DBTest::ThreadStatusMultipleCompaction:GetThreadList"}, - {"DBTest::ThreadStatusMultipleCompaction:VerifyStatus", - "CompactionJob::Run:End"}, - {"CompactionJob::Run:End", - "FlushJob::Run:End"}}); - - // Make rocksdb busy - int key = 0; - int max_operation_count[ThreadStatus::NUM_OP_TYPES] = {0}; - for (int file = 0; file < 64 * kNumL0Files; ++file) { - for (int k = 0; k < kEntriesPerBuffer; ++k) { - ASSERT_OK(Put(ToString(key++), RandomString(&rnd, kTestValueSize))); - } - - // check how many threads are doing compaction using GetThreadList - int operation_count[ThreadStatus::NUM_OP_TYPES] = {0}; - TEST_SYNC_POINT( - "DBTest::ThreadStatusMultipleCompaction:GetThreadList"); - Status s = env_->GetThreadList(&thread_list); - TEST_SYNC_POINT( - "DBTest::ThreadStatusMultipleCompaction:VerifyStatus"); - for (auto thread : thread_list) { - operation_count[thread.operation_type]++; - } - - // Record the max number of compactions at a time. - for (int i = 0; i < ThreadStatus::NUM_OP_TYPES; ++i) { - if (max_operation_count[i] < operation_count[i]) { - max_operation_count[i] = operation_count[i]; - } - } - // Speed up the test - if (max_operation_count[ThreadStatus::OP_FLUSH] > 1 && - max_operation_count[ThreadStatus::OP_COMPACTION] > - 0.6 * options.max_background_compactions) { - break; - } - } - - ASSERT_GE(max_operation_count[ThreadStatus::OP_FLUSH], 1); - // Expect rocksdb to at least utilize 60% of the compaction threads. - ASSERT_GE(1.0 * max_operation_count[ThreadStatus::OP_COMPACTION], - 0.6 * options.max_background_compactions); -} - #endif // ROCKSDB_USING_THREAD_STATUS TEST(DBTest, DynamicCompactionOptions) {