diff options
Diffstat (limited to 'netsvcs/clients/Tokens/invariant')
-rw-r--r-- | netsvcs/clients/Tokens/invariant/Makefile | 73 | ||||
-rw-r--r-- | netsvcs/clients/Tokens/invariant/README | 27 | ||||
-rw-r--r-- | netsvcs/clients/Tokens/invariant/invariant.cpp | 199 |
3 files changed, 0 insertions, 299 deletions
diff --git a/netsvcs/clients/Tokens/invariant/Makefile b/netsvcs/clients/Tokens/invariant/Makefile deleted file mode 100644 index 975c1241329..00000000000 --- a/netsvcs/clients/Tokens/invariant/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for repeating token client application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = invariant - -FILES = invariant - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(LSRC:%.cpp=$(VDIR)%.o) -SHOBJ = $(addsuffix .so,$(FILES)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(WRAPPER_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(WRAPPER_ROOT)/include/makeinclude/macros.GNU -include $(WRAPPER_ROOT)/include/makeinclude/rules.common.GNU -include $(WRAPPER_ROOT)/include/makeinclude/rules.nonested.GNU -include $(WRAPPER_ROOT)/include/makeinclude/rules.lib.GNU -include $(WRAPPER_ROOT)/include/makeinclude/rules.bin.GNU -include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/invariant.o .shobj/invariant.so: invariant.cpp \ - $(WRAPPER_ROOT)/ace/OS.h \ - $(WRAPPER_ROOT)/ace/Time_Value.h \ - $(WRAPPER_ROOT)/ace/config.h \ - $(WRAPPER_ROOT)/ace/stdcpp.h \ - $(WRAPPER_ROOT)/ace/Trace.h \ - $(WRAPPER_ROOT)/ace/Log_Msg.h \ - $(WRAPPER_ROOT)/ace/Log_Record.h \ - $(WRAPPER_ROOT)/ace/Log_Priority.h \ - $(WRAPPER_ROOT)/ace/ACE.h \ - $(WRAPPER_ROOT)/ace/ACE.i \ - $(WRAPPER_ROOT)/ace/Log_Record.i \ - $(WRAPPER_ROOT)/ace/Get_Opt.h \ - $(WRAPPER_ROOT)/ace/Thread_Manager.h \ - $(WRAPPER_ROOT)/ace/Thread.h \ - $(WRAPPER_ROOT)/ace/Synch.h \ - $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.h \ - $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.h \ - $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ - $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ - $(WRAPPER_ROOT)/ace/Synch_T.h \ - $(WRAPPER_ROOT)/ace/Event_Handler.h \ - $(WRAPPER_ROOT)/ace/Token_Invariants.h \ - $(WRAPPER_ROOT)/ace/Map_Manager.h \ - $(WRAPPER_ROOT)/ace/Local_Tokens.h \ - $(WRAPPER_ROOT)/ace/Stack.h \ - $(WRAPPER_ROOT)/ace/Synch_Options.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/netsvcs/clients/Tokens/invariant/README b/netsvcs/clients/Tokens/invariant/README deleted file mode 100644 index f078c2d6be4..00000000000 --- a/netsvcs/clients/Tokens/invariant/README +++ /dev/null @@ -1,27 +0,0 @@ - -invariants.cpp tests the ACE Token Invariant utilities. The ACE Token -Invariant utilities allow an application to test the correctness of -mutex and readers/writer locks. - -invariants.cpp takes no command-line arguments. invariants.cpp first -tests readers/writer locks. This is done by spawning two threads -which simulate reader and writer acquire/renew/release loops. -However, the loops are performed without actual locks, so the -competing threads quickly reach and invalid state. The test should -report this violation of readers/writer lock invariants and both -threads should exit. - -The second test is for mutexes. Similar to the readers/writer lock -test, this test spawns two threads which perform acquire/renew/release -loops. When to two threads reach an invalid mutex state, the error -should be reported and the threads should exit. - -For these two previous tests, it is theoretically possible that the -threads never reach an invalid token state. However, it is highly -unlikely since the threads would have to execute the same code -simultaneously for the duration of the test. Nevertheless, it is -possible. - -The last test hardwires invalid token states. It runs two mutex and -two readers/writer lock tests. It should report "succeeded" for the -four tests. diff --git a/netsvcs/clients/Tokens/invariant/invariant.cpp b/netsvcs/clients/Tokens/invariant/invariant.cpp deleted file mode 100644 index 1b623169d64..00000000000 --- a/netsvcs/clients/Tokens/invariant/invariant.cpp +++ /dev/null @@ -1,199 +0,0 @@ -// ============================================================================ -// $Id$ - -// -// = LIBRARY -// examples -// -// = FILENAME -// invariant.cpp -// -// = DESCRIPTION -// -// = AUTHOR -// Tim Harrison -// -// ============================================================================ - -#include "ace/OS.h" - -#include "ace/Get_Opt.h" -#include "ace/Thread_Manager.h" -#include "ace/Token_Invariants.h" - -#if defined (ACE_HAS_THREADS) - -typedef ACE_Token_Invariant_Manager ACE_TOKEN_INVARIANTS; - -static char * rwname = "reader/writer"; -static char * mutexname = "mutex"; - -static void * -run_reader_writer (void *vp) -{ - ACE_Thread_Manager *thr_mgr = (ACE_Thread_Manager*) vp; - ACE_Thread_Control tc (thr_mgr); - - for (int x = 0; x < 50; x++) - { - int y = 0; - for (; y < 5; y++) - { - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "reader acquire violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock acquired.\n")); - } - - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "reader renew violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock renewed.\n")); - - for (; y > 0; y--) - { - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - ACE_DEBUG ((LM_DEBUG, "(%t) r-released.\n")); - } - - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "writer acquire violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "\t\t(%t) wlock acquired.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "writer renew violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock renewed.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - } - - ACE_DEBUG ((LM_DEBUG, "(%t) thread exiting.\n")); - return 0; -} - -static void * -run_mutex (void *vp) -{ - ACE_Thread_Manager *thr_mgr = (ACE_Thread_Manager*) vp; - ACE_Thread_Control tc (thr_mgr); - - for (int x = 0; x < 50; x++) - { - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired (mutexname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex acquire violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) mutex acquired.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->mutex_releasing (mutexname); - - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired (mutexname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex renew violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) mutex renewed.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->mutex_releasing (mutexname); - ACE_DEBUG ((LM_DEBUG, "(%t) mutex released.\n")); - } - - ACE_DEBUG ((LM_DEBUG, "(%t) thread exiting.\n")); - return 0; -} - -static int -run_final_test (void) -{ - ACE_DEBUG ((LM_DEBUG, "starting mutex tests 1 & 2\n")); - - // Mutex tests. - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 1 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 2 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex") == 0) - ACE_DEBUG ((LM_DEBUG, "mutex test 1 succeeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 1 failed..\n"), 0); - - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex2") == 0) - ACE_DEBUG ((LM_DEBUG, "mutex test 2 succeeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 2 failed..\n"), 0); - - // RW tests. - ACE_DEBUG ((LM_DEBUG, "starting rwlock tests 1 & 2\n")); - - // Multiple readers. - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 1 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock 2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 1 failed..\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock 2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed..\n"), 0); - - // Writer. - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired ("testing rwlock") == 0) - ACE_DEBUG ((LM_ERROR, "rwlock test 1 succeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 1 failed...\n"), 0); - - // Releasing reader. - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing ("testing rwlock 2"); - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing ("testing rwlock 2"); - - // Writer. - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired ("testing rwlock 2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed....\n"), 0); - - // Reader. - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock 2") == 0) - ACE_DEBUG ((LM_DEBUG, "rwlock test 2 succeeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed.....\n"), 0); - - return 0; -} - -int -main (int argc, char* argv[]) -{ - ACE_Thread_Manager mgr; - - // Run reader/writer test - if (mgr.spawn_n (2, ACE_THR_FUNC (run_reader_writer), - (void *) &mgr, THR_NEW_LWP | THR_DETACHED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn failed"), -1); - - mgr.wait (); - - ACE_OS::sleep (2); - - // Run mutex test. - if (mgr.spawn_n (2, ACE_THR_FUNC (run_mutex), - (void *) &mgr, THR_NEW_LWP | THR_DETACHED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn failed"), -1); - - mgr.wait (); - - ACE_OS::sleep (2); - - run_final_test (); - - return 42; -} - -#else -int -main (int, char *[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, - "threads not supported on this platform\n"), -1); -} -#endif /* ACE_HAS_THREADS */ |