diff -r 86a2e675b80a -r 813b186005b6 stif/TestEngine/inc/TestCaseController.h --- a/stif/TestEngine/inc/TestCaseController.h Mon Jun 28 15:36:07 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,910 +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 -* CTestCaseController, the CTestProgressNotifier and the -* CTestEventNotifier. -* -*/ - -#ifndef TEST_CASE_CONTROLLER_H -#define TEST_CASE_CONTROLLER_H - -// INCLUDES -#include -#include -#include -#include -#include "TestEngine.h" -#include "TestCallBack.h" - -#include "StifHWReset.h" - -// CONSTANTS -// None - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None -typedef CStifHWReset*( *CTestInterfaceFactory )(); - -// FORWARD DECLARATIONS -class CTestModuleController; -class CTestReport; -class CTestCaseTimeout; - -// CLASS DECLARATION - -// DESCRIPTION -// CTestCaseController is an active object used for running the test case -// using the RTestExecution API. -class CTestCaseController - : public CActive - { - public: // Enumerations - // None - - private: // Enumerations - - // TTestCaseStatus defines the status of test case - enum TTestCaseStatus - { - ETestCaseIdle, - ETestCaseRunning, - ETestCaseCompleted, - ETestCaseTimeout, - ETestCaseSuicided, //test case has killed itself - }; - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CTestCaseController* NewL( CTestEngine* aEngine, - CTestReport* aTestReport, - CAtsLogger& aAtsLogger, - RTestExecution aTestExecution, - const TTestInfo& aTestInfo ); - - /** - * Destructor. - */ - ~CTestCaseController(); - - public: // New functions - - /** - * StartL starts the CTestCaseController active object. - */ - void StartL( const RMessage2& aMessage ); - - /** - * Timeouts a testcase - */ - void Timeout(); - - /** - * Kills a testcase - */ - void Suicide(TStopExecutionType aType, TInt aCode); - - 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 ); - - /** - * Get testcase info(test module, config file, test case, etc). - */ - void GetTestCaseInfo( TTestInfo& aTestInfo ); - - protected: // New functions - // None - - protected: // Functions from base classes - // None - - private: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(); - - /** - * Parametric C++ constructor. - */ - CTestCaseController( CTestEngine* aEngine, - CTestReport* aTestReport, - CAtsLogger& aAtsLogger, - RTestExecution aTestExecution, - const TTestInfo& aTestInfo ); - - /** - * Generates XML log about the test case. - */ - void GenerateXmlLogL(); - - public: // Data - // None - - protected: // Data - // None - - private: // Data - - // Pointer to CTestEngine - CTestEngine* iEngine; - - // Pointer to Test Report - CTestReport* iTestReport; - - // Handle to RTestExecution - RTestExecution iTestExecution; - - // Pointer to timeout handler - CTestCaseTimeout* iTimeout; - - // Test Info - TTestInfo iTestInfo; - - // Test case arguments - HBufC* iTestCaseArguments; - - // Internal state - TTestCaseStatus iState; - - // Test Result - TFullTestResult iResult; - TFullTestResultPckg iResultPckg; - - // Message to be completed when case is finished - RMessage2 iMessage; - - // AtsLogger - CAtsLogger& iAtsLogger; - - // RDebug logging for testcase status - CStifLogger* iRDebugLogger; - - // Stop execution type - TStopExecutionType iStopExecutionType; - - public: // Friend classes - // None - - protected: // Friend classes - // None - - private: // Friend classes - - friend class CTestRemoteCmdNotifier; - - }; - -// DESCRIPTION -// CTestProgressNotifier is an active object used for notifications called from -// Test Module using the RTestExecution API. -class CTestProgressNotifier - : public CActive - { - public: // Enumerations - // None - - private: // Enumerations - - // TTestProgressStatus defines the status of notification - enum TTestProgressStatus - { - ETestProgressIdle, - ETestProgressPending, - ETestProgressCompleted - }; - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CTestProgressNotifier* NewL( CTestEngine* aEngine, - RTestExecution aTestExecution ); - - /** - * Destructor. - */ - ~CTestProgressNotifier(); - - public: // New functions - - /** - * StartL starts the CTestProgressNotifier active object. - */ - void StartL( const RMessage2& aMessage ); - - 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: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(); - - /** - * Parametric C++ constructor. - */ - CTestProgressNotifier( CTestEngine* aEngine, - RTestExecution aTestExecution ); - - public: // Data - // None - - protected: // Data - // None - - private: // Data - - // Pointer to CTestEngine - CTestEngine* iEngine; - - // Handle to RTestExecution - RTestExecution iTestExecution; - - // Internal state - TTestProgressStatus iState; - - // Test Progress - TTestProgress iProgress; - TTestProgressPckg iProgressPckg; - - // Message to be completed when notification is completed - RMessage2 iMessage; - - public: // Friend classes - // None - - protected: // Friend classes - // None - - private: // Friend classes - // None - - }; - -// DESCRIPTION -// CTestEventNotifier is an active object used for event notify from -// Test Module using the RTestExecution API. -class CTestEventNotifier - : public CActive - { - public: // Enumerations - // None - - private: // Enumerations - - // TTestEventStatus defines the status of notification - enum TTestEventStatus - { - ETestEventIdle, - ETestEventPending, - ETestEventCompleted - }; - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CTestEventNotifier* NewL( CTestEngine* aEngine, - RTestExecution aTestExecution ); - - /** - * Destructor. - */ - ~CTestEventNotifier(); - - public: // New functions - - /** - * StartL starts the CTestEventNotifier active object. - */ - void Start(); - - /** - * For event control. - */ - void CtlEvent( const TEventIf& aEvent, TRequestStatus& aStatus ); - - /** - * Check if CtlEvent should be called - */ - TBool CheckCtlEvent( const TEventIf& aEvent ); - - 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: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(); - - /** - * Parametric C++ constructor. - */ - CTestEventNotifier( CTestEngine* aEngine, - RTestExecution aTestExecution); - - public: // Data - // None - - protected: // Data - // None - - private: // Data - - // Pointer to CTestEngine - CTestEngine* iEngine; - - // Handle to RTestExecution - RTestExecution iTestExecution; - - // Internal state - TTestEventStatus iState; - - // Event interface - TEventIf iEvent; - TEventIfPckg iEventPckg; - TEventIf iEventNotify; - TEventIfPckg iEventNotifyPckg; - - // Event array - RPointerArray iEventArray; - - // Associated event controller - CTestEventController* iController; - - public: // Friend classes - // None - - protected: // Friend classes - // None - - private: // Friend classes - // None - - }; - -// DESCRIPTION -// CTestEventController is used for event controlling from -// TestEngine. -class CTestEventController - : public CBase - { - public: // Enumerations - // None - - private: // Enumerations - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CTestEventController* NewL( CTestEngine* aEngine, - const TEventIf& aEvent, - TRequestStatus* aStatus ); - - static CTestEventController* NewL( CTestEngine* aEngine, - const TEventIf& aEvent, - RMessage2& aMessage ); - - /** - * Destructor. - */ - ~CTestEventController(); - - public: // New functions - /** - * Event complete. - */ - void EventComplete(); - - public: // Functions from base classes - - protected: // New functions - // None - - protected: // Functions from base classes - // None - - private: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL( TRequestStatus* aStatus ); - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL( RMessage2& aMessage ); - - /** - * Parametric C++ constructor. - */ - CTestEventController( CTestEngine* aEngine, const TEventIf& aEvent ); - - /** - * Check all events. - */ - TBool CheckEventsL(); - - /** - * Check client events. - */ - TBool CheckClientEventsL(); - - /** - * Check testcase events. - */ - TBool CheckTestcaseEventsL(); - - /** - * Callback for event controller. - */ - static TInt EventCallBack( TAny* aTestEventController ); - - public: // Data - // None - - protected: // Data - // None - - private: // Data - - // Pointer to CTestEngine - CTestEngine* iEngine; - - // Either of these is completed when ready - // If aRequestStatus exists, it is completed, - // otherwise aMessage is completed. - TRequestStatus* iRequestStatus; - RMessage2 iMessage; - - // Event interface - TEventIf iEvent; - TEventIfPckg iEventPckg; - - // Number of active event commands - TInt iActiveEventCmds; - - RPointerArray iEventCallBacks; - - public: // Friend classes - // None - - protected: // Friend classes - // None - - private: // Friend classes - // None - - }; - -// DESCRIPTION -// CTestCaseTimeout is used for time controlling -class CTestCaseTimeout - : public CActive - { - public: // Enumerations - // None - - private: // Enumerations - // None - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CTestCaseTimeout* NewL( CTestCaseController* aCase, - TTimeIntervalMicroSeconds aTimeout ); - - /** - * Destructor. - */ - ~CTestCaseTimeout(); - - public: // New functions - - /** - * Starts timeout counting - */ - void Start(); - - 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: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(CTestCaseController* aCase, - TTimeIntervalMicroSeconds aTimeout ); - - /** - * C++ constructor. - */ - CTestCaseTimeout(); - - public: // Data - // None - - protected: // Data - // None - - private: // Data - CTestCaseController* iCase; - TTimeIntervalMicroSeconds iTimeout; - RTimer iTimer; - - // Storage for testcase timeout. - TTime iTestCaseTimeout; - - public: // Friend classes - // None - - protected: // Friend classes - // None - - private: // Friend classes - // None - - }; - -// DESCRIPTION -// CTestProgressNotifier is an active object used for notifications called from -// Test Module using the RTestExecution API. -class CTestRemoteCmdNotifier - : public CActive - { - public: // Enumerations - // None - - private: // Enumerations - - // TTestProgressStatus defines the status of notification - enum TTestProgressStatus - { - ETestProgressIdle, - ETestProgressPending, - ETestProgressCompleted - }; - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CTestRemoteCmdNotifier* NewL( CTestEngine* aEngine, - RTestExecution aTestExecution , - CTestCaseController* aTestCaseController, - CAtsLogger& aAtsLogger ); - - /** - * Destructor. - */ - ~CTestRemoteCmdNotifier(); - - public: // New functions - - /** - * StartL starts the CTestRemoteCmdNotifier active object. - */ - //void StartL( const RMessage& aMessage ); - - /** - * EnableReceive prepares to start active object - */ - void EnableReceive( const RMessage2& aMessage ); - - /** - * GetReceivedMsg get received message. - */ - void GetReceivedMsg( const RMessage2& aMessage ); - - /** - * Start starts the CTestCaseController active object. - */ - void Start( const RMessage2& aMessage ); - - /** - * CancelReq cancels the request. - */ - void CancelReq(); - - 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: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(); - - /** - * Parametric C++ constructor. - */ - CTestRemoteCmdNotifier( CTestEngine* aEngine, - RTestExecution aTestExecution, - CTestCaseController* aTestCaseController, - CAtsLogger& aAtsLogger ); - - /** - * Loads dynamically reset module. - */ - TInt DynamicResetModule( CTestModuleIf::TRebootType aResetType ); - - public: // Data - // None - - protected: // Data - // None - - private: // Data - - // Pointer to CTestEngine - CTestEngine* iEngine; - - // Handle to RTestExecution - RTestExecution iTestExecution; - - // Internal state - TTestProgressStatus iState; - - // Remote command's definition - TStifCommand iRemoteType; - TStifCommandPckg iRemoteTypePckg; - - TInt iMsgSize; - TPckg iMsgSizePckg; - - // Message to be completed when notification is completed - RMessage2 iMessage; - - HBufC8* iReceivedMsg; - - TInt iRebootCode; - TName iRebootName; - - // Pointer to CTestCaseController - CTestCaseController* iTestCaseController; - - TBool iMessageAvail; - - CAtsLogger& iAtsLogger; - - public: // Friend classes - // None - - protected: // Friend classes - // None - - private: // Friend classes - // None - - }; - -// DESCRIPTION -// CTestCommandNotifier is an active object used for command notify from -// Test Module using the RTestExecution API. -// It was created to allow test case to kill itself. -class CTestCommandNotifier: public CActive - { - public: // Enumerations - // None - - private: // Enumerations - // None - - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CTestCommandNotifier* NewL(CTestEngine* aEngine, RTestExecution aTestExecution); - - /** - * Destructor. - */ - ~CTestCommandNotifier(); - - public: // New functions - - /** - * StartL starts the CTestCommandNotifier active object. - */ - void Start(); - - 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: - - /** - * By default Symbian OS constructor is private. - */ - void ConstructL(); - - /** - * Parametric C++ constructor. - */ - CTestCommandNotifier(CTestEngine* aEngine, RTestExecution aTestExecution); - - public: // Data - // None - - protected: // Data - // None - - private: // Data - - // Pointer to CTestEngine - CTestEngine* iEngine; - - // Handle to RTestExecution - RTestExecution iTestExecution; - - // Command to be sent - TCommand iCommand; - TCommandPckg iCommandPckg; - TBuf8 iParamsPckg; - - public: // Friend classes - // None - - protected: // Friend classes - // None - - private: // Friend classes - // None - - }; - - -#endif // TEST_CASE_CONTROLLER_H - -// End of File