Make DBTest.ReadLatencyHistogramByLevel more robust

Summary:
Two fixes:
1. Wait compaction after generating each L0 file so that we are sure there are one L0 file left.
2. https://reviews.facebook.net/D48423 increased from 500 keys to 700 keys but in verification phase we are still querying the first 500 keys. It is a bug to fix.

Test Plan: Run the test in the same environment that fails by chance of one in tens of times. It doesn't fail after 1000 times.

Reviewers: yhchiang, IslamAbdelRahman, igor, rven, kradhakrishnan

Reviewed By: rven, kradhakrishnan

Subscribers: leveldb, dhruba

Differential Revision: https://reviews.facebook.net/D48759
main
sdong 9 years ago
parent b81b2ec25d
commit dae49e829e
  1. 9
      db/db_test.cc
  2. 2
      util/histogram.cc

@ -657,9 +657,10 @@ TEST_F(DBTest, ReadLatencyHistogramByLevel) {
DestroyAndReopen(options); DestroyAndReopen(options);
int key_index = 0; int key_index = 0;
Random rnd(301); Random rnd(301);
for (int num = 0; num < 7; num++) { for (int num = 0; num < 8; num++) {
Put("foo", "bar"); Put("foo", "bar");
GenerateNewFile(&rnd, &key_index); GenerateNewFile(&rnd, &key_index);
dbfull()->TEST_WaitForCompact();
} }
dbfull()->TEST_WaitForCompact(); dbfull()->TEST_WaitForCompact();
@ -667,7 +668,7 @@ TEST_F(DBTest, ReadLatencyHistogramByLevel) {
ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop)); ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop));
// Get() after flushes, See latency histogram tracked. // Get() after flushes, See latency histogram tracked.
for (int key = 0; key < 500; key++) { for (int key = 0; key < key_index; key++) {
Get(Key(key)); Get(Key(key));
} }
ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop)); ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop));
@ -678,7 +679,7 @@ TEST_F(DBTest, ReadLatencyHistogramByLevel) {
// Reopen and issue Get(). See thee latency tracked // Reopen and issue Get(). See thee latency tracked
Reopen(options); Reopen(options);
dbfull()->TEST_WaitForCompact(); dbfull()->TEST_WaitForCompact();
for (int key = 0; key < 500; key++) { for (int key = 0; key < key_index; key++) {
Get(Key(key)); Get(Key(key));
} }
ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop)); ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop));
@ -709,7 +710,7 @@ TEST_F(DBTest, ReadLatencyHistogramByLevel) {
ASSERT_NE(std::string::npos, prop.find("** Level 0 read latency histogram")); ASSERT_NE(std::string::npos, prop.find("** Level 0 read latency histogram"));
ASSERT_NE(std::string::npos, prop.find("** Level 1 read latency histogram")); ASSERT_NE(std::string::npos, prop.find("** Level 1 read latency histogram"));
ASSERT_EQ(std::string::npos, prop.find("** Level 2 read latency histogram")); ASSERT_EQ(std::string::npos, prop.find("** Level 2 read latency histogram"));
for (int key = 0; key < 500; key++) { for (int key = 0; key < key_index; key++) {
Get(Key(key)); Get(Key(key));
} }
ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop)); ASSERT_TRUE(dbfull()->GetProperty("rocksdb.dbstats", &prop));

@ -82,7 +82,7 @@ void HistogramImpl::Clear() {
memset(buckets_, 0, sizeof buckets_); memset(buckets_, 0, sizeof buckets_);
} }
bool HistogramImpl::Empty() { return sum_squares_ == 0; } bool HistogramImpl::Empty() { return num_ == 0; }
void HistogramImpl::Add(uint64_t value) { void HistogramImpl::Add(uint64_t value) {
const size_t index = bucketMapper.IndexForValue(value); const size_t index = bucketMapper.IndexForValue(value);

Loading…
Cancel
Save