From 7a275769b6a281eaec1a659975ec50bfe847e679 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 31 Mar 2017 10:06:42 -0400 Subject: [PATCH] ceph_test_librados_api_misc: fix stupid LibRadosMiscConnectFailure.ConnectFailure test Sometimes the cond doesn't time out and it wakes up instead. Just repeat the test many times to ensure that at least once it times out (usually it doesn't; it's pretty infrequent that it doesn't). Fixes: http://tracker.ceph.com/issues/15368 Signed-off-by: Sage Weil (cherry picked from commit 8bc197400d94ee2716d3f2fa454247379a676cf9) --- src/test/librados/misc.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/test/librados/misc.cc b/src/test/librados/misc.cc index 7bb001bcdc5..c388ec0fc3f 100644 --- a/src/test/librados/misc.cc +++ b/src/test/librados/misc.cc @@ -66,8 +66,18 @@ TEST(LibRadosMiscConnectFailure, ConnectFailure) { ASSERT_EQ(-ENOTCONN, rados_monitor_log(cluster, "error", test_rados_log_cb, NULL)); - ASSERT_NE(0, rados_connect(cluster)); - ASSERT_NE(0, rados_connect(cluster)); + // try this a few times; sometimes we don't schedule fast enough for the + // cond to time out + int r; + for (unsigned i=0; i<16; ++i) { + cout << i << std::endl; + r = rados_connect(cluster); + if (r < 0) + break; // yay, we timed out + // try again + rados_shutdown(cluster); + } + ASSERT_NE(0, r); rados_shutdown(cluster); } -- 2.47.3