summaryrefslogtreecommitdiffstats
path: root/src/test/cls_lock/test_cls_lock.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/cls_lock/test_cls_lock.cc')
-rw-r--r--src/test/cls_lock/test_cls_lock.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/test/cls_lock/test_cls_lock.cc b/src/test/cls_lock/test_cls_lock.cc
index 39d3cebde10..ead03bb2183 100644
--- a/src/test/cls_lock/test_cls_lock.cc
+++ b/src/test/cls_lock/test_cls_lock.cc
@@ -16,6 +16,7 @@
#include <errno.h>
#include "include/types.h"
+#include "common/Clock.h"
#include "msg/msg_types.h"
#include "include/rados/librados.hpp"
@@ -280,11 +281,19 @@ TEST(ClsLock, TestLockDuration) {
string oid = "foo";
Lock l("lock");
- l.set_duration(utime_t(5, 0));
+ utime_t dur(5, 0);
+ l.set_duration(dur);
+ utime_t start = ceph_clock_now(NULL);
ASSERT_EQ(0, l.lock_exclusive(&ioctx, oid));
- ASSERT_EQ(-EEXIST, l.lock_exclusive(&ioctx, oid));
+ int r = l.lock_exclusive(&ioctx, oid);
+ if (r == 0) {
+ // it's possible to get success if we were just really slow...
+ ASSERT_TRUE(ceph_clock_now(NULL) > start + dur);
+ } else {
+ ASSERT_EQ(-EEXIST, r);
+ }
- sleep(5);
+ sleep(dur.sec());
ASSERT_EQ(0, l.lock_exclusive(&ioctx, oid));
ASSERT_EQ(0, destroy_one_pool_pp(pool_name, cluster));