From 9613b94f2fba45e891a356b498620761a30c6142 Mon Sep 17 00:00:00 2001 From: riz Date: Mon, 21 Feb 2011 21:43:41 +0000 Subject: [PATCH] mutex2/mutex3 are expected to fail on powerpc because of PR port-powerpc/44387. XXX the ugly sleep at the end is because ATF will mark an un-triggered race condition (ie, the test passes unexpectedly) as a test failure otherwise. --- tests/lib/libpthread/t_mutex.c | 38 +++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/tests/lib/libpthread/t_mutex.c b/tests/lib/libpthread/t_mutex.c index eef6c66ea275..e9075cef4cc8 100644 --- a/tests/lib/libpthread/t_mutex.c +++ b/tests/lib/libpthread/t_mutex.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_mutex.c,v 1.3 2011/02/20 14:37:44 jmmv Exp $ */ +/* $NetBSD: t_mutex.c,v 1.4 2011/02/21 21:43:41 riz Exp $ */ /* * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -29,13 +29,15 @@ #include __COPYRIGHT("@(#) Copyright (c) 2008\ The NetBSD Foundation, inc. All rights reserved."); -__RCSID("$NetBSD: t_mutex.c,v 1.3 2011/02/20 14:37:44 jmmv Exp $"); +__RCSID("$NetBSD: t_mutex.c,v 1.4 2011/02/21 21:43:41 riz Exp $"); #include #include +#include #include #include +#include #include "h_common.h" @@ -116,17 +118,24 @@ ATF_TC(mutex2); ATF_TC_HEAD(mutex2, tc) { atf_tc_set_md_var(tc, "descr", "Checks mutexes"); + atf_tc_set_md_var(tc, "timeout", "40"); } ATF_TC_BODY(mutex2, tc) { + const char *m_arch; int count, count2; pthread_t new; void *joinval; printf("1: Mutex-test 2\n"); - PTHREAD_REQUIRE(pthread_mutex_init(&mutex, NULL)); + m_arch = atf_config_get("atf_arch"); + if (strcmp(m_arch, "powerpc") == 0) { + atf_tc_expect_timeout("PR port-powerpc/44387"); + } + PTHREAD_REQUIRE(pthread_mutex_init(&mutex, NULL)); + global_x = 0; count = count2 = 10000000; @@ -149,6 +158,14 @@ ATF_TC_BODY(mutex2, tc) printf("1: Thread joined. X was %d. Return value (long) was %ld\n", global_x, (long)joinval); ATF_REQUIRE_EQ(global_x, 20000000); + + /* XXX force a timeout in ppc case since an un-triggered race + otherwise looks like a "failure" */ + if (strcmp(m_arch, "powerpc") == 0) { + /* We sleep for longer than the timeout to make ATF not + complain about unexpected success */ + sleep(41); + } } static void * @@ -172,15 +189,22 @@ ATF_TC_HEAD(mutex3, tc) { atf_tc_set_md_var(tc, "descr", "Checks mutexes using a static " "initializer"); + atf_tc_set_md_var(tc, "timeout", "40"); } ATF_TC_BODY(mutex3, tc) { + const char *m_arch; int count, count2; pthread_t new; void *joinval; printf("1: Mutex-test 3\n"); + m_arch = atf_config_get("atf_arch"); + if (strcmp(m_arch, "powerpc") == 0) { + atf_tc_expect_timeout("PR port-powerpc/44387"); + } + global_x = 0; count = count2 = 10000000; @@ -203,6 +227,14 @@ ATF_TC_BODY(mutex3, tc) printf("1: Thread joined. X was %d. Return value (long) was %ld\n", global_x, (long)joinval); ATF_REQUIRE_EQ(global_x, 20000000); + + /* XXX force a timeout in ppc case since an un-triggered race + otherwise looks like a "failure" */ + if (strcmp(m_arch, "powerpc") == 0) { + /* We sleep for longer than the timeout to make ATF not + complain about unexpected success */ + sleep(41); + } } static void *