stif/inc/TestServerModuleIf.h
changeset 38 169364e7e4b4
parent 34 7259cf1302ad
child 45 185201be11b0
--- a/stif/inc/TestServerModuleIf.h	Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,693 +0,0 @@
-/*
-* 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 CTestExecution.
-*
-*/
-
-#ifndef TEST_SERVER_MODULE_IF_H
-#define TEST_SERVER_MODULE_IF_H
-
-
-//  INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-#include <StifTestModule.h>
-#include <StifTestInterface.h>
-#include "StifTFwIfProt.h"
-
-// CONSTANTS
-
-// MACROS
-
-// DATA TYPES
-
-// FUNCTION PROTOTYPES
-typedef CSTIFTestMeasurementImplementation*( 
-        *CTestMeasurementFactory )( const TDesC&,
-                                    CSTIFTestMeasurement::TSTIFMeasurementType );
-
-// FORWARD DECLARATIONS
-class TEvent;
-class CTestModule;
-class CTestModuleContainer;
-class CPrintQueue;
-class CPrintHandler;
-class CEventHandler;
-class CSndHandler;
-class CRcvHandler;
-class CErrorPrintHandler;
-class CInterferenceHandler;
-class CMeasurementHandler;
-class CCommandHandler;
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// TCmdDef represents remote command
-class TCmdDef
-    {
-    public:
-        TStifCommand    iCommand;
-        TParams         iParam;
-        TInt            iLen;
-        TRequestStatus* iStatus;
-    };
-
-// TCommandDef represents command
-class TCommandDef
-    {
-    public:
-        TCommand                       iCommand;
-        TBuf8<KMaxCommandParamsLength2> iParamsPckg;
-    };
-    
-// DESCRIPTION
-// CCommandDef represents command
-class CCommandDef : public CBase
-    {
-    public: // Enumerations
-
-    private: // Enumerations
-        
-    public:  // Constructors and destructor
-    		static CCommandDef* NewL();
-        	~CCommandDef();
-
-    private:  // Constructors and destructor
-    		CCommandDef();
-        	void ConstructL();
-
-    public: // New functions
-          
-    public: // Functions from base classes
-        
-    protected:  // New functions
-        
-    protected:  // Functions from base classes
-        
-    private:
-        
-    public:		//Data
-            TCommand iCommand;
-            TBuf8<KMaxCommandParamsLength2> iParamsPckg;
-        
-    protected:  // Data
-        
-    private:    // Data
-        
-    public:     // Friend classes
-        
-    protected:  // Friend classes
-        
-    private:    // Friend classes
-        
-    };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// TCmdDef represents remote command
-class TEventDef
-    {
-    public:
-        enum TEventCmdType
-            {
-            EEventCmd,
-            EEventCmdCancel,
-            };
-    // Added constructor to TEventDef @js
-        TEventDef():iStatus(NULL){};
-            
-    public:
-        TEventCmdType   iType;
-        TEventIf        iEvent;
-        TRequestStatus* iStatus;
-    };
-
-// DESCRIPTION
-// TTestInterference represents remote command
-class TTestInterference 
-    {
-    public:
-        enum TOperation
-            {
-            EAppend,
-            ERemove,
-            };
-    public:
-        TTestInterference(){};
-    public:
-        // Thread id.
-        TUint iThreadId;
-        // Is operations append or remove.
-        TOperation iOperation;
-    };
-
-// DESCRIPTION
-// TTestMeasurement contains measurement related information
-// transfering between TestInterface and TestServer.
-class TTestMeasurement 
-    {
-    public:
-        TTestMeasurement(){};
-    public:
-        // Struct for information.
-        CSTIFTestMeasurement::TStifMeasurementStruct iMeasurementStruct;
-
-    };
-
-// DESCRIPTION
-// TMeasurementHandling keeps information for measurement module
-// dynamic loading, types, etc.
-class TMeasurementHandling 
-    {
-    public:
-        TMeasurementHandling() : iMeasurement( NULL ),
-                                 iMeasurementModulePtr( NULL ){};
-
-        ~TMeasurementHandling()
-            { 
-            delete iMeasurement;
-            delete iMeasurementModulePtr;
-            // After close test measurement's pointer is not valid anymore.
-            if ( iMeasurementModule.Handle() )
-                { 
-                iMeasurementModule.Close(); 
-                }
-            };
-    public:
-        RLibrary iMeasurementModule;
-        CTestMeasurementFactory iMeasurementLibEntry;
-        CSTIFTestMeasurementImplementation* iMeasurement;
-        CSTIFTestMeasurement::TSTIFMeasurementType iMeasurementType;
-        CSTIFTestMeasurementImplementation* iMeasurementModulePtr;
-    };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// CTestExecution represents a subsession object in the CTestServer.
-// A session may own any number of CTestExecution objects
-class CTestExecution
-        :public CObject
-    {
-
-    public: // Enumerations
-        enum TTestState
-            {
-            ENotStarted,
-            EOnGoing,
-            EFinished,
-            ECancelled,
-            };
-        
-        enum TRequestType
-            {
-            ERqPrint,
-            ERqEvent,
-            ERqSnd,
-            ERqRcv,
-            ERqInterference,
-            ERqMeasurement,
-            ERqCommand,
-            };
-
-        enum TTestThreadFailure
-            {
-            ETestThreadOk       = 0,
-            ETestMemLeak        = 0x00000001,
-            ETestRequestLeak    = 0x00000002,
-            ETestHandleLeak     = 0x00000004,
-            };
-
-    private: // Enumerations
-        // None
-
-    public:  // Constructors and destructor
-
-        /**
-        * NewL is first phase of two-phased constructor.
-        */
-        static CTestExecution* NewL( CTestModule* aModuleSession, 
-                                     TInt aCaseNumber, 
-                                     const TFileName& aConfig
-                                   );
-
-        /**
-        * Destructor
-        */
-        virtual ~CTestExecution();
-
-    public: // New functions
-
-        /**
-        * Close Test Execution
-        */
-        TInt CloseTestExecution( const RMessage2& aMessage );
-
-        /**
-        * Run a test case
-        */
-        TInt RunTestCase( const RMessage2& aMessage );
-
-        /**
-        * Sets a print notification
-        */
-        TInt NotifyPrint( const RMessage2& aMessage );
-
-        /**
-        * Sets a event notification
-        */
-        TInt NotifyEvent( const RMessage2& aMessage );
-
-        /**
-        * Sets a RemoteCmd notification
-        */
-        TInt NotifyRemoteCmd( const RMessage2& aMessage );
-
-        /**
-        * Reads a RemoteCmd notification
-        */
-        TInt ReadRemoteCmdInfo( const RMessage2& aMessage );
-
-        /**
-        * Resumes a paused test case
-        */
-        TInt Resume( const RMessage2& aMessage );
-
-        /**
-        * Pauses ongoing test case
-        */
-        TInt Pause( const RMessage2& aMessage );
-
-
-        /**
-        * Cancels asynchronous request
-        */
-        TInt CancelRequestL( const RMessage2& aMessage );
-
-
-        /**
-        * Completes a print request. 
-        */
-        void DoNotifyPrint();
-
-        /**
-        * Completes a interference request. 
-        */
-        void DoNotifyInterference();
-
-        /**
-        * Completes a measurement request. 
-        */
-        TInt DoNotifyMeasurement();
-
-        /**
-        * Completes a print request. 
-        */
-        void DoErrorPrint();
-
-        /**
-        * Enables remote command receiving. 
-        */
-        void DoRemoteReceive();
-
-        /**
-        * Sends remote commands. 
-        */
-        void DoRemoteSend();
-        
-        /**
-        * Completes a event request. 
-        */
-        TInt DoNotifyEvent();
-
-        /**
-        * Completes a event cancel request. 
-        */
-        void CancelEvent();
-        
-        /** 
-        * Set thread State. 
-        * This function can be called from test execution thread.
-        */
-        void SetThreadState( const TTestState aState );
-        
-        /**
-        * Completes print request if print queue is empty
-        */
-        void CompletePrintRequestIfQueueEmpty();
-
-        /**
-        * Completes print request if print queue is empty
-        */
-        void CleanupEvents();
-
-        /**
-        * Completes test execution
-        */
-        void CompleteTestExecution( const TInt aCompletionCode, 
-                                    const TFullTestResult::TCaseExecutionResult aCaseExecutionType,
-                                    const TInt aCaseExecutionCode,
-                                    const TInt aCaseResult,
-                                    const TDesC& aText );
-
-        /**
-        * Unsets all pending state events.
-        */
-        void UnsetStateEvents();
-
-        /**
-        * Completes test execution
-        */
-        void CompleteTestExecution( const TInt aCompletionCode );
-        
-        /**
-        * Current thread state.
-        */
-        TTestState ThreadState(){ return iThreadState; }
-
-        /**
-        * Cancels test(s) execution in special cases e.g. timeout, exit etc.
-        */
-        TInt CancelTestExecution();
-
-        /**
-        * 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.
-        */
-        TInt 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.
-        */
-        TInt KillTestMeasurement();
-
-        /**
-        * Executes command for ongoing test case.
-        * Created to allow test case to kill itself.
-        */
-        TInt NotifyCommand(const RMessage2& aMessage);
-
-        /**
-        * Completes a command request.
-        * Created to allow test case to kill itself.
-        */
-        TInt DoNotifyCommand();
-
-        /**
-        * Cancels command request.
-        * Created to allow test case to kill itself.
-        */
-        TInt CancelCommandRequest();
-
-        /**
-         * Get test case arguments.
-         */
-        const TDesC& GetTestCaseArguments() const;
-
-    public: // Functions that are called from test thread
-
-        /**
-        * Get mutex handles.
-        */
-        TInt EventMutexHandle(){ return iEventMutex.Handle(); };
-        TInt SndMutexHandle(){ return iSndMutex.Handle(); };
-        TInt RcvMutexHandle(){ return iRcvMutex.Handle(); };
-        TInt PrintMutexHandle(){ return iPrintMutex.Handle(); };
-        TInt InterferenceMutexHandle(){ return iInterferenceMutex.Handle(); };
-        TInt MeasurementMutexHandle(){ return iMeasurementMutex.Handle(); };
-        TInt CommandMutexHandle(){ return iCommandMutex.Handle(); };
-
-        /**
-        * Get semaphore handles.
-        */
-        TInt EventSemHandle(){ return iEventSem.Handle(); };
-        TInt SndSemHandle(){ return iSndSem.Handle(); };
-        TInt RcvSemHandle(){ return iRcvSem.Handle(); };
-        //TInt ReceiverSemHandle(){ return iReceiverSem.Handle(); };
-        TInt PrintSemHandle(){ return iPrintSem.Handle(); };
-        TInt InterferenceSemHandle(){ return iInterferenceSem.Handle(); };
-        TInt MeasurementSemHandle(){ return iMeasurementSem.Handle(); };
-        TInt CommandSemHandle(){ return iCommandSem.Handle(); };
-
-        /**
-        * Set execution test thread id.
-        */ 
-        void SetTestThread( TThreadId aThreadId ){ iTestThreadId = aThreadId; };
-
-        /**
-        * Access to "shared" memory.
-        */
-        TFullTestResult& FullResult(){ return iFullResult; };
-        TTestProgress& TestProgress(){ return iProgress; };
-        TEventDef& EventDef(){ return iEventDef; };
-        TCmdDef& SndInfo(){ return iCmdDef; };
-        TCmdDef& RcvInfo(){ return iRcvCmdDef; };
-        TInt& TestThreadFailure(){ return iTestThreadFailure; };
-        TTestInterference& TestInterference(){ return iTestInterference; };
-        TTestMeasurement& TestMeasurement(){ return iTestMeasurement; };
-        CCommandDef& CommandDef(){ return *iCommandDef; };
-
-        /**
-        * Get specific TRequestStatus variable.
-        */
-        TRequestStatus* GetRq( TRequestType aType );
-
-        /**
-        * Get mutex handle.
-        * This mutex meaning is to make sure that test complete and test
-        * case cancel operations are not executed at the same time.
-        */
-        TInt TestThreadMutexHandle() { return iTestThreadMutex.Handle(); };
-
-        const TDesC& GetConfigFileName() const { return iConfig; }
-    public: // Functions from base classes
-        // None
-
-    protected:  // New functions
-        // None
-
-    protected:  // Functions from base classes
-        // None
-
-    private:
-
-        /** 
-        * C++ default constructor.
-        */
-        CTestExecution(); 
-
-        /**
-        * By default Symbian OS constructor is private.
-        */
-        void ConstructL( CTestModule* aModuleSession,
-                         TInt aCaseNumber,
-                         const TFileName& aConfig );
-
-        /**
-        * Cancels print request.
-        */
-        TInt CancelPrintRequest();
-
-        /**
-        * Cancels test interference request.
-        */
-        TInt CancelInterferenceRequest();
-
-        /**
-        * Cancels test execution request
-        */
-        TInt CancelTestRequest();
-
-        /**
-        * Cancel event request.
-        */
-        TInt CancelEventRequest();
-
-        /**
-        * Cancel event request.
-        */
-        TInt CancelRemoteCmdRequest();
-
-        /**
-        * Writes a print notification to client memory space.
-        */
-        TInt WritePrint( TTestProgress& aProgress );
-
-        /**
-        * Complete event TRequestStatus if pending. 
-        */
-        void CompleteEvent( TInt aError );
-
-        /**
-        * Handle event unsets. 
-        */
-        TInt UnsetEvent( TEventIf& aEvent, const RMessage2& aMessage );
-
-        /**
-        * Handle event request. 
-        */
-        TInt RequestEvent( TEventIf& aEvent );
-
-        /**
-        * Wait event request. 
-        */
-        TInt WaitEvent( TEventIf& aEvent, TRequestStatus* aStatus );
-
-        /**
-        * Handle event releases. 
-        */
-        TInt ReleaseEvent( TEventIf& aEvent );
-
-        /**
-        * Handle state events. 
-        */
-        TInt EventStateChange( TEventIf& aEvent );
-
-        /**
-        * Complete request in test thread.
-        */
-        void TestThreadRequestComplete( TRequestStatus* aStatus, TInt aCode );
-
-    public:     // Data
-        // None
-    protected:  // Data
-        // None
-
-    private:    // Data
-
-        // Pointers to things around
-        CTestModule* iModuleSession;             // Session owning us
-        CTestModuleContainer* iModuleContainer;  // Container used to execute this case
-
-        // Test execution related members
-        TInt iCaseNumber;                        // Case to be executed
-        TPtr iConfig;                            // Configuration file name
-        HBufC* iConfigNameBuffer;                // HBuffer for configuration file;
-        HBufC* iTestCaseArgs;                    // HBuffer for test case arguments
-		
-        RMessage2 iTestExeMessage;               // Test execution message
-        TTestState iThreadState;                 // Thread state
-
-        // Print related members
-        RMutex          iPrintMutex;             // For iPrintSem semaphore handling
-        RSemaphore      iPrintSem;               // Synchonize print queue access
-        CPrintQueue*    iPrintQueue;             // Print queue
-        RMessage2 iNotifyPrintMessage;           // Print notification message
-        TBool iPrintNotifyAvailable;             // Is print notification available?
-
-        // Event related members
-        RMessage2 iNotifyEventMessage;           // Event nofitication message
-        TBool           iEventNotifyAvailable;   // Is event notification available?
-        RMutex          iEventMutex;             // For iEventSem semaphore handling
-        RSemaphore      iEventSem;               // Signal event request availability
-        TEventDef       iEventDef;
-
-        // Remote command protocol related stuff
-        RMessage2       iNotifyRemoteCmdMessage;// RemoteCmd notication message
-        TBool           iRemoteSendAvailable;    // Is RemoteSend available
-        RMutex          iSndMutex;               // For iSndSem semaphore handling
-        RSemaphore      iSndSem;                 // Signal RemoteCmd request availability
-        TThreadId       iTestThreadId;           // Thread id for receiver 
-        RThread         iTestThread;
-        TBool           iTestThreadOpen;
-        TBool           iRemoteReceiveAvailable; // Is RemoteReceive available
-        RMutex          iRcvMutex;               // For iRcvSem semaphore handling
-        RSemaphore      iRcvSem;                 // Signal RemoteCmd request availability
-        //RSemaphore      iReceiverSem;            // Signal testmodule request availability
-        RPointerArray<HBufC8> iMessageQueue;
-        
-        TCmdDef         iCmdDef;
-        TCmdDef         iRcvCmdDef;  
-        TTestProgress   iProgress;
-                
-
-        // Result with timestamp information
-        TFullTestResult iFullResult;    
-        TInt            iTestThreadFailure;         
-        
-        // Event array        
-        RPointerArray<TEvent>           iEventArray; 
-        // State event array
-        RPointerArray<TDesC>            iStateEvents;  
-        
-        // Event handlers
-        CPrintHandler*          iPrintHandler;
-        CEventHandler*          iEventHandler;
-        CSndHandler*            iSndHandler;
-        CRcvHandler*            iRcvHandler;
-        CInterferenceHandler*   iInterferenceHandler;
-        CMeasurementHandler*    iMeasurementHandler;
-        CCommandHandler*        iCommandHandler;
-        
-        // Test Interface related members
-        RMutex          iInterferenceMutex; // For iInterferenceMutex semaphore handling
-        RSemaphore      iInterferenceSem;   // Synchronize interference queue access
-        TBool           iInterferenceNotifyAvailable; // Is interference notification
-                                                      //available?
-        // Test measurement related members
-        RMutex          iMeasurementMutex;  // For iMeasurementMutex semaphore handling
-        RSemaphore      iMeasurementSem;    // Synchronize measurement queue access
-        TBool           iMeasurementNotifyAvailable; // Is measurement notification
-                                                      //available?
-        RMessage2 iNotifyInterferenceMessage; // Interference notification message
-
-        TTestInterference   iTestInterference; // Struct for information
-        // Array for handling test interference thread's kill in
-        // panic etc. cases
-        RArray<RThread>  iSTIFTestInterferenceArray;
-
-        RMessage2 iNotifyMeasurementMessage; // Measurement notification message
-
-        // Struct for information
-        TTestMeasurement   iTestMeasurement;
-        // Array for handling measurement
-        RPointerArray<TMeasurementHandling>  iMeasurementHandlingArray;
-
-        // This mutex meaning is to make sure that test complete and test
-        // case cancel operations are not executed at the same time.
-        RMutex          iTestThreadMutex; 
-
-        // Command related members
-        CCommandDef*     iCommandDef;             // Command definition (content)
-        RMessage2       iNotifyCommandMessage;   // Command nofitication message
-        TBool           iCommandNotifyAvailable; // Is command notification available?
-        RMutex          iCommandMutex;           // For iCommandSem semaphore handling
-        RSemaphore      iCommandSem;             // Signal command request availability
-        
-    public:     // Friend classes
-        // None
-        
-    protected:  // Friend classes
-        // None
-    	
-    private:    // Friend classes
-        friend class CUnderTaker;
-        friend class CPrintHandler;
-        friend class CEventHandler;
-        friend class CSndHandler;
-        friend class CRcvHandler;
-        friend class TEvent;
-        friend class CInterferenceHandler;
-        friend class CMeasurementHandler;
-        friend class CCommandHandler;
-    };
-
-#endif // TEST_SERVER_MODULE_IF_H
-
-// End of File