]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_test_librados_api_misc: fix stupid LibRadosMiscConnectFailure.ConnectFailure... 14763/head
authorSage Weil <sage@redhat.com>
Fri, 31 Mar 2017 14:06:42 +0000 (10:06 -0400)
committerNathan Cutler <ncutler@suse.com>
Tue, 25 Apr 2017 04:55:08 +0000 (06:55 +0200)
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 <sage@redhat.com>
(cherry picked from commit 8bc197400d94ee2716d3f2fa454247379a676cf9)

src/test/librados/misc.cc

index 3212e03ee3c38f7aad391214c16d44864e22039b..0caaef957a8ea5ec6dbc4312584031db6b876c3e 100644 (file)
@@ -67,8 +67,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);
 }