stif/TestCombiner/inc/TestCombiner.h
branchRCL_3
changeset 40 07b41fa8d1dd
parent 39 3406c99bc375
child 43 ca8a1b6995f6
--- a/stif/TestCombiner/inc/TestCombiner.h	Thu Jul 15 20:25:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,883 +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 
-* TestCombiner module of STIF Test Framework.
-*
-*/
-
-#ifndef TESTCOMBINER_H
-#define TESTCOMBINER_H
-
-//  INCLUDES
-#include <e32std.h>
-
-#include <StifParser.h>
-#include <StifLogger.h>
-#include <StifTestEventInterface.h>
-#include <StifTestModule.h>
-#include <stifinternal/TestServerClient.h>
-#include "TestKeywords.h"
-#include "TestCombinerEvent.h" 
-#include "TestCombinerUtils.h" 
-#include "STIFMeasurement.h"
-
-// CONSTANTS
-// Printing priorities
-const TInt KPrintPriExec = 400;
-const TInt KPrintPriLow  = 300;
-const TInt KPrintPriNorm = 200;
-const TInt KPrintPriHigh = 100;
-// Log dir and file
-_LIT( KTestCombinerLogDir, "\\Logs\\TestFramework\\TestCombiner\\" );
-_LIT( KTestCombinerLogFile, "TestCombiner.txt" );
-_LIT( KTestCombinerLogFileWithTitle, "TestCombiner_[%S].txt" );
-// Configuration file tags
-_LIT( KTestStartTag, "[Test]" );
-_LIT( KTestEndTag, "[Endtest]" );
-// Define tags
-_LIT( KDefineStartTag, "[Define]" );
-_LIT( KDefineEndTag, "[Enddefine]" );
-// Initialization tags
-_LIT( KInitStartTag, "[Init]" );
-_LIT( KInitEndTag, "[Endinit]" );
-_LIT( KInitRcpTimeout, "rcptimeout" );
-
-// Remote protocol timeout 
-const TInt KRemoteProtocolTimeout = 30000000;
-// Remote protocol Master id
-const TUint32 KRemoteProtocolMasterId = 0xdeadbeef;
-
-// Loop counter macro
-_LIT( KLoopCounter, "LOOP_COUNTER" );
-
-// MACROS
-// None
-
-// DATA TYPES
-// None
-
-// FUNCTION PROTOTYPES
-// None
-
-// FORWARD DECLARATIONS
-class CTestRunner;
-class CTestCase;
-class CTCTestCase;
-class CRemoteTestCase;
-class CTCTestModule;
-class CRemoteTimer;
-class CRemoteReceiver;
-class CRemoteSendReceive;
-class TTestMeasurement;
-    
-// CLASS DECLARATION
-
-// DESCRIPTION
-// CTestCombiner contains the Test Module interface of TestCombiner 
-// for STIF Test Framework
-
-NONSHARABLE_CLASS(CTestCombiner) 
-    :public CTestModuleBase
-    {
-    public: // Enumerations
-
-    private: // Enumerations
-
-    public: // Constructors and destructor
-        /**
-        * Two-phased constructor.
-        */
-        static CTestCombiner* NewL();
-
-        /**
-        * Destructor.
-        */
-        ~CTestCombiner();
-
-    public: // New functions
-        /**
-        * Test Case completion from CTCTestCase.
-        */
-        void Complete( CTestCase* aTestCase, TInt aError=KErrNone );
-
-        /**
-        * Set event request pending.
-        */
-         void SetEventPendingL( TEventIf aEvent );
-
-        /**
-        * Handles timeouts.
-        */
-        void RemoteTimeout();
-
-        /**
-        * Handles responce received from slave
-        */
-        void ReceiveResponse( TDesC& aMsg );
-
-    public: // Functions from base classes
-        /**
-        * Test module initialization.
-        */ 
-        TInt InitL( TFileName& aIniFile, TBool aFirstTime );
-
-        /**
-        * GetTestCasesL is used to inquire testcases. 
-        */
-        TInt GetTestCasesL( const TFileName& aConfigFile, 
-                            RPointerArray<TTestCaseInfo>& aTestCases );
-        /**
-        * RunTestCase is used to run an individual test case specified 
-        * by aTestCase. 
-        */
-        TInt RunTestCaseL( const TInt aCaseNumber, 
-                           const TFileName& aConfig, 
-                           TTestResult& aResult );
-
-    protected: // New functions
-
-    protected: // Functions from base classes
-
-    private:
-        /**
-        * C++ default constructor.
-        */
-        CTestCombiner();
-
-        /**
-        * By default Symbian OS constructor is private.
-        */
-        void ConstructL();
-
-        /**
-        * GetTestCaseL gets the specified test case section 
-        * from the configfile.
-        */
-        CStifSectionParser* GetTestCaseL( TInt aCaseNumber, 
-                                            const TFileName& aConfig );
-
-        /**
-        * RunTestL runs the testcase specified in section.
-        */
-        void RunTestL();
-      
-        /**
-        * StartTestL starts a specified testcase from another test module.
-        */
-        TInt StartTestL( CStartInfo& aStartInfo );
-
-        /**
-        * GetTestModuleL returns a specified test module description.
-        */
-        CTCTestModule* GetTestModuleL( TDesC& aModule,
-                                       TDesC& aIniFile,
-                                       const TDesC& aConfigFile  );
-
-        /**
-        * Gets a testcase identified with testid from test case array.
-        */
-        CTestCase* GetTest( TDesC& aTestId );
-     
-        /**
-        * Gets a running testcase identified with testid from test case array.
-        */
-        CTestCase* GetRunningTest( TDesC& aTestId );
-        
-        /**
-        * Gets a testcase identified with testid from test case array.
-        */
-        CTCTestCase* GetLocalTest( TDesC& aTestId );
-     
-        /**
-        * Gets a running testcase identified with testid from test case array.
-        */
-        CTCTestCase* GetLocalRunningTest( TDesC& aTestId );
-
-        /**
-        * Gets a testcase identified with aSlaveId from slave array.
-        */
-        CRemoteTestCase* GetRemoteTest( TDesC& aTestId );
-
-        /**
-        * Gets a testcase identified with aSlaveId from slave array.
-        */
-        CRemoteTestCase* GetRemoteTest( TUint32 aSlaveId );
-        
-        CRemoteTestCase* GetRemoteTestRunSent( TUint32 aSlaveId );
-        /**
-        * Gets a running testcase identified with aSlaveId from slave array.
-        */
-        CRemoteTestCase* GetRunningRemoteTest( TUint32 aSlaveId );
-
-        /**
-        * Gets a testcase running on slave with aSlaveDevId.
-        */
-        CRemoteTestCase* GetRemoteRunningTestOnSlave( TUint32 aSlaveDevId );
-
-        /**
-        * Gets a correct CRemoteSendReceive object on slave with aSlaveId.
-        */
-        CRemoteSendReceive* GetRemoteSendReceive( TUint32 aSlaveId );        
-
-        /**
-        * Get running slave.
-        */
-        CSlaveInfo* CTestCombiner::GetSlave( TUint32 aSlaveId );
-        CSlaveInfo* CTestCombiner::GetSlave( TDesC& aSlaveName );
-
-        /**
-        * Check requested events and send unset to first requested.
-        */
-        TBool UnsetEvent( TEventIf& aEvent, TRequestStatus& aStatus );
-
-        /**
-        * Read initialization from file.
-        */
-        void ReadInitializationL( const TDesC& aIniFile );
-
-        /**
-        * Executes measurement script line.
-        */
-        void ExecuteMeasurementL( CStifItemParser* aItem );
-
-        /**
-        * Starts measurement.
-        */
-        void StartMeasurementL( const TDesC& aType, CStifItemParser* aItem );
-
-        /**
-        * Stops measurementplugin's measurement.
-        */
-        void StopMeasurementL( const TDesC& aType );
-        
-        /**
-        * Returns new index for test module controller.
-        * This number is appended to module controller name.
-        * This method is used when option to run every test case in separate
-        * process is set to on.                        
-        */
-        TInt GetIndexForNewTestModuleController(void);
-       
-        /**
-        * Append to TC's result description (if possible due to length)
-        * limitation provided text in [] brackets.
-        */
-        void AppendTestResultToResultDes(TDes& aResultDescr, const TDesC& aTestCaseResultDescr);
-
-
-    public:     // Data
-        // Logger 
-        CStifLogger*                    iLog;
-
-    protected:  // Data
-          
-    private:    // Data
-        // Test case array of running/runned test cases 
-        RPointerArray<CTestCase>        iTestCases;
-
-        // SendReceive array(asynchronous sendreveive)
-        RPointerArray<CRemoteSendReceive> iSendReceive;
-
-        // Array of test modules
-        RPointerArray<CTCTestModule>    iTestModules;
-
-        // TestId of the waited (by complete keyword) test case 
-        TName                           iWaitTestCase;
-
-        // Flag to indicate that activescheduler is started    
-        TBool                           iSchedulerActive;
-
-        // Number of currently running test cases
-        TInt                            iRunningTests;
-
-        // Test case result of the TestCombiner
-        TInt                            iResult;
-
-        // Error code in case when execution of script fails
-        TInt                            iScriptFailed;
-        
-        // Error description in case when execution of script fails
-        TName                           iScriptFailedDescription;
-        
-        // Sectionparser for the current testcase
-        CStifSectionParser*             iSectionParser;
-
-        // Pointer to used testrunner
-        CTestRunner*                    iTestRunner;
-
-        // Pointer to used testrunner
-        CRemoteReceiver*                iRemoteReceiver;
-
-        // Event for async NotifyEvent
-        TEventIf                        iEvent;
-        TEventIfPckg                    iEventPckg;
-
-        RPointerArray<TEventTc>         iEventArray;
-
-         // Predefined values are listed here
-        RPointerArray<CDefinedValue>    iDefined;
-
-        // CSlaveInfo 
-        RPointerArray<CSlaveInfo>       iSlaveArray;
-
-        // Remote protocol timeout
-        TInt                            iRemoteTimeout;
-
-        // Variable for abortimmediately keyword @js
-        TBool                           iCancelIfError;
-
-        // Number of the failed test case, needed when using 
-        // abortimmediately keyword @js
-        TInt                            iFailedTestCase;
-
-        // CStifTestMeasurement object
-        RPointerArray<TTestMeasurement> iTestMeasurementArray;
-
-        // Indicate that loop is used in test case file.
-        // This is used for reseting and allowing allocated id's etc.
-        // (E.g. testid values can be same in loop).
-        TBool                           iLoopIsUsed;
-        RArray<TAny*>                   iLoopAllocationArray;
-
-        // Standard Logger 
-        CStifLogger*                    iStdLog;
-
-        // Test case Logger 
-        CStifLogger*                    iTCLog;
-
-        // Flag which says if test case title should be appended to the
-        // log file name. This is read from SettingServer
-        TBool                               iAddTestCaseTitleToLogName;
-        
-        // Counter for created TCModuleControllers
-        TInt                            iIndexTestModuleControllers;
-
-        // Is this UI testing?
-        // If yes, then Test Engine works in a specific way.
-        // It creates new process for every test scripter's test case
-        // and deletes it after test case has finished.
-        TBool                           iUITestingSupport;
-        
-        // Should every test case be executed in separate process?
-        // This option is similar to iUITestingSupport, however
-        // it does not delete the process after test case is finished.
-        TBool                           iSeparateProcesses;
-
-    public:     // Friend classes
-
-    protected:  // Friend classes
-
-    private:    // Friend classes
-        friend class CTestRunner;
-        friend class CTestEventNotifier;
-
-    };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// CTestRunner parses the TestCombiner configuration file and 
-// runs a testcase. CTestRunner is the friend of CTestCombiner
-// and uses its private member variables directly.
-
-NONSHARABLE_CLASS(CTestRunner) 
-    :public CActive
-    {
-    public: // Enumerations
-
-    private: // Enumerations
-        enum TRunnerState{
-            ERunnerIdle,
-            ERunnerRunning,
-            ERunnerWaitTestCase,
-            ERunnerWaitEvent,
-            ERunnerWaitUnset,
-            ERunnerWaitTimeout,
-            ERunnerCancel,
-            ERunnerError,
-            ERunnerAllocate,
-            ERunnerFree,
-            ERunnerRemote,
-            ERunnerReady,
-            };
-
-    public:  // Constructors and destructor  
-        /**
-        * Two-phased constructor.
-        */
-        static CTestRunner* NewL( CTestCombiner* aTestCombiner );
-
-        /**
-        * Destructor.
-        */
-        ~CTestRunner();
-
-    public: // New functions
-        /**
-        * Calls SetActive() from CActive.
-        */
-        void SetRunnerActive();
-
-        /**
-        * Handles received response from slave.
-        */
-        TBool ReceiveResponseL( TDesC& aMsg );
-
-        /**
-        * Cancel testcases.
-        */
-        void CancelTestCases();
-
-    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
-
-    protected:  // Functions from base classes
-
-    private:
-        /**
-        * C++ default constructor.
-        */
-        CTestRunner( CTestCombiner* aTestCombiner );
-
-        /**
-        * By default Symbian OS constructor is private.
-        */
-        void ConstructL();
-
-        /**
-        * Executes one script line.
-        */
-        TBool ExecuteLineL( CStifItemParser* aItem );
-
-        /**
-        * Executes run script line.
-        */
-        TBool ExecuteRunL( CStifItemParser* aItem );
-
-        /**
-        * Parses run parameters.
-        */
-        void ParseRunParamsL( CStifItemParser* aItem, CStartInfo& aStartInfo );
-
-        /**
-        * Executes test control script line.
-        */
-        TBool ExecuteTestCtlL( CStifItemParser* aItem, 
-                               TTCKeywords::TKeywords aKeyword );
-                               
-        /**
-        * Executes pause in combiner
-        */
-        TBool ExecuteCombinerPauseL( CStifItemParser* aItem );
-
-        /**
-        * Executes pause script line.
-        */
-        TBool ExecutePauseL( CStifItemParser* aItem, CTestCase* aTestCase );
-
-        /**
-        * Executes complete script line.
-        */
-        TBool ExecuteCompleteL( CStifItemParser* aItem, CTestCase* aTestCase );
-
-        /**
-        * Executes event set script line.
-        */
-        TBool ExecuteEventSetL( CStifItemParser* aItem );
-
-        /**
-        * Executes event unset script line.
-        */
-        TBool ExecuteEventUnsetL( CStifItemParser* aItem );
-
-        /**
-        * Executes event control command.
-        */
-        TBool ExecuteEventCtlL( CStifItemParser* aItem, 
-                                TTCKeywords::TKeywords aKeyword );
-
-        /**
-        * Executes allocate script line.
-        */
-        TBool ExecuteAllocateL( CStifItemParser* aItem );
-
-        /**
-        * Executes free script line.
-        */
-        TBool ExecuteFreeL( CStifItemParser* aItem );
-
-        /**
-        * Frees slave.
-        */
-        void ExecuteFreeL( CSlaveInfo* aSlave );
-
-        /**
-        * Executes remote script line.
-        */
-        TBool ExecuteRemoteL( CStifItemParser* aItem );
-
-        /**
-        * Executes remote run script line.
-        */
-        TBool ExecuteRemoteRunL( CStifItemParser* aItem, CSlaveInfo* aSlave,
-                                 HBufC *aSetUnsetEvent = NULL,
-                                 TInt aCaseNumber = 0 );
-
-        /**
-        * Executes remote test control script line.
-        */
-        TBool ExecuteRemoteTestCtlL( CStifItemParser* aItem, 
-                                     CTestCase* aTestCase, 
-                                     TInt aCmd  );
-
-        /**
-        * Executes remote event control script line.
-        */
-        TBool ExecuteRemoteEventCtlL( CStifItemParser* aItem, 
-                                      CSlaveInfo* aSlave, 
-                                      TInt aCmd  );
-                                      
-        /**
-        * Executes remote event set unset line
-        */
-        TBool ExecuteRemoteSetUnsetEventL( CStifItemParser* aItem,
-                                      CSlaveInfo* aSlave,
-                                      TInt aCmd  );
-
-        /**
-        * Executes asynchronous remote sendreceive control script line.
-        */
-        TBool ExecuteRemoteSendReceiveL( CStifItemParser* aItem, 
-                                      CSlaveInfo* aSlave );
-
-        /**
-        * Executes remote unknown control script line.
-        */
-        TBool ExecuteRemoteUnknownL( CStifItemParser* aItem, 
-                                     CSlaveInfo* aSlave,
-                                     TDesC& aCommand );
-        /**
-        * Handles received run responses from slave.
-        */
-        TBool ReceiveResponseRunL( CStifTFwIfProt& aMsg );
-
-        /**
-        * Handles received test control responses from slave.
-        */
-        TBool ReceiveResponseTestCtlL( CStifTFwIfProt& aMsg );
-
-        /**
-        * Handles received Event system control responses from slave.
-        */
-        TBool ReceiveResponseEventCtlL( CStifTFwIfProt& aMsg );
-
-        /**
-        * Handles received asynchronous sendreceive responses from slave.
-        */
-        TBool ReceiveResponseSendReceiveL( CStifTFwIfProt& aMsg );
-
-        /**
-        * Handles received responses for unspecified commands from slave.
-        */
-        TBool ReceiveResponseUnknownL( CStifTFwIfProt& aMsg );
-
-        /**
-        * Check unset event we are waiting.
-        */
-        TBool CheckUnsetEvent();
-
-        /**
-        * Parses optional argument.
-        */
-        void ParseOptArgL( const TDesC& aOptArg, TPtrC& aArg, TPtrC& aVal);
-
-        /**
-        * Preprocess hardcoded values in test case.
-        */                    
-        CStifItemParser* PreprocessLineL( TDesC& line );
-
-        /**
-        * Checks if aWord is defined value.
-        */                    
-        TInt CheckDefined( TPtrC& aWord );
-
-        /**
-        * Handle the loop keyword operations.
-        */                    
-        void ExecuteLoopL( CStifItemParser* aItem );
-
-        /**
-        * Handle the endloop keyword operations.
-        */                    
-        TBool ExecuteEndLoopL();
-
-    public:     //Data
-
-    protected:  // Data
-
-    private:    // Data
-        // Runner state
-        TRunnerState                iState;
-
-        // Backpointer to CTestCombiner
-        CTestCombiner*              iTestCombiner;
-
-        // Event system control
-        TEventIf                    iEvent;
-
-        // Pause timer
-        RTimer                      iPauseTimer;
-        TName                       iPausedTestCase;
-        TInt                        iPauseTime;
-        
-        // Pause combiner timer
-        RTimer                      iPauseCombTimer;
-        TInt                        iPauseCombRemainingTime;
-
-        // Temporary line buffer 
-        HBufC*                      iLine;
-
-        // Remote control protocol timer
-        CRemoteTimer*               iRemoteTimer;
-
-        // Loop times, counter and start position
-        TInt                    iLoopTimes;
-        TInt                    iLoopCounter;
-        TInt                    iLoopStartPos;
-        TBuf<10>                iLoopCounterDes;
-        TInt                    iEndLoopStartPos;
-
-        // Loop passlimit (endurance) feature
-        TInt                    iPasslimit;
-        TBool                   iPasslimitEnabled;
-        TInt                    iPassedIterationCnt;
-        
-        // Loop (timed loop option)
-        TBool                   iTimedLoop;
-        TTime                   iStartTime;
-        TTimeIntervalMicroSeconds iExpectedLoopTime;
-
-		// Message displayed when leave occurs during script parsing
-		TBuf<256> iRunErrorMessage;
-    public:      // Friend classes
-
-    protected:  // Friend classes
-
-    private:     // Friend classes
-        friend class CTestCombiner;
-
-    };
-
-// CLASS DECLARATION
-typedef TBuf<0x200> TRemoteProtMsg;
-
-// DESCRIPTION
-// CTestRemoteReceiver handles remote protocol receiving
-NONSHARABLE_CLASS(CRemoteReceiver) 
-    :public CActive
-    {
-    public: // Enumerations
-         
-    private: // Enumerations
-        enum TReceiverState
-            {
-            EReceiverIdle,
-            EReceiverPending,
-            };
-
-    public:  // Constructors and destructor  
-        /**
-        * Two-phased constructor.
-        */
-        static CRemoteReceiver* NewL( CTestCombiner* aTestCombiner );
-
-        /**
-        * Destructor.
-        */
-        ~CRemoteReceiver();
-
-    public: // New functions
-        /**
-        * Calls SetActive() from CActive.
-        */
-        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();
-
-    protected:  // New functions
-
-    protected:  // Functions from base classes
-
-    private:
-        /**
-        * C++ default constructor.
-        */
-        CRemoteReceiver( CTestCombiner* aTestCombiner );
-
-        /**
-        * By default Symbian OS constructor is private.
-        */
-        void ConstructL();
-
-    public:     //Data
-
-    protected:  // Data
-
-    private:    // Data
-        // Runner state
-        TReceiverState              iState;
-
-        // Backpointer to CTestCombiner
-        CTestCombiner*              iTestCombiner;
-
-        // Remote protocol message
-        TRemoteProtMsg              iRemoteMsg;
-
-    public:     // Friend classes
-
-    protected:  // Friend classes
-
-    private:    // Friend classes
-
-    };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// CRemoteTimer handles remote protocol timeouts
-NONSHARABLE_CLASS(CRemoteTimer) 
-    :public CActive
-    {
-    public: // Enumerations
-         
-    private: // Enumerations
-        enum TTimerState
-            {
-            ETimerIdle,
-            ETimerPending,
-            };
-
-    public:  // Constructors and destructor  
-        /**
-        * Two-phased constructor.
-        */
-        static CRemoteTimer* NewL( CTestCombiner* aTestCombiner );
-
-        /**
-        * Destructor.
-        */
-        ~CRemoteTimer();
-
-    public: // New functions
-        /**
-        * Starts timer.
-        */
-        void SetTimerActive( TTimeIntervalMicroSeconds32 anInterval );
-
-    public: // Functions from base classes     
-        /**
-        * RunL derived from CActive handles the completed requests.
-        */
-        void RunL();
-
-        /**
-        * DoCancel derived from CActive handles the Cancel.
-        */
-        void DoCancel();
-
-    protected:  // New functions
-          
-    protected:  // Functions from base classes
-
-    private:
-        /**
-        * C++ default constructor.
-        */
-        CRemoteTimer( CTestCombiner* aTestCombiner );
-
-        /**
-        * By default Symbian OS constructor is private.
-        */
-        void ConstructL();
-
-    public:     //Data
-     
-    protected:  // Data
-
-    private:    // Data
-        // Runner state
-        TTimerState     iState;
-
-        // Backpointer to CTestCombiner
-        CTestCombiner*  iTestCombiner;
-
-        // Pause timer
-        RTimer          iTimer;
-
-    public:      // Friend classes
-
-    protected:  // Friend classes
-
-    private:     // Friend classes
-
-    };
-
-
-// DESCRIPTION
-// TTestMeasurement contains test measurement module information
-class TTestMeasurement
-    {
-    public: 
-        TTestMeasurement(){ iMeasurement = NULL; };
-        ~TTestMeasurement(){ delete iMeasurement; };
-
-    public:
-
-    public:
-        // "object" name given in test case file.
-        TName                   iName;
-        // MSTIFTestInterference object.
-        CSTIFTestMeasurement*  iMeasurement;
-
-    private:
-
-    };
-
-#endif        // TESTCOMBINER_H
-
-// End of File