Commit c3cf3418 authored by JINMEI Tatuya's avatar JINMEI Tatuya
Browse files

[mavericks] disable some thread-related death tests on OS X 10.9

pthread_cond_destroy() doesn't meet the test's assumption.  the mutext test
would still pass, but this is a minor case anyway, so it's probably okay
to just disable both rather introduce more macro variables.
parent f2f02dba
......@@ -218,6 +218,7 @@ AC_HELP_STRING([--disable-setproctitle-check],
# OS dependent configuration
SET_ENV_LIBRARY_PATH=no
ENV_LIBRARY_PATH=LD_LIBRARY_PATH
bind10_undefined_pthread_behavior=no
case "$host" in
*-solaris*)
......@@ -229,13 +230,20 @@ case "$host" in
# Destroying locked mutexes, condition variables being waited
# on, etc. are undefined behavior on Solaris, so we set it as
# such here.
AC_DEFINE([HAS_UNDEFINED_PTHREAD_BEHAVIOR], [1], [Does this platform have some undefined pthreads behavior?])
bind10_undefined_pthread_behavior=yes
;;
*-apple-darwin*)
# Starting with OSX 10.7 (Lion) we must choose which IPv6 API to use
# (RFC2292 or RFC3542).
CPPFLAGS="$CPPFLAGS -D__APPLE_USE_RFC_3542"
# In OS X 10.9 (and possibly any future versions?) pthread_cond_destroy
# doesn't work as documented, which makes some of unit tests fail.
osx_version=`/usr/bin/sw_vers -productVersion`
if [ test $osx_version = "10.9" ]; then
bind10_undefined_pthread_behavior=yes
fi
# libtool doesn't work perfectly with Darwin: libtool embeds the
# final install path in dynamic libraries and our loadable python
# modules always refer to that path even if it's loaded within the
......@@ -258,6 +266,9 @@ esac
AM_CONDITIONAL(SET_ENV_LIBRARY_PATH, test $SET_ENV_LIBRARY_PATH = yes)
AC_SUBST(SET_ENV_LIBRARY_PATH)
AC_SUBST(ENV_LIBRARY_PATH)
if [ test $bind10_undefined_pthread_behavior = "yes" ]; then
AC_DEFINE([HAS_UNDEFINED_PTHREAD_BEHAVIOR], [1], [Does this platform have some undefined pthreads behavior?])
fi
# Our experiments have shown Solaris 10 has broken support for the
# IPV6_USE_MIN_MTU socket option for getsockopt(); it doesn't return the value
......
......@@ -142,8 +142,13 @@ signalAndWait(CondVar* condvar, Mutex* mutex) {
condvar->wait(*mutex);
}
#ifndef HAS_UNDEFINED_PTHREAD_BEHAVIOR
TEST_F(CondVarTest, destroyWhileWait) {
TEST_F(CondVarTest,
#ifdef HAS_UNDEFINED_PTHREAD_BEHAVIOR
DISABLED_destroyWhileWait
#else
destroyWhileWait
#endif
) {
// We'll destroy a CondVar object while the thread is still waiting
// on it. This will trigger an assertion failure.
if (!isc::util::unittests::runningOnValgrind()) {
......@@ -155,7 +160,6 @@ TEST_F(CondVarTest, destroyWhileWait) {
}, "");
}
}
#endif // !HAS_UNDEFINED_PTHREAD_BEHAVIOR
#ifdef ENABLE_DEBUG
......
......@@ -86,9 +86,14 @@ TEST(MutexTest, lockNonBlocking) {
#endif // ENABLE_DEBUG
#ifndef HAS_UNDEFINED_PTHREAD_BEHAVIOR
// Destroying a locked mutex is a bad idea as well
TEST(MutexTest, destroyLocked) {
TEST(MutexTest,
#ifdef HAS_UNDEFINED_PTHREAD_BEHAVIOR
DISABLED_destroyLocked
#else
destroyLocked
#endif
) {
if (!isc::util::unittests::runningOnValgrind()) {
EXPECT_DEATH_IF_SUPPORTED({
Mutex* mutex = new Mutex;
......@@ -99,7 +104,6 @@ TEST(MutexTest, destroyLocked) {
}, "");
}
}
#endif // !HAS_UNDEFINED_PTHREAD_BEHAVIOR
// In this test, we try to check if a mutex really locks. We could try that
// with a deadlock, but that's not practical (the test would not end).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment