1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 * Ceph - scalable distributed file system
8 #include <common/Mutex.h>
9 #include "gtest/gtest.h"
10 #include "common/ceph_context.h"
11 #include "common/config.h"
12 #include "include/coredumpctl.h"
15 * Override normal ceph assert.
16 * It is needed to prevent hang when we assert() and THEN still wait on lock().
20 void __ceph_assert_fail(const char *assertion, const char *file, int line,
28 static CephContext* cct = nullptr;
30 cct = new CephContext(0);
31 lockdep_register_ceph_context(cct);
35 TEST(Mutex, NormalAsserts) {
36 Mutex* m = new Mutex("Normal",false);
38 EXPECT_THROW(m->Lock(), int);
41 TEST(Mutex, RecursiveWithLockdep) {
44 Mutex* m = new Mutex("Recursive1",true);
52 TEST(Mutex, RecursiveWithoutLockdep) {
55 Mutex* m = new Mutex("Recursive2",true);
63 TEST(Mutex, DeleteLocked) {
64 Mutex* m = new Mutex("Recursive3",false);
67 EXPECT_DEATH(delete m,".*");