summaryrefslogtreecommitdiff
path: root/ACE/tests/Bug_3541_Regression_Test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/tests/Bug_3541_Regression_Test.cpp')
-rw-r--r--ACE/tests/Bug_3541_Regression_Test.cpp159
1 files changed, 159 insertions, 0 deletions
diff --git a/ACE/tests/Bug_3541_Regression_Test.cpp b/ACE/tests/Bug_3541_Regression_Test.cpp
new file mode 100644
index 00000000000..f7626bca55c
--- /dev/null
+++ b/ACE/tests/Bug_3541_Regression_Test.cpp
@@ -0,0 +1,159 @@
+/**
+ * @file Bug_3541_Regression_Test.cpp
+ *
+ * $Id$
+ *
+ * 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;
+}