Changeset View
Changeset View
Standalone View
Standalone View
src/test/reverselock_tests.cpp
Show All 40 Lines | |||||
BOOST_AUTO_TEST_CASE(reverselock_errors) { | BOOST_AUTO_TEST_CASE(reverselock_errors) { | ||||
Mutex mutex2; | Mutex mutex2; | ||||
Mutex mutex; | Mutex mutex; | ||||
WAIT_LOCK(mutex2, lock2); | WAIT_LOCK(mutex2, lock2); | ||||
WAIT_LOCK(mutex, lock); | WAIT_LOCK(mutex, lock); | ||||
#ifdef DEBUG_LOCKORDER | #ifdef DEBUG_LOCKORDER | ||||
bool prev = g_debug_lockorder_abort; | |||||
g_debug_lockorder_abort = false; | |||||
// Make sure trying to reverse lock a previous lock fails | // Make sure trying to reverse lock a previous lock fails | ||||
try { | BOOST_CHECK_EXCEPTION( | ||||
REVERSE_LOCK(lock2); | REVERSE_LOCK(lock2), std::logic_error, | ||||
BOOST_CHECK(false); // REVERSE_LOCK(lock2) succeeded | HasReason("lock2 was not most recent critical section locked")); | ||||
} catch (...) { | |||||
} | |||||
BOOST_CHECK(lock2.owns_lock()); | BOOST_CHECK(lock2.owns_lock()); | ||||
g_debug_lockorder_abort = prev; | |||||
#endif | #endif | ||||
// Make sure trying to reverse lock an unlocked lock fails | // Make sure trying to reverse lock an unlocked lock fails | ||||
lock.unlock(); | lock.unlock(); | ||||
BOOST_CHECK(!lock.owns_lock()); | BOOST_CHECK(!lock.owns_lock()); | ||||
bool failed = false; | bool failed = false; | ||||
Show All 25 Lines |