Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F12428713
reverselock_tests.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
1 KB
Subscribers
None
reverselock_tests.cpp
View Options
// Copyright (c) 2015 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include
"reverselock.h"
#include
"test/test_bitcoin.h"
#include
<boost/test/unit_test.hpp>
BOOST_FIXTURE_TEST_SUITE
(
reverselock_tests
,
BasicTestingSetup
)
BOOST_AUTO_TEST_CASE
(
reverselock_basics
)
{
boost
::
mutex
mutex
;
boost
::
unique_lock
<
boost
::
mutex
>
lock
(
mutex
);
BOOST_CHECK
(
lock
.
owns_lock
());
{
reverse_lock
<
boost
::
unique_lock
<
boost
::
mutex
>
>
rlock
(
lock
);
BOOST_CHECK
(
!
lock
.
owns_lock
());
}
BOOST_CHECK
(
lock
.
owns_lock
());
}
BOOST_AUTO_TEST_CASE
(
reverselock_errors
)
{
boost
::
mutex
mutex
;
boost
::
unique_lock
<
boost
::
mutex
>
lock
(
mutex
);
// Make sure trying to reverse lock an unlocked lock fails
lock
.
unlock
();
BOOST_CHECK
(
!
lock
.
owns_lock
());
bool
failed
=
false
;
try
{
reverse_lock
<
boost
::
unique_lock
<
boost
::
mutex
>
>
rlock
(
lock
);
}
catch
(...)
{
failed
=
true
;
}
BOOST_CHECK
(
failed
);
BOOST_CHECK
(
!
lock
.
owns_lock
());
// Make sure trying to lock a lock after it has been reverse locked fails
failed
=
false
;
bool
locked
=
false
;
lock
.
lock
();
BOOST_CHECK
(
lock
.
owns_lock
());
try
{
reverse_lock
<
boost
::
unique_lock
<
boost
::
mutex
>
>
rlock
(
lock
);
lock
.
lock
();
locked
=
true
;
}
catch
(...)
{
failed
=
true
;
}
BOOST_CHECK
(
locked
&&
failed
);
BOOST_CHECK
(
lock
.
owns_lock
());
}
BOOST_AUTO_TEST_SUITE_END
()
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sun, Dec 29, 19:23 (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4844928
Default Alt Text
reverselock_tests.cpp (1 KB)
Attached To
rSTAGING Bitcoin ABC staging
Event Timeline
Log In to Comment