diff options
Diffstat (limited to 'TAO/orbsvcs/tests/Simple_Naming/client.h')
-rw-r--r-- | TAO/orbsvcs/tests/Simple_Naming/client.h | 335 |
1 files changed, 0 insertions, 335 deletions
diff --git a/TAO/orbsvcs/tests/Simple_Naming/client.h b/TAO/orbsvcs/tests/Simple_Naming/client.h deleted file mode 100644 index 761e1766fe7..00000000000 --- a/TAO/orbsvcs/tests/Simple_Naming/client.h +++ /dev/null @@ -1,335 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// TAO/orbsvcs/tests -// -// = FILENAME -// client.h -// -// = DESCRIPTION -// This class tests the facilities to connect to the naming service. -// -// = AUTHORS -// Marina Spivak <marina@cs.wustl.edu> -// -// ============================================================================ - -#include "test_objectS.h" -#include "orbsvcs/CosNamingC.h" -#include "orbsvcs/Naming/Naming_Utils.h" -#include "tao/corba.h" -#include "tao/TAO.h" -#include "ace/Task.h" - -class Naming_Test -{ - // = TITLE - // This is an abstract class which is subclassed - // to create different Naming Service tests. - // - // = DESCRIPTION - // This is a basic example of the "Strategy" pattern. This class - // provides a common interface for different tests (or - // "strategies"), so that a specific test to be used can be - // chosen at runtime. - -public: - virtual int execute (TAO_Naming_Client &root_context) = 0; - // Execute the test code. <root_context> is the context to assume - // as the root for all tests operations. -}; - -class Simple_Test : public Naming_Test -{ - // = TITLE - // This class implements a simple Naming Service test. - // - // = DESCRIPTION - // The test binds(), resolves(), and unbinds() an object - // reference from the given Naming Context. -public: - virtual int execute (TAO_Naming_Client &root_context); - // Execute the simple test code. -}; - -class MT_Test : public Naming_Test, public ACE_Task_Base -{ - // = TITLE - // This class implements a simple Multithreaded (multiclient) Naming Service test. - // - // = DESCRIPTION - // The test spawns multiple threads: each attempts to - // bind(), resolve(), and unbind() an object - // reference using the same name, and the same Naming Context. -public: - // = Initialization and termination methods. - - MT_Test (CORBA::ORB_ptr orb, - int size = 10); - // Constructor. Takes in an orb pointer and number of threads to spawn. - - virtual int execute (TAO_Naming_Client &root_context); - // Execute the MT test code. - - virtual int svc (void); - // This code is executed by each thread. - -private: - int size_; - // Number of threads to spawn. By default is set to 10. - - CORBA::ORB_var orb_; - // A pointer to our ORB. - - char* name_service_ior_; - // IOR in the string format for Naming Service we are to deal with. - // Each thread will use string_to_object() and this IOR to create - // its own NamingContext stub for invoking operations on the - // Naming Service. If all threads try to use the same stub, bad things - // happen... - - // This can be replaced with CORBA::String_var when <string_to_object> - // is fixed - this will clean up the memory properly. - - CosNaming::Name test_name_; - // Holds name used for registering the object with Naming Service. - - Test_Object_var test_ref_; - // Holds object to be registered with the Naming Service by each thread. - -}; - -class Tree_Test : public Naming_Test -{ - // = TITLE - // This class implements a test of all Naming Service functions - // on a tree of Naming Contexts. - // - // = DESCRIPTION - // Bind_context() under the root context with the name level1. - // Create_new_context(), bind() foo object into it, and - // bind the context into root/level1 under the name level2. - // Resolve (root/level1/level2/foo). - // Unbind (root/level1/level2/foo). - // Bind (root/level1/level2/foo, obj) - // Create_new_context() - // and invoke rebind_context() to substitute it for the current - // level2 context. - // Bind (root/level1/level2/foo, obj) - // Resolve (root/level1/level2/foo). - // Rebind() to have a different object under the name bar. - // Resolve (root/level1/level2/foo) to make sure correct reference is returned. -public: - virtual int execute (TAO_Naming_Client &root_context); - // Execute the tree test code. -}; - -class Iterator_Test : public Naming_Test -{ - // = TITLE - // This class implements a test of Naming Service functions - // which involve BindingIterator. - // - // = DESCRIPTION - // The test binds foo1, foo2, foo3, and foo4 objects to the - // Naming Context. It lists() one binding and receives - // BindingIterator to iterate over the rest of the bindings. It - // then invokes next_one(), next_n(2), next_one(), and destroy() - // on the iterator. -public: - virtual int execute (TAO_Naming_Client &root_context); - // Execute the iterator test code. -}; - -class Exceptions_Test : public Naming_Test -{ - // = TITLE - // This class implements a test of exceptions in the Naming Service. - // - // = DESCRIPTION - // Makes sure that Naming Service throws exceptions as expected, and - // data inside exceptions is set correctly. The test creates a tree of - // of Naming Contexts: root context -> level1 -> level2. It then binds() an - // object with the name foo to each of Naming Contexts in the tree. - // Invoke resolve() with a Name of length 0 - make sure we get InvalidName exception. - // Invoke bind( foo, obj) on root context - make sure we get AlreadyBound exception. - // Invoke bind( level1/foo, obj) on root context - make sure we get AlreadyBound exc. - // Invoke unbind( level1/level2/bar) on root context - make sure we get NotFound exc. - // with why = not_object, rest_of_name = bar. - // Invoke unbind( level1/level3/foo) on root context - make sure we get NotFound exc. - // with why = missing_node, rest_of_name = level3/foo. - // Invoke unbind( level1/foo/foo) on root context - make sure we get NotFound exc. - // with why = not_context, rest_of_name = foo/foo. -public: - virtual int execute (TAO_Naming_Client &root_context); - // Execute the exceptions test code. - -private: - // the following functions isolate specific tests due to the - // limitation of only 1 TAO_TRY being allowed per function. - - void invalid_name_test (TAO_Naming_Client &root_context, - CORBA::Environment &ACE_TRY_ENV); - void already_bound_test (TAO_Naming_Client &root_context, - CORBA::Environment &ACE_TRY_ENV); - void already_bound_test2 (TAO_Naming_Client &root_context, - CORBA::Environment &ACE_TRY_ENV); - void not_found_test (TAO_Naming_Client &root_context, - CORBA::Environment &ACE_TRY_ENV); - void not_found_test2 (TAO_Naming_Client &root_context, - CORBA::Environment &ACE_TRY_ENV); - void not_found_test3 (TAO_Naming_Client &root_context, - CORBA::Environment &ACE_TRY_ENV); -}; - -class Destroy_Test : public Naming_Test -{ - // = TITLE - // This class implements a test of destroy() function - // in the Naming Service. - // - // = DESCRIPTION - // Create a context and bind an object under it. - // Attempt to destroy the context - NotEmpty exception should be raised. - // - // Unbind the object and call destroy on the context. - // Attempt to call destroy on the object again - OBJECT_NOT_EXIST - // exception should be raised. - // -public: - virtual int execute (TAO_Naming_Client &root_context); - // Execute the destroy test code. - -private: - // = The following functions isolate specific tests. - void not_empty_test (CosNaming::NamingContext_var &ref, - CORBA::Environment &ACE_TRY_ENV); - void not_exist_test (CosNaming::NamingContext_var &ref, - CORBA::Environment &ACE_TRY_ENV); -}; - -class Persistent_Test_Begin : public Naming_Test -{ - // = TITLE - // This class implements the first part of the Persistent Naming - // Service test. - // - // = DESCRIPTION - // This test creates the Naming Context hierarchy: - // root -> level1_context -> level2_context, - // and prints out the ior of the <level1_context>. -public: - // = Initialization and termination methods. - - Persistent_Test_Begin (CORBA::ORB_ptr orb, - FILE * ior_output_file); - // Constructor. Takes in an orb pointer. - - virtual ~Persistent_Test_Begin (void); - // Destructor. - - virtual int execute (TAO_Naming_Client &root_context); - // Execute the persistent test (part 1) code. - -private: - - CORBA::ORB_var orb_; - // A pointer to our ORB (needed for object/string conversion). - - FILE *file_; - // File where we output the ior for use by part 2 of persistent test. -}; - -class Persistent_Test_End : public Naming_Test -{ - // = TITLE - // This class implements the second part of the Persistent Naming - // Service test. - // - // = DESCRIPTION - // This test attempts to resolve <level2_context> both through the - // <root> Naming Context, which it gets from <resolve_initial_references>, and - // through <level1_context> stringified ior, which it gets from part 1 of - // the persistent test. The results of both methods are then - // compared for equality. -public: - // = Initialization and termination methods. - - Persistent_Test_End (CORBA::ORB_ptr orb, - const char * ior); - // Constructor. Takes in an orb pointer and the ior received from - // <Persistent_Test_Begin>. - - virtual ~Persistent_Test_End (void); - // Destructor. - - virtual int execute (TAO_Naming_Client &root_context); - // Execute the persistent test (part 2). - -private: - - CORBA::ORB_var orb_; - // A pointer to our ORB (used for string/object conversion). - - const char* ior_; - // IOR of <level1_context> recorded during the run of part 1 of - // persistent test. -}; - -class CosNaming_Client -{ - // = TITLE, - // Defines a class that encapsulates behaviour of the CosNaming - // client example. Provides a better understanding of the logic - // in an object-oriented way. - // - // = DESCRIPTION - // This class declares an interface to run the example client for - // CosNaming CORBA server. All the complexity for initializing - // the server is hidden in the class. Just the <run> interface - // is needed. -public: - // = Initialization and termination methods. - - CosNaming_Client (void); - // Constructor. - - ~CosNaming_Client (void); - // Destructor. - - int run (void); - // Execute client example code. - - int init (int argc, char **argv); - // Initialize the client communication endpoint with server. - - // = Symbolic ids. - enum OBJ_ID - { - OBJ1_ID = 5, - OBJ2_ID = 6 - }; - -private: - int parse_args (void); - // Parses the arguments passed on the command line. - - int argc_; - // # of arguments on the command line. - - char **argv_; - // arguments from command line. - - Naming_Test *test_; - // A pointer to the specific Naming Service test a client will - // execute. - - TAO_ORB_Manager orbmgr_; - // Our ORB manager helper class. - - TAO_Naming_Client naming_client_; - // Our naming client helper class. -}; |