Fix DBOptionsTest.SetBytesPerSync test when run with no compression
Summary: Also made the test more easier to understand: - changed the value size to ~1MB. - switched to NoCompression. We don't anyway need compression in this test for dynamic options. The test failures started happening starting from: #2893 . Closes https://github.com/facebook/rocksdb/pull/2957 Differential Revision: D5959392 Pulled By: sagar0 fbshipit-source-id: 2d55641e429246328bc6d10fcb9ef540d6ce07da
This commit is contained in:
parent
92ccae7123
commit
377e004048
@ -118,13 +118,14 @@ TEST_F(DBOptionsTest, GetLatestCFOptions) {
|
||||
}
|
||||
|
||||
TEST_F(DBOptionsTest, SetBytesPerSync) {
|
||||
const size_t kValueSize = 1024 * 1024 * 8;
|
||||
const size_t kValueSize = 1024 * 1024; // 1MB
|
||||
Options options;
|
||||
options.create_if_missing = true;
|
||||
options.bytes_per_sync = 1024 * 1024;
|
||||
options.use_direct_reads = false;
|
||||
options.write_buffer_size = 400 * kValueSize;
|
||||
options.disable_auto_compactions = true;
|
||||
options.compression = kNoCompression;
|
||||
options.env = env_;
|
||||
Reopen(options);
|
||||
int counter = 0;
|
||||
@ -138,25 +139,33 @@ TEST_F(DBOptionsTest, SetBytesPerSync) {
|
||||
});
|
||||
|
||||
WriteOptions write_opts;
|
||||
for (; i < 40; i++) {
|
||||
// should sync approximately 40MB/1MB ~= 40 times.
|
||||
for (i = 0; i < 40; i++) {
|
||||
Put(Key(i), kValue, write_opts);
|
||||
}
|
||||
i = 0;
|
||||
rocksdb::SyncPoint::GetInstance()->EnableProcessing();
|
||||
ASSERT_OK(dbfull()->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
||||
rocksdb::SyncPoint::GetInstance()->DisableProcessing();
|
||||
low_bytes_per_sync = counter;
|
||||
ASSERT_GT(low_bytes_per_sync, 35);
|
||||
ASSERT_LT(low_bytes_per_sync, 45);
|
||||
|
||||
counter = 0;
|
||||
// 8388608 = 8 * 1024 * 1024
|
||||
ASSERT_OK(dbfull()->SetDBOptions({{"bytes_per_sync", "8388608"}}));
|
||||
ASSERT_EQ(8388608, dbfull()->GetDBOptions().bytes_per_sync);
|
||||
for (; i < 40; i++) {
|
||||
// should sync approximately 40MB*2/8MB ~= 10 times.
|
||||
// data will be 40*2MB because of previous Puts too.
|
||||
for (i = 0; i < 40; i++) {
|
||||
Put(Key(i), kValue, write_opts);
|
||||
}
|
||||
rocksdb::SyncPoint::GetInstance()->EnableProcessing();
|
||||
ASSERT_OK(dbfull()->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
||||
ASSERT_GT(counter, 0);
|
||||
ASSERT_GT(low_bytes_per_sync, 0);
|
||||
ASSERT_GT(counter, 5);
|
||||
ASSERT_LT(counter, 15);
|
||||
|
||||
// Redundant assert. But leaving it here just to get the point across that
|
||||
// low_bytes_per_sync > counter.
|
||||
ASSERT_GT(low_bytes_per_sync, counter);
|
||||
}
|
||||
|
||||
@ -167,6 +176,7 @@ TEST_F(DBOptionsTest, SetWalBytesPerSync) {
|
||||
options.wal_bytes_per_sync = 512;
|
||||
options.write_buffer_size = 100 * kValueSize;
|
||||
options.disable_auto_compactions = true;
|
||||
options.compression = kNoCompression;
|
||||
options.env = env_;
|
||||
Reopen(options);
|
||||
ASSERT_EQ(512, dbfull()->GetDBOptions().wal_bytes_per_sync);
|
||||
|
Loading…
x
Reference in New Issue
Block a user