summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-10-01 06:00:55 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-10-01 06:00:55 +0000
commit0cb5531fcbbfe96e7c759d65d76da2295ce3f0e0 (patch)
tree90b518c552c54ccfe7ad6f6c674db20701e51c48
parent8a4cba1447e0999486ee508450234dd9bca2a0e8 (diff)
downloadATCD-0cb5531fcbbfe96e7c759d65d76da2295ce3f0e0.tar.gz
*** empty log message ***
-rw-r--r--tests/Thread_Pool_Reactor_Test.cpp286
-rw-r--r--tests/Thread_Pool_Reactor_Test.dsp159
-rw-r--r--tests/tests.dsw14
-rw-r--r--tests/version_tests/Thread_Pool_Reactor_Test.dsp278
4 files changed, 736 insertions, 1 deletions
diff --git a/tests/Thread_Pool_Reactor_Test.cpp b/tests/Thread_Pool_Reactor_Test.cpp
new file mode 100644
index 00000000000..c5a82e48164
--- /dev/null
+++ b/tests/Thread_Pool_Reactor_Test.cpp
@@ -0,0 +1,286 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// tests
+//
+// = FILENAME
+// Thread_Pool_Reactor_Test.cpp
+//
+// = DESCRIPTION
+// This program is a torture test of thread poll reactors.
+// It starts by spawning several server threads waiting to handle
+// events. Several other client threads are spawned right after
+// to initiate connections to server threads. Each connection
+// adds a new Svc_Handler into the TP_Reactor and sends out
+// several "requests" to the server thread. After the connection
+// is closed, the Svc_Handler is removed from the TP_Reactor.
+// Each message is treated as a separate request by the server so
+// two consecutive requests might be serviced by two different
+// threads.
+//
+// Usage: Thread_Pool_Reactor_Test [-r <hostname:port#>]
+// [-s <server thr#>] [-c <client thr#>] [-d <delay>]
+// [-i <client conn attempt#>] [-n <client request# per conn>]
+//
+// Default value:
+// <hostname:port#>: ACE_DEFAULT_RENDEZVOUS
+// <server thr#>: ACE_MAX_THREADS
+// <client thr#>: ACE_MAX_ITERATIONS
+// <client conn attempt#>: ACE_MAX_ITERATIONS
+// <client req# per conn>: ACE_MAX_THREADS
+// <delay>: 50 usec
+//
+// = AUTHOR
+// Irfan Pyarali <irfan@cs.wustl.edu>
+// Nanbor Wang <nanbor@cs.wustl.edu>
+//
+// ============================================================================
+
+#include "tests/test_config.h"
+#include "ace/SOCK_Connector.h"
+#include "ace/SOCK_Acceptor.h"
+#include "ace/Acceptor.h"
+#include "ace/Thread_Manager.h"
+#include "ace/TP_Reactor.h"
+
+ACE_RCSID(tests, Atomic_Op_Test, "$Id$")
+
+#if defined(__BORLANDC__) && __BORLANDC__ >= 0x0530
+USELIB("..\ace\aced.lib");
+//---------------------------------------------------------------------------
+#endif /* defined(__BORLANDC__) && __BORLANDC__ >= 0x0530 */
+
+#if defined (ACE_HAS_THREADS)
+
+static ASYS_TCHAR *rendezvous = ASYS_TEXT ("localhost:10010");
+static size_t svr_thrno = ACE_MAX_THREADS;
+static size_t cli_thrno = ACE_MAX_ITERATIONS;
+static size_t cli_conn_no = ACE_MAX_ITERATIONS;
+static size_t cli_req_no = ACE_MAX_THREADS;
+static int req_delay = 50;
+static int main_event_loop = 1;
+static ACE_Reactor *main_reactor = 0;
+
+void
+parse_arg (int argc, ASYS_TCHAR *argv[])
+{
+ // @@ TODO: Support command line arguments stated above.
+
+ ACE_UNUSED_ARG (argc);
+ ACE_UNUSED_ARG (argv);
+}
+
+class Acceptor_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH>
+{
+ // This class is the Svc_Handler used by <Acceptor>.
+public:
+ Acceptor_Handler (ACE_Thread_Manager *tm = 0);
+ // The default constructor makes sure the right reactor is used.
+
+protected:
+ virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE);
+ virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask = 0);
+};
+
+typedef ACE_Strategy_Acceptor <Acceptor_Handler, ACE_SOCK_ACCEPTOR> ACCEPTOR;
+typedef ACE_Thread_Pool_Strategy <Acceptor_Handler> CONCURRENCY_STRATEGY;
+typedef ACE_Svc_Handler_Pool_Strategy <Acceptor_Handler> CREATION_STRATEGY;
+
+Acceptor_Handler::Acceptor_Handler (ACE_Thread_Manager *thr_mgr)
+ : ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH> (thr_mgr)
+{
+ // Make sure we use TP_Reactor with this class (that's the whole
+ // point, right?)
+ this->reactor (ACE_Reactor::instance ());
+}
+
+int
+Acceptor_Handler::handle_input (ACE_HANDLE fd)
+{
+ ASYS_TCHAR buffer[BUFSIZ];
+ int result = -1;
+ if ((result = this->peer ().recv (buffer, BUFSIZ * sizeof (ASYS_TCHAR))) > 0)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ASYS_TEXT ("(%t) Acceptor_Handler::handle_input (fd = %x)\n"),
+ fd));
+ buffer[result] = '\0';
+ ACE_DEBUG ((LM_DEBUG,
+ ASYS_TEXT ("(%t) handle_input: input is %s\n"),
+ buffer));
+ if (ACE_OS::strcmp (buffer, ASYS_TEXT ("shutdown")) == 0)
+ {
+ main_event_loop = 0;
+ main_reactor->notify ();
+ ACE_Reactor::end_event_loop ();
+ }
+
+ return 0;
+ }
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ ASYS_TEXT ("(%t) Acceptor_Handler: end handle input (%x)\n"),
+ fd));
+
+ return -1;
+}
+
+int
+Acceptor_Handler::handle_close (ACE_HANDLE fd, ACE_Reactor_Mask)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ ASYS_TEXT ("(%t) Acceptor_Handler::handle_close (fd = %x)\n"),
+ fd));
+ this->destroy ();
+ return 0;
+}
+
+void *
+svr_worker (void *)
+{
+ // Server thread function.
+
+ int result = 0;
+
+ while (!ACE_Reactor::event_loop_done ())
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "(%t) handling events ....\n"));
+
+ result = ACE_Reactor::instance ()->handle_events ();
+ if (result < 0)
+ ACE_DEBUG ((LM_DEBUG, "(%t) Error handling events\n"));
+ }
+
+ ACE_DEBUG ((LM_DEBUG,
+ "(%t) I am done handling events. Bye, bye\n"));
+
+ return 0;
+}
+
+void *
+cli_worker (void *)
+{
+ // Client thread function.
+ ACE_INET_Addr addr (rendezvous);
+ ACE_SOCK_Stream stream;
+ ACE_SOCK_Connector connect;
+ ACE_Time_Value delay (0, req_delay);
+
+ for (size_t i = 0 ; i < cli_conn_no; i++)
+ {
+ if (connect.connect (stream, addr) < 0)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ASYS_TEXT ("(%t) %p\n"), ASYS_TEXT ("connect")));
+ continue;
+ }
+
+ ASYS_TCHAR *buf = ASYS_TEXT ("Message from Connection worker\n");
+
+ for (size_t j = 0; j < cli_req_no; ACE_OS::sleep (delay), j++)
+ {
+ ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("(%t) conn_worker stream handle = %x\n"),
+ stream.get_handle ()));
+ stream.send_n (buf, (ACE_OS::strlen (buf) + 1) * sizeof (ASYS_TCHAR));
+ }
+ stream.close ();
+ }
+
+ return 0;
+}
+
+void *
+worker (void *)
+{
+ ACE_OS::sleep (3);
+
+ ACE_INET_Addr addr (rendezvous);
+ int grp = ACE_Thread_Manager::instance ()->spawn_n (cli_thrno,
+ &cli_worker,
+ &addr);
+ ACE_ASSERT (grp != -1);
+
+ ACE_Thread_Manager::instance ()->wait_grp (grp);
+
+ ACE_OS::sleep (1);
+ ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("Shutting down...\n")));
+ ACE_SOCK_Stream stream;
+ ACE_SOCK_Connector connect;
+ if (connect.connect (stream, addr) < 0)
+ ACE_ERROR ((LM_ERROR,
+ ASYS_TEXT ("%p Error while connecting\n"),
+ ASYS_TEXT ("connect")));
+
+ char *buf = "shutdown";
+ ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("shutdown stream handle = %x\n"),
+ stream.get_handle ()));
+ stream.send_n (buf, ACE_OS::strlen (buf) + 1);
+ stream.close ();
+ return 0;
+}
+
+int
+main (int argc, ASYS_TCHAR *argv[])
+{
+ ACE_START_TEST (ASYS_TEXT ("Thread_Pool_Reactor_Test"));
+ parse_arg (argc, argv);
+
+ // Changed the default
+ ACE_TP_Reactor sr;
+ ACE_Reactor new_reactor (&sr);
+ ACE_Reactor::instance (&new_reactor);
+
+ // Most platforms seem to have trouble accepting connections
+ // simultaneously in multiple threads. Therefore, we can't
+ // quite use the Acceptor with the TP_Reactor. Create a
+ // Select_Reactor and run the event_loop in the main thread.
+ ACE_Select_Reactor slr;
+ ACE_Reactor mreactor (&slr);
+ main_reactor = &mreactor;
+ ACCEPTOR acceptor;
+ CONCURRENCY_STRATEGY tp_strategy;
+ CREATION_STRATEGY new_strategy;
+ ACE_INET_Addr accept_addr (rendezvous);
+ acceptor.open (accept_addr,
+ main_reactor,
+ &new_strategy,
+ 0,
+ 0, //&tp_strategy,
+ 0, 0, 0, 0);
+
+ ACE_Thread_Manager::instance ()->spawn_n (svr_thrno,
+ svr_worker);
+ ACE_Thread_Manager::instance ()->spawn (worker);
+
+ int result = 0;
+ while (result >= 0 && main_event_loop)
+ {
+ result = slr.handle_events ();
+ }
+
+ ACE_ASSERT (result != -1);
+
+ ACE_Thread_Manager::instance ()->wait ();
+
+ ACE_OS::sleep (1);
+
+ ACE_END_TEST;
+ return 0;
+}
+#else
+int
+main (int, ASYS_TCHAR *[])
+{
+ ACE_START_TEST (ASYS_TEXT ("Thread_Pool_Reactor_Test"));
+
+ ACE_ERROR ((LM_ERROR, ASYS_TEXT ("threads not supported on this platform\n")));
+
+ ACE_END_TEST;
+ return 0;
+}
+#endif /* ACE_HAS_THREADS */
+
+
diff --git a/tests/Thread_Pool_Reactor_Test.dsp b/tests/Thread_Pool_Reactor_Test.dsp
new file mode 100644
index 00000000000..5003602b975
--- /dev/null
+++ b/tests/Thread_Pool_Reactor_Test.dsp
@@ -0,0 +1,159 @@
+# Microsoft Developer Studio Project File - Name="Thread_Pool_Reactor_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+# TARGTYPE "Win32 (ALPHA) Console Application" 0x0603
+
+CFG=Thread_Pool_Reactor_Test - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak" CFG="Thread_Pool_Reactor_Test - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 Alpha Debug" (based on\
+ "Win32 (ALPHA) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Atomic_O"
+# PROP BASE Intermediate_Dir "Atomic_O"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir ".\DLL\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Alpha Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Atomic_O"
+# PROP BASE Intermediate_Dir "Atomic_O"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /Gt0 /W3 /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /MTd /c
+# ADD CPP /nologo /Gt0 /W3 /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /MDd /c
+# SUBTRACT CPP /YX
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 aced.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:ALPHA /pdbtype:sept /libpath:"..\ace"
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:ALPHA /pdbtype:sept /libpath:"..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Thread_Pool_Reactor_Test - Win32 Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 Alpha Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\Thread_Pool_Reactor_Test.cpp
+
+!IF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Debug"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Alpha Debug"
+
+DEP_CPP_ATOMI=\
+ "..\ace\ACE.h"\
+ "..\ace\ACE.i"\
+ "..\ace\Atomic_Op.i"\
+ "..\ace\Auto_Ptr.cpp"\
+ "..\ace\Auto_Ptr.h"\
+ "..\ace\Auto_Ptr.i"\
+ "..\ace\config-win32-common.h"\
+ "..\ace\config-win32.h"\
+ "..\ace\config.h"\
+ "..\ace\Event_Handler.h"\
+ "..\ace\Event_Handler.i"\
+ "..\ace\Log_Msg.h"\
+ "..\ace\Log_Priority.h"\
+ "..\ace\Log_Record.h"\
+ "..\ace\Log_Record.i"\
+ "..\ace\Managed_Object.cpp"\
+ "..\ace\Managed_Object.h"\
+ "..\ace\Managed_Object.i"\
+ "..\ace\Object_Manager.h"\
+ "..\ace\Object_Manager.i"\
+ "..\ace\OS.h"\
+ "..\ace\OS.i"\
+ "..\ace\SString.h"\
+ "..\ace\SString.i"\
+ "..\ace\stdcpp.h"\
+ "..\ace\SV_Semaphore_Complex.h"\
+ "..\ace\SV_Semaphore_Complex.i"\
+ "..\ace\SV_Semaphore_Simple.h"\
+ "..\ace\SV_Semaphore_Simple.i"\
+ "..\ace\Synch.h"\
+ "..\ace\Synch.i"\
+ "..\ace\Synch_T.cpp"\
+ "..\ace\Synch_T.h"\
+ "..\ace\Synch_T.i"\
+ "..\ace\Thread.h"\
+ "..\ace\Thread.i"\
+ "..\ace\Trace.h"\
+ "..\ace\Version.h"\
+ "..\ace\ws2tcpip.h"\
+ ".\test_config.h"\
+
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ".h"
+# Begin Source File
+
+SOURCE=.\test_config.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tests/tests.dsw b/tests/tests.dsw
index 4e825b4c59c..240d891cece 100644
--- a/tests/tests.dsw
+++ b/tests/tests.dsw
@@ -1,4 +1,4 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
+Microsoft Developer Studio Workspace File, Format Version 5.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
@@ -603,6 +603,18 @@ Package=<4>
###############################################################################
+Project: "Thread_Pool_Reactor_Test"=.\Thread_Pool_Reactor_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "Thread_Pool_Test"=.\Thread_Pool_Test.dsp - Package Owner=<4>
Package=<5>
diff --git a/tests/version_tests/Thread_Pool_Reactor_Test.dsp b/tests/version_tests/Thread_Pool_Reactor_Test.dsp
new file mode 100644
index 00000000000..e54c764d393
--- /dev/null
+++ b/tests/version_tests/Thread_Pool_Reactor_Test.dsp
@@ -0,0 +1,278 @@
+# Microsoft Developer Studio Project File - Name="Thread_Pool_Reactor_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Thread_Pool_Reactor_Test - Win32 DLL Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak" CFG="Thread_Pool_Reactor_Test - Win32 DLL Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Unicode Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Unicode Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Unicode Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Unicode Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP WCE_Configuration "H/PC Ver. 2.00"
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\DLL Debug"
+# PROP Intermediate_Dir ".\DLL Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=1 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\static Debug"
+# PROP Intermediate_Dir ".\static Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 acesd.lib advapi32.lib user32.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Unicode Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\DLL Unicode Debug"
+# PROP Intermediate_Dir ".\DLL Unicode Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=1 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 aceud.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Unicode Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Unicode Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Unicode Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\static Unicode Debug"
+# PROP Intermediate_Dir ".\static Unicode Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 acesud.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Unicode Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Unicode Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Unicode Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\static Unicode Release"
+# PROP Intermediate_Dir ".\static Unicode Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 acesu.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\static Release"
+# PROP Intermediate_Dir ".\static Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 aces.lib advapi32.lib user32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Unicode Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\DLL Unicode Release"
+# PROP Intermediate_Dir ".\DLL Unicode Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=1 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 aceu.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\DLL Release"
+# PROP Intermediate_Dir ".\DLL Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=1 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 static Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Unicode Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 static Unicode Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 static Unicode Release"
+# Name "Thread_Pool_Reactor_Test - Win32 static Release"
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Unicode Release"
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=..\Thread_Pool_Reactor_Test.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# Begin Source File
+
+SOURCE=..\test_config.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project