1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
/**
* @file Bug_3541_Regression_Test.cpp
*
* $Id: Bug_3541_Regression_Test.cpp 91673 2010-09-08 18:49:47Z johnnyw $
*
* Reproduces the problems reported in bug 3541:
* http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=3541
*
* @author Bill Rizzi <rizzi@softserv.com>
*/
#include "ace/Event.h"
#include "ace/Mutex.h"
#include "ace/Semaphore.h"
#include "ace/OS_NS_errno.h"
#include "ace/SString.h"
#include "test_config.h"
int
run_main (int, ACE_TCHAR *[])
{
ACE_START_TEST (ACE_TEXT ("Bug_3541_Regression_Test"));
int ret = 0;
#if defined(ACE_WIN32) && !defined (ACE_USES_WINCE_SEMA_SIMULATION)
int lastError;
// ACE_OS::event_init()
const ACE_TCHAR *eventName = ACE_TEXT ("Bug3541_Event");
ACE_Event event0(0, // int manual_reset = 0
0, // int initial_state = 0
USYNC_PROCESS, // int type = USYNC_THREAD
eventName); // const ACE_TCHAR *name = 0
lastError = ACE_OS::last_error();
ACE_event_t eventHandle = event0.handle();
if ((eventHandle == ACE_INVALID_HANDLE) ||
(lastError != 0))
{
ret = -1;
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("ACE_Event(%s) failed - handle %d lastError %d\n"),
eventName, eventHandle, lastError));
}
else
{
ACE_Event event1(0, // int manual_reset = 0
0, // int initial_state = 0
USYNC_PROCESS, // int type = USYNC_THREAD
eventName); // const ACE_TCHAR *name = 0
lastError = ACE_OS::last_error();
eventHandle = event1.handle();
if ((eventHandle == ACE_INVALID_HANDLE) ||
(lastError != ERROR_ALREADY_EXISTS))
{
ret = -1;
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("ACE_Event(%s) failed - handle %d lastError %d\n"),
eventName, eventHandle, lastError));
}
}
// ACE_OS::sema_init
const ACE_TCHAR *semaphoreName = ACE_TEXT ("Bug3541_Semaphore");
ACE_Semaphore semaphore0(1, // int count = 1
USYNC_PROCESS, // int type = USYNC_THREAD
semaphoreName); // const ACE_TCHAR *name = 0
lastError = ACE_OS::last_error();
const ACE_sema_t &semaphoreLock = semaphore0.lock();
if ((semaphoreLock == ACE_INVALID_HANDLE) ||
(lastError != 0))
{
ret = -1;
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("ACE_Semaphore(%s) failed - lock %d lastError %d\n"),
semaphoreName, semaphoreLock, lastError));
}
else
{
ACE_Semaphore semaphore1(1, // int count = 1
USYNC_PROCESS, // int type = USYNC_THREAD
semaphoreName); // const ACE_TCHAR *name = 0
lastError = ACE_OS::last_error();
const ACE_sema_t &semaphoreLock = semaphore1.lock();
if ((semaphoreLock == ACE_INVALID_HANDLE) ||
(lastError != ERROR_ALREADY_EXISTS))
{
ret = -1;
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("ACE_Semaphore(%s) failed - lock %d lastError %d\n"),
semaphoreName, semaphoreLock, lastError));
}
}
// ACE_OS::mutex_init()
const ACE_TCHAR *mutexName = ACE_TEXT ("Bug3541_Mutex");
ACE_Mutex mutex0(USYNC_PROCESS, // int type = USYNC_THREAD
mutexName); // const ACE_TCHAR *name = 0
lastError = ACE_OS::last_error();
const ACE_mutex_t &mutexLock = mutex0.lock();
if ((mutexLock.proc_mutex_ == ACE_INVALID_HANDLE) ||
(lastError != 0))
{
ret = -1;
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("ACE_Mutex(%s) failed - lock %d lastError %d\n"),
mutexName, mutexLock, lastError));
}
else
{
ACE_Mutex mutex1(USYNC_PROCESS, // int type = USYNC_THREAD
mutexName); // const ACE_TCHAR *name = 0
lastError = ACE_OS::last_error();
const ACE_mutex_t &mutexLock = mutex1.lock();
if ((mutexLock.proc_mutex_ == ACE_INVALID_HANDLE) ||
(lastError != ERROR_ALREADY_EXISTS))
{
ret = -1;
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("ACE_Mutex(%s) failed - lock %d lastError %d\n"),
mutexName, mutexLock, lastError));
}
}
#endif
ACE_END_TEST;
return ret;
}
|