threads: convert unittests for FAIL/PASS APIs

Ticket: #6327
pull/14135/head
Olusegun Fajobi 10 months ago committed by Victor Julien
parent 232f0572e0
commit 52715a00a0

@ -39,15 +39,14 @@ thread_local char t_thread_name[THREAD_NAME_LEN + 1];
static int ThreadMacrosTest01Mutex(void)
{
SCMutex mut;
int r = 0;
r |= SCMutexInit(&mut, NULL);
r |= SCMutexLock(&mut);
r |= (SCMutexTrylock(&mut) == EBUSY)? 0 : 1;
r |= SCMutexIsLocked(&mut) ? 0 : 1;
r |= SCMutexUnlock(&mut);
r |= SCMutexDestroy(&mut);
FAIL_IF(SCMutexInit(&mut, NULL) != 0);
FAIL_IF(SCMutexLock(&mut) != 0);
FAIL_IF(SCMutexTrylock(&mut) != EBUSY);
FAIL_IF(SCMutexIsLocked(&mut) == 0);
FAIL_IF(SCMutexUnlock(&mut) != 0);
FAIL_IF(SCMutexDestroy(&mut) != 0);
return (r == 0)? 1 : 0;
PASS;
}
/**
@ -68,18 +67,17 @@ static int ThreadMacrosTest01Mutex(void)
static int ThreadMacrosTest02Spinlocks(void)
{
SCSpinlock mut;
int r = 0;
r |= SCSpinInit(&mut, 0);
r |= SCSpinLock(&mut);
FAIL_IF(SCSpinInit(&mut, 0) != 0);
FAIL_IF(SCSpinLock(&mut) != 0);
#ifndef __OpenBSD__
r |= (SCSpinTrylock(&mut) == EBUSY)? 0 : 1;
FAIL_IF(SCSpinTrylock(&mut) != EBUSY);
#else
r |= (SCSpinTrylock(&mut) == EDEADLK)? 0 : 1;
FAIL_IF(SCSpinTrylock(&mut) != EDEADLK);
#endif
r |= SCSpinUnlock(&mut);
r |= SCSpinDestroy(&mut);
FAIL_IF(SCSpinUnlock(&mut) != 0);
FAIL_IF(SCSpinDestroy(&mut) != 0);
return (r == 0)? 1 : 0;
PASS;
}
/**
@ -88,20 +86,19 @@ static int ThreadMacrosTest02Spinlocks(void)
static int ThreadMacrosTest03RWLocks(void)
{
SCRWLock rwl_write;
int r = 0;
r |= SCRWLockInit(&rwl_write, NULL);
r |= SCRWLockWRLock(&rwl_write);
FAIL_IF(SCRWLockInit(&rwl_write, NULL) != 0);
FAIL_IF(SCRWLockWRLock(&rwl_write) != 0);
/* OS X/macOS 10.10 (Yosemite) and newer return EDEADLK. Older versions
* and other tested OS's return EBUSY. */
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__>=101000
r |= (SCRWLockTryWRLock(&rwl_write) == EDEADLK)? 0 : 1;
FAIL_IF(SCRWLockTryWRLock(&rwl_write) != EDEADLK);
#else
r |= (SCRWLockTryWRLock(&rwl_write) == EBUSY)? 0 : 1;
FAIL_IF(SCRWLockTryWRLock(&rwl_write) != EBUSY);
#endif
r |= SCRWLockUnlock(&rwl_write);
r |= SCRWLockDestroy(&rwl_write);
FAIL_IF(SCRWLockUnlock(&rwl_write) != 0);
FAIL_IF(SCRWLockDestroy(&rwl_write) != 0);
return (r == 0)? 1 : 0;
PASS;
}
/**
@ -110,14 +107,13 @@ static int ThreadMacrosTest03RWLocks(void)
static int ThreadMacrosTest04RWLocks(void)
{
SCRWLock rwl_read;
int r = 0;
r |= SCRWLockInit(&rwl_read, NULL);
r |= SCRWLockRDLock(&rwl_read);
r |= (SCRWLockTryWRLock(&rwl_read) == EBUSY)? 0 : 1;
r |= SCRWLockUnlock(&rwl_read);
r |= SCRWLockDestroy(&rwl_read);
FAIL_IF(SCRWLockInit(&rwl_read, NULL) != 0);
FAIL_IF(SCRWLockRDLock(&rwl_read) != 0);
FAIL_IF(SCRWLockTryWRLock(&rwl_read) != EBUSY);
FAIL_IF(SCRWLockUnlock(&rwl_read) != 0);
FAIL_IF(SCRWLockDestroy(&rwl_read) != 0);
return (r == 0)? 1 : 0;
PASS;
}
#if 0 // broken on OSX

Loading…
Cancel
Save