From a3a45b1c0f6c2dc5fd9916505e85c42114017e97 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Fri, 15 May 2020 14:13:43 +0100 Subject: [PATCH] test/librbd: improve TestLibRBD.QuiesceWatchTimeout On teuthology 13 sec timeout was not always enough for rbd_quiesce_notification_attempts = 2: if a socket failure is injected after quiesce notification is sent the request is resent and the notifier timeout (and as a result the next notification attempt) is delayed. Signed-off-by: Mykola Golub --- src/test/librbd/test_librbd.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/test/librbd/test_librbd.cc b/src/test/librbd/test_librbd.cc index e0b1b2de1c1..a3e539fd54b 100644 --- a/src/test/librbd/test_librbd.cc +++ b/src/test/librbd/test_librbd.cc @@ -8383,6 +8383,8 @@ TEST_F(TestLibRBD, QuiesceWatchTimeout) ASSERT_EQ(0, image.quiesce_watch(&watcher, &handle)); + std::cerr << "test quiesce is not long enough to time out" << std::endl; + thread quiesce1([&image, &watcher]() { watcher.wait_for_quiesce_count(1); sleep(8); @@ -8395,13 +8397,20 @@ TEST_F(TestLibRBD, QuiesceWatchTimeout) watcher.wait_for_unquiesce_count(1); ASSERT_EQ(1U, watcher.unquiesce_count); - thread quiesce2([&image, &watcher]() { + std::cerr << "test quiesce is timed out" << std::endl; + + bool timed_out = false; + thread quiesce2([&image, &watcher, &timed_out]() { watcher.wait_for_quiesce_count(2); - sleep(13); + for (int i = 0; !timed_out && i < 60; i++) { + std::cerr << "waiting for timed out ... " << i << std::endl; + sleep(1); + } image.quiesce_complete(); }); ASSERT_EQ(-ETIMEDOUT, image.snap_create("snap2")); + timed_out = true; quiesce2.join(); ASSERT_EQ(2U, watcher.quiesce_count); watcher.wait_for_unquiesce_count(2); @@ -8412,6 +8421,8 @@ TEST_F(TestLibRBD, QuiesceWatchTimeout) image.quiesce_complete(); }); + std::cerr << "test retry succeeds" << std::endl; + ASSERT_EQ(0, image.snap_create("snap2")); quiesce3.join(); ASSERT_EQ(3U, watcher.quiesce_count); -- 2.39.5