--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/stf/stffw/testsrv/inc/TestServer.h Fri Apr 09 10:46:28 2010 +0800
@@ -0,0 +1,1695 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: This file contains the header file of the
+* CTestServer.
+*
+*/
+
+#ifndef TEST_SERVER_H
+#define TEST_SERVER_H
+
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include "PrintQueue.h"
+#include <StifLogger.h>
+#include "Logging.h"
+#include <StifTestModule.h>
+#include <StifTestInterface.h>
+
+// CONSTANTS
+
+// KDefaultHeapSize needed for creating server thread.
+const TUint KDefaultHeapSize = 0x10000;
+const TUint KMaxHeapSize = 0x20000;
+
+// MACROS
+
+// FUNCTION PROTOTYPES
+typedef CTestModuleBase*( *CTestInterfaceFactory )();
+
+// DATA TYPES
+
+// Panic reasons
+enum TTestServerPanic
+ {
+ EBadRequest,
+ EBadDescriptor,
+ EDescriptorNonNumeric,
+ EMainSchedulerError,
+ ESvrCreateServer,
+ ECreateTrapCleanup,
+ EBadRemove,
+ EBadSubsessionHandle,
+ ENoStartupInformation,
+ EEnumerateHasNotBeenCalled,
+ EClosingWhileTestRunning,
+ EPrintMutexNotFreed,
+ EThreadMutexNotFreed,
+ EEventMutexNotFreed,
+ EEventArrayMutexNotFreed,
+ ETestModuleMutexNotFreed,
+ EInvalidCTestExecution,
+ EPrintQueueBroken,
+ EInvalidRequestCancel,
+ EWrongEventQueueDeleteContext,
+ EReInitializingTestModule,
+ ETestModuleNotInitialized,
+ EInvalidTestModuleOperation,
+ EWrongHeapInUse,
+ ENullTestModuleFunction,
+ ENullTestModuleContainer,
+ ENullTestModule,
+ ECannotCreateEventArray,
+ EPreviousRequestStillOngoing,
+ ECannotOpenServerThread,
+ ENullModuleSession,
+ EInvalidThreadState,
+ EUnknownEventCmd,
+ EUnknownRemoteCmd,
+ ENullTestThreadContainer,
+ ENullExecution,
+ EAlreadyActive,
+ };
+
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class TEvent;
+class CTestModule;
+class CTestModuleContainer;
+class CTestExecution;
+class CTestThreadContainer;
+class CErrorPrintHandler;
+class CTestThreadContainerRunnerFactory;
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CUnderTaker class is an active object that handles thread death
+// notifications.
+class CUnderTaker
+ :public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CUnderTaker* NewL( CTestModuleContainer* aContainer );
+
+ /**
+ * Destructor of CUnderTaker.
+ */
+ virtual ~CUnderTaker();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ TInt StartL();
+
+ /**
+ * Is undertaker completed?
+ */
+ TBool Completed();
+
+ /**
+ * Sets or unsets local processing mode
+ */
+ void SetSynchronousMode(const TBool aMode);
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CUnderTaker();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL( CTestModuleContainer* aContainer );
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestModuleContainer* iModuleContainer; // Pointer to parent
+ TBool iCancelNeeded; // Is cancel needed?
+ TBool iSynchronousMode; // In synchronous mode
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+
+
+
+// DESCRIPTION
+// CTestModuleContainer is a class, which contains the test execution thread
+// and interface functions to do operations in that thread context.
+class CTestModuleContainer
+ :public CActive
+ {
+
+ public: // Enumerations
+ enum TOperation
+ {
+ EInitializeModule,
+ EEnumerateInThread,
+ EExecuteTestInThread,
+ EFreeEnumerationData,
+ EExit,
+ };
+
+ enum TRequestType
+ {
+ ERqTestCase,
+ ERqErrorPrint,
+ };
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CTestModuleContainer* NewL( const TDesC& aName,
+ CTestModule* aSession,
+ const TDesC& aConfig );
+
+ /**
+ * Destructor of CTestModuleContainer.
+ */
+ virtual ~CTestModuleContainer();
+
+
+ public: // New functions
+
+ /**
+ * Initialize the test module
+ */
+ TInt Initialize( const TFileName& aName,
+ const TBool aFirstTime );
+
+ /**
+ * Enumerate test cases
+ */
+ TInt EnumerateTestCases( const TFileName& aName );
+
+
+ /**
+ * Frees the enumeration data
+ */
+ TInt FreeEnumerationData();
+
+ /**
+ * Run a test case
+ */
+ void RunTestCase( const TFileName& aName,
+ const TInt aCaseNumber,
+ const RMessage2& aMessage );
+
+
+ /**
+ * Changes the operation, can fail
+ */
+ TInt ChangeOperation( const TOperation aOperation,
+ const TFileName& aNameBuffer,
+ const TInt aInt );
+
+ /**
+ * Changes the operation
+ */
+ void ChangeOperationNoError( const TOperation aOperation,
+ const TInt aInt );
+
+ /**
+ * Return the operation
+ */
+ //@spe const TOperation Operation();
+ TOperation Operation();
+
+ /**
+ * Set a new execution subsession
+ */
+ void SetExecutionSubSession( CTestExecution* aExecution );
+
+ /**
+ * Pauses the thread
+ */
+ TInt PauseThread();
+
+ /**
+ * Resumes the thread
+ */
+ TInt ResumeThread();
+
+ /**
+ * Returns pointer to test cases
+ */
+ const RPointerArray<TTestCaseInfo>* TestCases() const;
+
+ /**
+ * Returns error code from operation
+ */
+ TInt& OperationErrorResult();
+
+ /**
+ * Returns error code from module
+ */
+ TInt& ModuleResult();
+
+ /**
+ * Kill the thread
+ */
+ void KillThread( const TInt aCode );
+
+ /**
+ * Error print handler.
+ */
+ void DoErrorPrint();
+
+ /**
+ * Make sure that any of the test interference thread's won't stay
+ * to run if test case is crashed of test interference object is not
+ * deleted.
+ */
+ void KillTestinterferenceThread();
+
+ /**
+ * Make sure that any of the test measurement process's won't stay
+ * to run if test case is crashed of test measurement object is not
+ * deleted.
+ */
+ void KillTestMeasurement();
+
+ public:
+
+ /**
+ * Get semaphore handles.
+ */
+ TInt OperationStartSemHandle(){ return iOperationStartSemaphore.Handle(); };
+ TInt OperationChangeSemHandle(){ return iOperationChangeSemaphore.Handle(); };
+
+ /**
+ * Access to "shared" memory.
+ * Called from test thread'
+ */
+ void SetThreadContainer( CTestThreadContainer* aThread )
+ { iThreadContainer = aThread; };
+
+ const TDesC& OperationName(){ return iOperationName; };
+
+ TDes& OperationText(){ return iOperationText; };
+
+ TInt& OperationIntBuffer(){ return iOperationIntBuffer; };
+
+ TOperation OperationType(){ return iOperationType; };
+
+ const TDesC& TestModuleName();
+ const TDesC& TestModuleIniFile();
+
+ CTestModuleIf::TExitReason& AllowedExitReason()
+ { return iAllowedExitReason; };
+
+ TInt& AllowedExitCode(){ return iAllowedExitCode; };
+
+ TThreadId ServerThreadId(){ return iServerThreadId; };
+
+ CTestExecution* TestExecution()
+ { return iCTestExecution; };
+
+ TRequestStatus* GetRequest( TRequestType aType );
+
+ TErrorNotification& ErrorNotification(){ return iErrorPrint; };
+
+ TInt ErrorPrintSemHandle(){ return iErrorPrintSem.Handle(); };
+
+ /**
+ * Get title of currently running test case
+ */
+ void GetTestCaseTitleL(TDes& aTestCaseTitle);
+
+ /**
+ * Gets pointer to test module
+ */
+ CTestModule* GetTestModule();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL( const TDesC& aName,
+ CTestModule* aSession,
+ const TDesC& aConfig );
+
+ private: // New functions
+
+ /**
+ * Start and wait until operation is completed.
+ */
+ TInt StartAndWaitOperation();
+
+ /**
+ * Completes operation from test execution thread or from undertaker
+ */
+ void Complete( const TInt aCompletionCode );
+
+ /**
+ * Function that initialise module in execution thread context.
+ */
+ TInt InitializeModuleInThread( RLibrary& aModule );
+
+ /**
+ * Function that enumerates test cases in execution thread context.
+ */
+ TInt EnumerateInThread();
+
+ /**
+ * Function that frees the enumeration data in execution thread context.
+ */
+ void FreeEnumerationDataInThread();
+
+ /**
+ * Function that executes test case in execution thread context.
+ */
+ TInt ExecuteTestCaseInThread();
+
+
+ /**
+ * Delete a test module instance
+ */
+ void DeleteTestModule();
+
+ /**
+ * Function that resolves test case completion code
+ */
+ TInt ResolveCompletionCode( TInt aLeaveCode,
+ TInt aErrorCode );
+
+ /**
+ * Test case execution thread thread function
+ */
+ static TInt ExecutionThread( TAny* aParams );
+
+ /**
+ * Parse stack and heap information for TestScripter's
+ * test case (config) file.
+ */
+ TInt ReadParametersFromScriptFileL( const TDesC& aConfig,
+ TInt& aStackSize,
+ TInt& aHeapMinSize,
+ TInt& aHeapMaxSize );
+
+ /**
+ * Loads dynamically testmodule and calls SetRequirements()-
+ * method for test module parameter handling.
+ */
+ TInt ReadParametersFromTestModule( const TDesC& aModuleName,
+ CTestModuleParam*& aTestModuleParam );
+
+ /**
+ * Load test module dynamically. If loading is done succesfully
+ * then get test module's parameters according to version.
+ * Verifies received parameters also.
+ */
+ TInt GetTestModuleParams( const TDesC& aModuleName,
+ const TDesC& aConfig,
+ TInt& aStackSize,
+ TInt& aHeapMinSize,
+ TInt& aHeapMaxSize );
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CTestModuleContainer();
+
+ public: // Data
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestExecution* iCTestExecution; // Handle to "parent" test execution
+ CTestModule* iCTestModule; // Handle to "parent" module
+ CUnderTaker* iUnderTaker; // Pointer to thread undertaker
+ CTestThreadContainer* iThreadContainer;// Pointer thread container
+
+ RThread iThread; // Thread where test module lives in
+ TBool iUpAndRunning; // Is the thread running
+ TOperation iOperationType; // What to do?
+
+ RSemaphore iOperationStartSemaphore; // Used to wait until something to do
+ RSemaphore iOperationChangeSemaphore; // Protects the operation changes
+
+ TPtr iOperationName; // Operation descriptor buffer
+ HBufC* iModuleNameBuffer; // HBuffer for module name file;
+
+ TInt iOperationIntBuffer; // Transfers operation int to thread
+
+ RMessage2 iMessage; // Message to complete, used in RunTestCase
+
+ // Results from test module
+ TInt iModuleResult; // Low priority result from test module
+ TInt iErrorResult; // High priority error from operation
+ TRequestStatus iOperationStatus; // Operation ongoing?
+ TThreadId iServerThreadId; // Server thread Id. Used in completion
+ TBuf<30> iOperationText; // Human readable current operation for
+
+ CTestModuleIf::TExitReason iAllowedExitReason; // Allowed exit reason
+ TInt iAllowedExitCode; // Allowed exit code
+
+ // Error print handler
+ CErrorPrintHandler* iErrorPrintHandler;
+
+ RSemaphore iErrorPrintSem; // Synchonize error messages
+ TErrorNotification iErrorPrint;
+
+ // Indicates is pause operation executed. This value will be checked
+ // when test case is executed. Resume operation will be reset this
+ // value.
+ TBool iIsPaused;
+
+ // This active scheduler is uses as a nested one
+ CActiveSchedulerWait* iNestedActiveScheduler;
+
+ public: // Friend classes
+ friend class CUnderTaker; // Handles the thread deaths
+ friend class CErrorPrintHandler;
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+ };
+
+
+// DESCRIPTION
+// CTestServer is a server class.
+// Contains an object container index which provides subsessions with object containers.
+class CTestServer
+ :public CServer2
+ {
+ public: // Enumerations
+ enum { ETestServerPriority = CActive::EPriorityHigh };
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CTestServer* NewL( const TFileName& aName );
+
+ /**
+ * Destructor of CTestServer.
+ */
+ ~CTestServer();
+
+ public: // New functions
+
+ /**
+ * ThreadFunction is used to create new thread.
+ */
+ static TInt ThreadFunction( TAny* aStarted );
+
+ /**
+ * Return object container, guaranteed to produce object containers with
+ * unique ids within the server.
+ */
+ CObjectCon* NewContainerL();
+
+ /**
+ * Removes a container. Needed to close session properly.
+ */
+ void DeleteContainer( CObjectCon* aContainer );
+
+ /**
+ * Inform Server that session is closed.
+ */
+ void SessionClosed();
+
+ /**
+ * Returns module name
+ */
+ const TDesC& ModuleName() const;
+
+ /**
+ * Is module inside this server already initialised?
+ */
+ //@spe const TBool FirstTime() const;
+ TBool FirstTime() const;
+
+ /**
+ * Clears the module first time flag.
+ */
+ void ClearFirstTime();
+
+ /**
+ * PanicServer panics the CTestServer
+ */
+ static void PanicServer( const TTestServerPanic aPanic );
+
+ /**
+ * GetServerThreadId for ServerStateHandler Active object usage
+ */
+ TInt GetServerThreadId ();
+
+ /**
+ * Gets CTestThreadContainerRunner pointer which is used in UI testing
+ */
+ CTestThreadContainerRunnerFactory* GetTestThreadContainerRunnerFactory();
+
+ /**
+ * Gets information that testserver supports UI testing or not
+ */
+ TBool IsUiTestingSupported();
+
+ /**
+ * Gets pointer to UiEnvProxy.
+ */
+ CUiEnvProxy* GetUiEnvProxy();
+ public: // Functions from base classes
+
+ /**
+ * NewSessionL creates new CTestServer session.
+ */
+ CSession2* NewSessionL( const TVersion &aVersion,
+ const RMessage2& aMessage ) const;
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CTestServer();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL( const TFileName& aName );
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CObjectConIx* iContainerIndex; // Pointer to container
+ TPtr iModuleName; // Server name
+ HBufC* iModuleNameBuffer; // HBuffer for module name file;
+ TBool iFirstTime; // Is module previously initialized?
+
+ // Container count
+ TInt iSessionCount;
+
+ TBool iUiTestingSupport; // Indicates if it is testserver which supports UI testing
+ CTestThreadContainerRunnerFactory* iTestThreadContainerRunnerFactory; // Pointer to CTestThreadContainerRunnerFactory
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+// DESCRIPTION
+// CTestCasesList is a class, which contains list of test cases assosiated with
+// specified config file.
+NONSHARABLE_CLASS( CTestCasesList ): public CBase
+ {
+public:
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CTestCasesList* NewL( const TDesC& aConfigFileName );
+public:
+ /**
+ * Destructor of CTestServer.
+ */
+ ~CTestCasesList();
+
+ /**
+ * Appends test case.
+ */
+ void AppendTestCaseL( const TDesC& aTestCaseTitle );
+
+ /**
+ * Returns specified test case title.
+ */
+ const TDesC& GetTestCaseTitleL( TInt aIndex ) const;
+
+ /**
+ * Returns config file name.
+ */
+ const TDesC& GetConfigFileName() const;
+
+ /**
+ * Returns count of test cases.
+ */
+ TInt Count() const;
+
+ /**
+ * Resets list of test cases.
+ */
+ void ResetAndDestroy();
+private:
+ /**
+ * C++ default constructor.
+ */
+ CTestCasesList();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL( const TDesC& aConfigFileName );
+private:
+ // Config file name
+ HBufC* iConfigFileName;
+ // List of test cases
+ RPointerArray<HBufC> iTestCases;
+ };
+
+
+// DESCRIPTION
+// CTestModule is a session class.
+// Session for the CTestServer server, to a single client-side session
+// a session may own any number of CCounter objects
+class CTestModule
+ :public CSession2
+ {
+ public:
+ // None
+
+ private: // Enumerations
+ // None
+
+ public: // Constructors and destructor
+
+ /**
+ * Construct a test module object.
+ */
+ static CTestModule* NewL( CTestServer* aServer );
+
+ /**
+ * Destructor
+ */
+ virtual ~CTestModule();
+
+ public: // New functions
+
+ /**
+ * Dispatch message
+ */
+ TInt DispatchMessageL( const RMessage2& aMessage );
+
+ /**
+ * Create Module Session
+ */
+ TInt CreateModuleSessionL( const RMessage2& aMessage );
+
+ /**
+ * Close the session to CTestServer.
+ */
+ TInt CloseSession( const RMessage2& aMessage );
+
+
+ /**
+ * Create CTestExecution subsession.
+ */
+ TInt NewTestExecutionL( const RMessage2& aMessage );
+
+ /**
+ * Destroy the created CTestExecution subsession.
+ * Cannot fail - can panic client.
+ */
+ void DeleteTestExecution( const TUint aHandle, const RMessage2& aMessage );
+
+ /**
+ * NumResources is used to provide reserver resources to client.
+ */
+ void NumResources( const RMessage2& aMessage );
+
+ /**
+ * Return the number of resources owned by the session.
+ */
+ TInt CountResources();
+
+ /**
+ * Enumerates test cases
+ */
+ TInt EnumerateTestCasesL( const RMessage2& aMessage );
+
+ /**
+ * Get test cases
+ */
+ TInt GetTestCasesL( const RMessage2& aMessage );
+
+ /**
+ * Handles error notifications
+ */
+ TInt HandleErrorNotificationL( const RMessage2& aMessage );
+
+ /**
+ * Get Server Thread Id
+ */
+ TInt GetServerThreadIdL( const RMessage2& aMessage );
+
+ /**
+ *
+ */
+ TInt PassEngineSessionSettings( const RMessage2& aMessage );
+
+ /**
+ * Prints error notification
+ */
+ void ErrorPrint( const TInt aPriority,
+ TPtrC aError );
+
+ /**
+ * Cancels asynchronous request
+ */
+ TInt CancelAsyncRequestL( const RMessage2& aMessage );
+
+ /**
+ * Frees a test case specific data owned by module( i.e enumeration data )
+ */
+ TInt FreeCaseData();
+
+ /**
+ * Returns case corresponding handle
+ */
+ CTestExecution* CaseFromHandle( const TUint aHandle, const RMessage2& aMessage ) const;
+
+ /**
+ * Returns module initialisation file name
+ */
+ const TDesC& IniName() const;
+
+ /**
+ * Returns module name
+ */
+ const TDesC& Name() const;
+
+ /**
+ * Returns a test module.
+ */
+ TInt GetTestModule( CTestModuleContainer*& aContainer,
+ const TDesC& aConfig );
+
+ /**
+ * Frees a test module.
+ */
+ TInt FreeTestModule( CTestModuleContainer* aModule );
+
+ /**
+ * Write is utility method.
+ */
+ void Write( const TAny* aPtr, const TDesC8& aDes, TInt anOffset = 0 );
+
+ /**
+ * PanicClient panics the user of CTestModule( RTestModule user )
+ */
+ void PanicClient( TInt aPanic, const RMessage2& aMessage ) const;
+
+ /**
+ * Get title of currently running test case
+ */
+ void GetTestCaseTitleL(TInt aTestCaseNumber, const TDesC& aConfigFile, TDes& aTestCaseTitle);
+
+ /**
+ * Get pointer to test server
+ */
+ CTestServer* GetTestServer();
+
+ TBool UiTesting();
+
+ TBool SeperateProcesses();
+
+ public: // Functions from base classes
+
+ /**
+ * ServiceL handles the messages to CTestServer
+ */
+ virtual void ServiceL( const RMessage2& aMessage );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CTestModule();
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL( CTestServer* aServer );
+
+ public: //Data
+ // None
+
+
+ protected: // Data
+ // None
+
+ private: // Data
+ RPointerArray<CTestModuleContainer>* iTestModuleInstances; // List of FREE test modules
+ CTestServer* iTestServer; // Pointer to "parent"
+ CObjectCon* iContainer; // Object container for this session
+ CObjectIx* iTestExecutionHandle; // Object index( stores CTestExecutions,
+ // (Unclosed)subsession handle )
+
+ TBool iUiTesting;
+ TBool iSeperateProcesses;
+
+ TInt iResourceCount; // Total number of resources allocated
+ TPtr iIni; // Module initialisation( file ) name
+ HBufC* iIniBuffer; // HBuffer for ini name file;
+
+ CTestModuleContainer* iEnumerateModule; // Module used in enumeration
+
+ RMessage2 iErrorMessage; // Error message
+
+ TBool iErrorMessageAvailable; // Error message available?
+
+ RPointerArray<CTestCasesList> iTestCaseTitlesMap; //Test case titles
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CPrintHandler class is an active object that handles print
+// indication from test thread.
+class CPrintHandler
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CPrintHandler* NewL( CTestExecution& aExecution );
+
+ /**
+ * Destructor of CPrintHandler.
+ */
+ virtual ~CPrintHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CPrintHandler( CTestExecution& aExecution );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestExecution& iExecution; // Pointer to parent
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CEventHandler class is an active object that handles print
+// indication from test thread.
+class CEventHandler
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CEventHandler* NewL( CTestExecution& aExecution );
+
+ /**
+ * Destructor of CEventHandler.
+ */
+ virtual ~CEventHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CEventHandler( CTestExecution& aExecution );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestExecution& iExecution; // Pointer to parent
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CSndHandler class is an active object that handles print
+// indication from test thread.
+class CSndHandler
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CSndHandler* NewL( CTestExecution& aExecution );
+
+ /**
+ * Destructor of CSndHandler.
+ */
+ virtual ~CSndHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSndHandler( CTestExecution& aExecution );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestExecution& iExecution; // Pointer to parent
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CRcvHandler class is an active object that handles print
+// indication from test thread.
+class CRcvHandler
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CRcvHandler* NewL( CTestExecution& aExecution );
+
+ /**
+ * Destructor of CRcvHandler.
+ */
+ virtual ~CRcvHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CRcvHandler( CTestExecution& aExecution );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestExecution& iExecution; // Pointer to parent
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CErrorPrintHandler class is an active object that handles print
+// indication from test thread.
+class CErrorPrintHandler
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CErrorPrintHandler* NewL( CTestModuleContainer& aContainer );
+
+ /**
+ * Destructor of CErrorPrintHandler.
+ */
+ virtual ~CErrorPrintHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CErrorPrintHandler( CTestModuleContainer& aContainer );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestModuleContainer& iContainer; // Pointer to parent
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+// CTestInterferenceHandler class is an active object that handles test
+// interference
+NONSHARABLE_CLASS( CInterferenceHandler )
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CInterferenceHandler* NewL( CTestExecution& aExecution );
+
+ /**
+ * Destructor of CInterferenceHandler.
+ */
+ virtual ~CInterferenceHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CInterferenceHandler( CTestExecution& aExecution );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestExecution& iExecution; // Pointer to parent
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+
+// DESCRIPTION
+// CMeasurementHandler class is an active object that handles test
+// measurement
+NONSHARABLE_CLASS( CMeasurementHandler )
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CMeasurementHandler* NewL( CTestExecution& aExecution );
+
+ /**
+ * Destructor of CMeasurementHandler.
+ */
+ virtual ~CMeasurementHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError( TInt aError );
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CMeasurementHandler( CTestExecution& aExecution );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+
+ // Pointer to test execution side
+ CTestExecution& iExecution;
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+/**
+* Check is module TestScripter. Does parsing and returns new module name and
+* error codes(Needed operations when creating server sessions to TestScripter).
+*/
+TInt CheckModuleName( TFileName aModuleName, TFileName& aNewModuleName );
+
+/**
+* Remove optional index appended to module name.
+* If it is found (@ char) then set new module name without it.
+* This feature is used when iSeparateProcesses is set in TestEngine.
+*/
+void RemoveOptionalIndex(const TDesC& aModuleName, TDes& aNewModuleName);
+
+// DESCRIPTION
+// CEventHandler class is an active object that handles print
+// indication from test thread.
+NONSHARABLE_CLASS(CCommandHandler)
+ : public CActive
+ {
+
+ public: // Enumerations
+
+ private: // Enumerations
+
+ public: // Constructors and destructor
+
+ /**
+ * NewL is first phase of two-phased constructor.
+ */
+ static CCommandHandler* NewL(CTestExecution& aExecution);
+
+ /**
+ * Destructor of CCommandHandler.
+ */
+ virtual ~CCommandHandler();
+
+ public: // New functions
+
+ /**
+ * Start monitoring
+ */
+ void StartL();
+
+ public: // Functions from base classes
+
+ /**
+ * RunL derived from CActive handles the completed requests.
+ */
+ void RunL();
+
+ /**
+ * DoCancel derived from CActive handles the Cancel
+ */
+ void DoCancel();
+
+ /**
+ * RunError derived from CActive handles errors from active handler.
+ */
+ TInt RunError(TInt aError);
+
+ protected: // New functions
+ // None
+
+ protected: // Functions from base classes
+ // None
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CCommandHandler(CTestExecution& aExecution);
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ public: //Data
+ // None
+
+ protected: // Data
+ // None
+
+ private: // Data
+ CTestExecution& iExecution; // Pointer to parent
+
+ public: // Friend classes
+ // None
+
+ protected: // Friend classes
+ // None
+
+ private: // Friend classes
+ // None
+
+ };
+
+#endif // TEST_SERVER_H
+
+// End of File