diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-12-30 11:54:09 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-12-30 11:54:09 +0000 |
| commit | b4c64ad90b81d2a779786b7edb4c5c6dd28cc57d (patch) | |
| tree | 13f237c02db4d1894ab06884d1b739344766bede /test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking | |
| parent | 61b9a7258a7693d7f3674a5a1daf7b036ff1d382 (diff) | |
Notes
Diffstat (limited to 'test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking')
5 files changed, 27 insertions, 32 deletions
diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp index f1500652badd..5c3513c98e03 100644 --- a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp @@ -7,7 +7,9 @@ // //===----------------------------------------------------------------------===// // +// XFAIL: libcpp-no-exceptions // UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: c++98, c++03, c++11 // <shared_mutex> @@ -21,7 +23,7 @@ #include <cstdlib> #include <cassert> -#if _LIBCPP_STD_VER > 11 +#include "test_macros.h" std::shared_timed_mutex m; @@ -31,6 +33,18 @@ typedef Clock::duration duration; typedef std::chrono::milliseconds ms; typedef std::chrono::nanoseconds ns; +ms WaitTime = ms(250); + +// Thread sanitizer causes more overhead and will sometimes cause this test +// to fail. To prevent this we give Thread sanitizer more time to complete the +// test. +#if !defined(TEST_HAS_SANITIZERS) +ms Tolerance = ms(25); +#else +ms Tolerance = ms(25 * 5); +#endif + + void f() { std::shared_lock<std::shared_timed_mutex> lk(m, std::defer_lock); @@ -38,8 +52,8 @@ void f() lk.lock(); time_point t1 = Clock::now(); assert(lk.owns_lock() == true); - ns d = t1 - t0 - ms(250); - assert(d < ms(25)); // within 25ms + ns d = t1 - t0 - WaitTime; + assert(d < Tolerance); // within tolerance try { lk.lock(); @@ -62,18 +76,14 @@ void f() } } -#endif // _LIBCPP_STD_VER > 11 - int main() { -#if _LIBCPP_STD_VER > 11 m.lock(); std::vector<std::thread> v; for (int i = 0; i < 5; ++i) v.push_back(std::thread(f)); - std::this_thread::sleep_for(ms(250)); + std::this_thread::sleep_for(WaitTime); m.unlock(); for (auto& t : v) t.join(); -#endif // _LIBCPP_STD_VER > 11 } diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp index 82b1ff865053..01693c77ea39 100644 --- a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock.pass.cpp @@ -7,7 +7,9 @@ // //===----------------------------------------------------------------------===// // +// XFAIL: libcpp-no-exceptions // UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: c++98, c++03, c++11 // <shared_mutex> @@ -18,8 +20,6 @@ #include <shared_mutex> #include <cassert> -#if _LIBCPP_STD_VER > 11 - bool try_lock_called = false; struct mutex @@ -34,11 +34,9 @@ struct mutex mutex m; -#endif // _LIBCPP_STD_VER > 11 - int main() { -#if _LIBCPP_STD_VER > 11 + std::shared_lock<mutex> lk(m, std::defer_lock); assert(lk.try_lock() == true); assert(try_lock_called == true); @@ -66,5 +64,4 @@ int main() { assert(e.code().value() == EPERM); } -#endif // _LIBCPP_STD_VER > 11 } diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp index 5867465a6626..852a94eb65ec 100644 --- a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_for.pass.cpp @@ -7,7 +7,9 @@ // //===----------------------------------------------------------------------===// // +// XFAIL: libcpp-no-exceptions // UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: c++98, c++03, c++11 // <shared_mutex> @@ -19,8 +21,6 @@ #include <shared_mutex> #include <cassert> -#if _LIBCPP_STD_VER > 11 - bool try_lock_for_called = false; typedef std::chrono::milliseconds ms; @@ -39,11 +39,8 @@ struct mutex mutex m; -#endif // _LIBCPP_STD_VER > 11 - int main() { -#if _LIBCPP_STD_VER > 11 std::shared_lock<mutex> lk(m, std::defer_lock); assert(lk.try_lock_for(ms(5)) == true); assert(try_lock_for_called == true); @@ -71,5 +68,4 @@ int main() { assert(e.code().value() == EPERM); } -#endif // _LIBCPP_STD_VER > 11 } diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp index 9d38983be724..31574afd7d8f 100644 --- a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/try_lock_until.pass.cpp @@ -7,7 +7,9 @@ // //===----------------------------------------------------------------------===// // +// XFAIL: libcpp-no-exceptions // UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: c++98, c++03, c++11 // <shared_mutex> @@ -19,8 +21,6 @@ #include <shared_mutex> #include <cassert> -#if _LIBCPP_STD_VER > 11 - bool try_lock_until_called = false; struct mutex @@ -38,11 +38,8 @@ struct mutex mutex m; -#endif // _LIBCPP_STD_VER > 11 - int main() { -#if _LIBCPP_STD_VER > 11 typedef std::chrono::steady_clock Clock; std::shared_lock<mutex> lk(m, std::defer_lock); assert(lk.try_lock_until(Clock::now()) == true); @@ -71,5 +68,4 @@ int main() { assert(e.code().value() == EPERM); } -#endif // _LIBCPP_STD_VER > 11 } diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp index eb08a45cde6e..6a7385ed42a6 100644 --- a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/unlock.pass.cpp @@ -7,7 +7,9 @@ // //===----------------------------------------------------------------------===// // +// XFAIL: libcpp-no-exceptions // UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: c++98, c++03, c++11 // <shared_mutex> @@ -18,8 +20,6 @@ #include <shared_mutex> #include <cassert> -#if _LIBCPP_STD_VER > 11 - bool unlock_called = false; struct mutex @@ -30,11 +30,8 @@ struct mutex mutex m; -#endif // _LIBCPP_STD_VER > 11 - int main() { -#if _LIBCPP_STD_VER > 11 std::shared_lock<mutex> lk(m); lk.unlock(); assert(unlock_called == true); @@ -58,5 +55,4 @@ int main() { assert(e.code().value() == EPERM); } -#endif // _LIBCPP_STD_VER > 11 } |
