From 85b1b5e1b90cf1eb13224b89832e41758d1e0c46 Mon Sep 17 00:00:00 2001 From: Igor Canadi Date: Thu, 27 Feb 2014 10:29:13 -0800 Subject: [PATCH] [CF] WaitForFlush() instead of sleeping Summary: If we sleep for 300ms the test fails in valgrind because it takes more than 300ms to flush. This way we WaitForFlush() when we're expecting flush, but still sleep and check if the flush happens even though it's not supposed to. Test Plan: notest Reviewers: dhruba, haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D16401 --- db/column_family_test.cc | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/db/column_family_test.cc b/db/column_family_test.cc index 3dc5c0838..0b049a673 100644 --- a/db/column_family_test.cc +++ b/db/column_family_test.cc @@ -214,6 +214,8 @@ class ColumnFamilyTest { } int CountLiveLogFiles() { + int micros_wait_for_log_deletion = 20000; + env_->SleepForMicroseconds(micros_wait_for_log_deletion); int ret = 0; VectorLogPtr wal_files; Status s; @@ -467,7 +469,6 @@ TEST(ColumnFamilyTest, FlushTest) { TEST(ColumnFamilyTest, LogDeletionTest) { column_family_options_.write_buffer_size = 100000; // 100KB Open(); - int micros_wait_for_log_deletion = 20000; CreateColumnFamilies({"one", "two", "three", "four"}); // Each bracket is one log file. if number is in (), it means // we don't need it anymore (it's been flushed) @@ -480,63 +481,52 @@ TEST(ColumnFamilyTest, LogDeletionTest) { PutRandomData(1, 1000, 100); WaitForFlush(1); // [0, (1)] [1] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 2); PutRandomData(0, 1, 100); // [0, (1)] [0, 1] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 2); PutRandomData(2, 1, 100); // [0, (1)] [0, 1, 2] PutRandomData(2, 1000, 100); WaitForFlush(2); // [0, (1)] [0, 1, (2)] [2] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 3); PutRandomData(2, 1000, 100); WaitForFlush(2); // [0, (1)] [0, 1, (2)] [(2)] [2] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 4); PutRandomData(3, 1, 100); // [0, (1)] [0, 1, (2)] [(2)] [2, 3] PutRandomData(1, 1, 100); // [0, (1)] [0, 1, (2)] [(2)] [1, 2, 3] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 4); PutRandomData(1, 1000, 100); WaitForFlush(1); // [0, (1)] [0, (1), (2)] [(2)] [(1), 2, 3] [1] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 5); PutRandomData(0, 1000, 100); WaitForFlush(0); // [(0), (1)] [(0), (1), (2)] [(2)] [(1), 2, 3] [1, (0)] [0] // delete obsolete logs --> // [(1), 2, 3] [1, (0)] [0] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 3); PutRandomData(0, 1000, 100); WaitForFlush(0); // [(1), 2, 3] [1, (0)], [(0)] [0] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 4); PutRandomData(1, 1000, 100); WaitForFlush(1); // [(1), 2, 3] [(1), (0)] [(0)] [0, (1)] [1] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 5); PutRandomData(2, 1000, 100); WaitForFlush(2); // [(1), (2), 3] [(1), (0)] [(0)] [0, (1)] [1, (2)], [2] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 6); PutRandomData(3, 1000, 100); WaitForFlush(3); // [(1), (2), (3)] [(1), (0)] [(0)] [0, (1)] [1, (2)], [2, (3)] [3] // delete obsolete logs --> // [0, (1)] [1, (2)], [2, (3)] [3] - env_->SleepForMicroseconds(micros_wait_for_log_deletion); ASSERT_EQ(CountLiveLogFiles(), 4); Close(); } @@ -566,9 +556,9 @@ TEST(ColumnFamilyTest, DifferentWriteBufferSizes) { Reopen({default_cf, one, two, three}); - int micros_wait_for_flush = 300000; + int micros_wait_for_flush = 10000; PutRandomData(0, 100, 1000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(0); AssertNumberOfImmutableMemtables({0, 0, 0, 0}); ASSERT_EQ(CountLiveLogFiles(), 1); PutRandomData(1, 200, 1000); @@ -596,15 +586,15 @@ TEST(ColumnFamilyTest, DifferentWriteBufferSizes) { AssertNumberOfImmutableMemtables({0, 1, 2, 3}); ASSERT_EQ(CountLiveLogFiles(), 7); PutRandomData(0, 100, 1000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(0); AssertNumberOfImmutableMemtables({0, 1, 2, 3}); ASSERT_EQ(CountLiveLogFiles(), 8); PutRandomData(2, 100, 10000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(2); AssertNumberOfImmutableMemtables({0, 1, 0, 3}); ASSERT_EQ(CountLiveLogFiles(), 9); PutRandomData(3, 90, 1000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(3); AssertNumberOfImmutableMemtables({0, 1, 0, 0}); ASSERT_EQ(CountLiveLogFiles(), 10); PutRandomData(3, 90, 1000); @@ -612,23 +602,23 @@ TEST(ColumnFamilyTest, DifferentWriteBufferSizes) { AssertNumberOfImmutableMemtables({0, 1, 0, 1}); ASSERT_EQ(CountLiveLogFiles(), 11); PutRandomData(1, 200, 1000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(1); AssertNumberOfImmutableMemtables({0, 0, 0, 1}); ASSERT_EQ(CountLiveLogFiles(), 5); PutRandomData(3, 90*6, 1000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(3); AssertNumberOfImmutableMemtables({0, 0, 0, 0}); ASSERT_EQ(CountLiveLogFiles(), 12); PutRandomData(0, 100, 1000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(0); AssertNumberOfImmutableMemtables({0, 0, 0, 0}); ASSERT_EQ(CountLiveLogFiles(), 12); PutRandomData(2, 3*100, 10000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(2); AssertNumberOfImmutableMemtables({0, 0, 0, 0}); ASSERT_EQ(CountLiveLogFiles(), 12); PutRandomData(1, 2*200, 1000); - env_->SleepForMicroseconds(micros_wait_for_flush); + WaitForFlush(1); AssertNumberOfImmutableMemtables({0, 0, 0, 0}); ASSERT_EQ(CountLiveLogFiles(), 7); Close();