--- a/stif/TestScripter/inc/TestScripter.h Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,814 +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 TestScripter
-* module of STIF Test Framework.
-*
-*/
-
-#ifndef TestScripter_H
-#define TestScripter_H
-
-// INCLUDES
-#include <e32std.h>
-
-#include <StifParser.h>
-#include <StifLogger.h>
-#include <StifTestModule.h>
-#include "TestScripterInternal.h"
-#include "TestKeywords.h"
-#include "StifKernelTestClass.h"
-#include "StifTestInterference.h"
-#include "STIFMeasurement.h"
-
-// CONSTANTS
-// Printing priorities
-const TInt KPrintPriLow = 10;
-const TInt KPrintPriNorm = 30;
-const TInt KPrintPriHigh = 50;
-// Log dir and file
-_LIT( KTestScripterLogDir, "\\Logs\\TestFramework\\TestScripter\\" );
-_LIT( KTestScripterLogFile, "TestScripter.txt" );
-_LIT( KTestScripterLogFileWithTitle, "TestScripter_[%S].txt");
-// Configuration file tags
-_LIT( KTestStartTag, "[Test]" );
-_LIT( KTestEndTag, "[Endtest]" );
-
-// Define tags
-_LIT( KDefineStartTag, "[Define]" );
-_LIT( KDefineEndTag, "[Enddefine]" );
-
-// Loop counter macro
-_LIT( KLoopCounter, "LOOP_COUNTER" );
-
-// MACROS
-// None
-
-// DATA TYPES
-class CTestRunner;
-typedef CScriptBase* (*CInterfaceFactory)( CTestModuleIf& aTestModuleIf );
-
-// FUNCTION PROTOTYPES
-// None
-
-// FORWARD DECLARATIONS
-class CTestRunner;
-class CTestContinue;
-class TTestModule;
-class TTestObjectBase;
-class TTestObject;
-class TTestInterference;
-class CStifTestMeasurement;
-class TTestMeasurement;
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// Predefined value entry
-class CDefinedValue
- :public CBase
- {
- public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CDefinedValue* NewL( TDesC& aName, TDesC& aValue );
-
- /**
- * Destructor.
- */
- virtual ~CDefinedValue();
-
- public: // New functions
-
- /**
- * Returns define name.
- */
- TDesC& Name();
-
- /**
- * Returns define value.
- */
- TDesC& Value();
-
- /**
- * Returns new define value.
- */
- void SetValueL( TDesC& aValue );
-
- private:
-
- /**
- * C++ default constructor.
- */
- CDefinedValue();
-
- /**
- * By default Symbian OS constructor is private.
- */
- void ConstructL( TDesC& aName, TDesC& aValue );
-
- private: // Data
-
- // Define name
- HBufC* iNameBuf;
- TPtrC iName;
-
- // Define value
- HBufC* iValueBuf;
- TPtrC iValue;
-
- };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// CTestScripter contains the Test Module interface of TestScripter
-// for STIF Test Framework
-
-class CTestScripter
- :public CTestModuleBase
- {
- public: // Enumerations
-
- private: // Enumerations
-
- public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- */
- static CTestScripter* NewL();
-
- /**
- * Destructor.
- */
- ~CTestScripter();
-
- public: // New functions
-
- /**
- * Call specified tst class object.
- */
- TInt CallTestClass( const TDesC& aLine );
-
- /**
- * Get pointer to test class object.
- */
- TInt GetTestScriptObject( const TDesC& aObjectName );
-
- /**
- * Return runner handle.
- */
- CTestRunner& TestRunner(){ return *iTestRunner; };
-
- 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 );
-
- /**
- * Internal fuction to get const value defined in
- * [Define]...[Enddefine] section of script file
- */
- IMPORT_C TInt GetConstantValue( const TDesC& aName, TDes& aValue );
-
- /**
- * Set result description of test case.
- */
- IMPORT_C void SetResultDescription(const TDesC& aDescr);
-
- /**
- * Internal fuction to set local value.
- */
- IMPORT_C TInt SetLocalValue(const TDesC& aName, const TDesC& aValue);
-
- /**
- * Internal fuction to get local value.
- */
- IMPORT_C TInt GetLocalValue(const TDesC& aName, TDes& aValue);
-
- protected: // New functions
-
- protected: // Functions from base classes
-
- private:
- /**
- * C++ default constructor.
- */
- CTestScripter();
-
- /**
- * By default Symbian OS constructor is private.
- */
- void ConstructL();
-
- /**
- * GetTestCaseL gets the specified test case section
- * from the onfigfile.
- */
- CStifSectionParser* GetTestCaseL( TInt aCaseNumber,
- const TFileName& aConfig );
-
- /**
- * RunTestL runs the testcase specified in section.
- */
- void RunTestL();
-
- /**
- * LoadTestModuleL loads test module.
- */
- TTestModule* LoadTestModuleL( TDesC& aModule );
-
- /**
- * CreateObjectL create new object.
- */
- void CreateObjectL( TDesC& aModule, TDesC& aObjectId );
-
- /**
- * CreateKernelObjectL create new kernel object.
- */
- void CreateKernelObjectL( TDesC& aDriver, TDesC& aObjectId );
-
- /**
- * DeleteObjectL deletes object with aObjectId.
- */
- TInt DeleteObjectL( TDesC& aObjectId );
-
- /**
- * GetObject returns object corresponding to aObjectId.
- */
- TTestObjectBase* GetObject( const TDesC& aObjectId );
-
- /**
- * Read initialization from file.
- */
- void ReadInitializationL( const TDesC& aIniFile,
- RPointerArray<CDefinedValue>& aDefines );
-
- /**
- * Read sub section from test case file.
- */
- CStifSectionParser* GetSubL(const TDesC& aSubName);
-
- /**
- * Updates result of test case.
- */
- void UpdateTestCaseResult(const TInt aError, const TDesC& aDescr);
-
- public: // Data
- // Logger
- CStifLogger* iLog;
-
- protected: // Data
-
- private: // Data
- // Test case array of running/runned test cases
- RPointerArray<TTestObjectBase> iTestObjects;
- // Array of test modules
- RPointerArray<TTestModule> iTestModules;
-
- // Test case result of the TestScripter
- TTestResult iResult;
-
- // Sectionparser for the current testcase
- CStifSectionParser* iSectionParser;
-
- // Currently used section parser (changed when executing a function (sub))
- CStifSectionParser* iCurrentParser;
-
- // It says if we need to call GetLine or GetNextLine for the parser
- TBool iCurrentParserReadFirstLine;
-
- // Stack of parsers for called functions (subs)
- RPointerArray<CStifSectionParser> iParserStack;
-
- // Pointer to used testrunner
- CTestRunner* iTestRunner;
-
- // Predefined values are listed here
- RPointerArray<CDefinedValue> iDefinedIni;
- RPointerArray<CDefinedValue> iDefinedRuntime;
- RPointerArray<CDefinedValue> iDefinedLocal;
-
- // Flag for OOM testing. If true test class's build
- // block execution result will ignored.
- TBool iOOMIgnoreFailure;
-
- // Flag which says if heap balance should be checked (affects only
- // EKA2 environment). May be set in StifSettings section.
- TBool iCheckHeapBalance;
-
- // 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;
-
- // The running test case's config file name
- TFileName iConfig;
-
- public: // Friend classes
-
- protected: // Friend classes
-
- private: // Friend classes
- friend class CTestRunner;
- friend class CTestContinue;
-
- };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// CTestRunner parses the TestScripter configuration file and
-// runs a testcase. CTestRunner is the friend of CTestScripter
-// and uses its private member variables directly.
-
-class CTestRunner
- :public CActive
- {
- public: // Enumerations
-
- private: // Enumerations
- enum TRunnerState{
- ERunnerIdle,
- ERunnerRunning,
- ERunnerCancel,
- ERunnerError,
- ERunnerPaused,
- };
-
- public: // Constructors and destructor
- /**
- * Two-phased constructor.
- */
- static CTestRunner* NewL( CTestScripter* aTestScripter );
-
- /**
- * Destructor.
- */
- ~CTestRunner();
-
- public: // New functions
- /**
- * Calls SetActive() from CActive.
- */
- void SetRunnerActive();
-
- /**
- * Get test case result handle.
- */
- RArray<TInt>& TestCaseResults(){ return iTestCaseResults; };
-
-
- 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( CTestScripter* aTestScripter );
-
- /**
- * By default Symbian OS constructor is private.
- */
- void ConstructL();
-
- /**
- * Executes one script line.
- */
- TBool ExecuteLineL( TDesC& aKeyword,
- CStifItemParser* aItem );
-
- /**
- * Executes method call to object script line.
- */
- TBool ExecuteCommandL( TDesC& aObject,
- CStifItemParser* aItem );
-
- /**
- * Executes event control script line.
- */
- TBool ExecuteEventL( TDesC& aKeyword,
- CStifItemParser* aItem );
-
- /**
- * Preprocess hardcoded values in test case.
- */
- CStifItemParser* PreprocessLineL( TDesC& line );
-
- /**
- * Checks if aWord is defined value.
- */
- TInt CheckDefined( TPtrC& aWord );
-
- /**
- * Checks if aWord is a local variable.
- */
- TInt CheckDefinedLocals( TPtrC& aWord );
-
- /**
- * Handles 'oomignorefailure' keyword parsing.
- */
- void OOMIgnoreFailureL( CStifItemParser* aItem );
-
- /**
- * Handles 'oomheapfailnext' keyword parsing.
- */
- void OOMHeapFailNextL( CStifItemParser* aItem );
-
- /**
- * Handles 'oomheapsetfail' keyword parsing.
- */
- void OOMHeapSetFailL( CStifItemParser* aItem );
-
- /**
- * Initialize all OOM related variables.
- */
- void OOMHeapToNormal();
-
- /**
- * Handles 'testinterference' keyword parsing.
- */
- void TestInterferenceL( CStifItemParser* aItem );
-
- /**
- * Starts test interference.
- */
- void StartInterferenceL( TDesC& aName, CStifItemParser* aItem );
-
- /**
- * Stops test interference.
- */
- void StopInterferenceL( TDesC& aName );
-
- /**
- * Handles 'measurement' keyword parsing.
- */
- void MeasurementL( CStifItemParser* aItem );
-
- /**
- * Starts measurement.
- */
- void StartMeasurementL( const TDesC& aType, CStifItemParser* aItem );
-
- /**
- * Stops measurementplugin's measurement.
- */
- void StopMeasurementL( const TDesC& aType );
-
- /**
- * Adds new test case result. Used with 'allownextresult'
- * and 'allowerrorcodes' keywords.
- */
- void AddTestCaseResultL( CStifItemParser* aItem );
-
- /**
- * Sends key press event to AppUi
- */
- TBool PressKeyL( CStifItemParser* aItem );
-
- /**
- * Sends text to AppUi
- */
- TBool TypeTextL( CStifItemParser* aItem );
-
- /**
- * Sends pointer event to AppUi
- */
- TBool SendPointerEventL( CStifItemParser* aItem );
- public: // Data
-
- protected: // Data
-
- private: // Data
- // Runner state
- TRunnerState iState;
-
- // Backpointer to CTestScripter
- CTestScripter* iTestScripter;
-
- // Allowed test case results
- RArray<TInt> iTestCaseResults;
-
- // Temporary line buffer
- HBufC* iLine;
-
- // Store for requested events
- RPointerArray<HBufC> iEventArray;
-
- // Pause timer
- RTimer iPauseTimer;
-
- // Pause value for timer
- TInt iRemainingTimeValue;
-
- // Loop times, counter and start position
- TInt iLoopTimes;
- TInt iLoopCounter;
- TInt iLoopStartPos;
- TBuf<10> iLoopCounterDes;
-
- // Loop (timed loop option)
- TBool iTimedLoop;
- TTime iStartTime;
- TTimeIntervalMicroSeconds iExpectedLoopTime;
-
- // For OOM heap testing, FAILNEXT: count
- TInt iHeapFailNext;
- // For OOM heap testing, SETFAIL: type and value(rate)
- RHeap::TAllocFail iHeapSetFailType;
- TInt iHeapSetFailValue;
-
- // Array for test interference
- RPointerArray<TTestInterference> iTestInterferenceArray;
-
- // CStifTestMeasurement object
- RPointerArray<TTestMeasurement> iTestMeasurementArray;
-
- // Message displayed when leave occurs during script parsing
- TBuf<256> iRunErrorMessage;
-
- public: // Friend classes
-
- protected: // Friend classes
-
- private: // Friend classes
-
- };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// CTestContinue gets ContinueScript signals from test class
-class CTestContinue
- :public CActive
- {
- public: // Enumerations
-
- private: // Enumerations
-
- public: // Constructors and destructor
- /**
- * Two-phased constructor.
- */
- static CTestContinue* NewL( CTestScripter* aTestScripter,
- TTestObject* aObject );
-
- /**
- * Destructor.
- */
- ~CTestContinue();
-
- public: // New functions
-
- 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.
- */
- CTestContinue( CTestScripter* aTestScripter,
- TTestObject* aObject );
-
- /**
- * By default Symbian OS constructor is private.
- */
- void ConstructL();
-
- public: //Data
-
- protected: // Data
-
- private: // Data
- // Backpointer to CTestScripter
- CTestScripter* iTestScripter;
-
- // Objectid for this object
- TTestObject* iObject;
-
- public: // Friend classes
-
- protected: // Friend classes
-
- private: // Friend classes
-
- };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// TTestObjectBase contains test object base information
-class TTestObjectBase
- {
- public:
- enum TObjectType
- {
- EObjectNormal,
- EObjectKernel,
- };
-
- public:
- TTestObjectBase( TObjectType aType );
- virtual ~TTestObjectBase();
- public:
- TName& ObjectId(){return iName;}
- TObjectType ObjectType(){ return iType; };
-
- virtual TInt RunMethodL( CStifItemParser& aItem ) = 0;
- virtual TBool Signal() = 0;
- virtual TBool Wait() = 0;
-
- public:
- TInt iAsyncResult;
-
- protected:
- TObjectType iType;
-
- private:
- TName iName;
-
- };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// TTestObject contains test object information
-class TTestObject : public TTestObjectBase
- {
- public:
- TTestObject();
- virtual ~TTestObject();
-
- public:
- TInt RunMethodL( CStifItemParser& aItem );
- inline TBool Signal(){ return ( iCount++ < 0 ); };
- inline TBool Wait(){ return ( --iCount >= 0 ); };
-
- public:
- CScriptBase* iScript;
- CTestContinue* iContinue;
-
- private:
- TInt iCount;
- };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// TTestObjectKernel contains kernel test object information
-class TTestObjectKernel : public TTestObjectBase
- {
- public:
- TTestObjectKernel();
- virtual ~TTestObjectKernel();
-
- public:
- TInt RunMethodL( CStifItemParser& aItem );
-
- // Signal and Wait not supported
- TBool Signal(){ return ETrue; };
- TBool Wait(){ return ETrue; };
-
- TName& LddName(){ return iLddName; }
- RStifKernelTestClass& KernelTestClass(){ return iTestClass; }
-
- private:
- RStifKernelTestClass iTestClass;
- TName iLddName;
-
- };
-
-// CLASS DECLARATION
-
-// DESCRIPTION
-// TTestModule contains test module information
-class TTestModule
- {
- public:
- TTestModule(){};
- ~TTestModule(){ iLibrary.Close(); };
-
- public:
- TName& ModuleName(){return iName;}
-
- public:
- RLibrary iLibrary;
- CInterfaceFactory iLibEntry;
-
- private:
- TName iName;
-
- };
-
-// DESCRIPTION
-// TTestInterference contains test interference object information
-class TTestInterference
- {
- public:
- TTestInterference(){ iInterference = NULL; };
- ~TTestInterference(){ delete iInterference; };
-
- public:
-
- public:
- // "object" name given in test case file.
- TName iName;
- // MSTIFTestInterference object.
- MSTIFTestInterference* iInterference;
-
- private:
-
- };
-
-// 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 // TestScripter_H
-
-// End of File