diff -r 000000000000 -r 40261b775718 mmtestenv/mmtestfw/Source/TestFramework/parseline.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmtestenv/mmtestfw/Source/TestFramework/parseline.h Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,194 @@ +// Copyright (c) 2002-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: +// + +#ifndef __PARSELINE_H__ +#define __PARSELINE_H__ + +/** + * + * Max len of string buffers + * + * @xxxx + * + */ +const TInt KMaxLenStepData = 256; +const TInt KMaxLenScriptLine = 2000; + +/** + * + * Guard timer default + * + * @xxxx + * + */ +const TInt KNoGuardTimer = -1L; + +/** + * constant that indicates that the panic reason should be ignored + */ +const TInt KNoPanicReason = -1; + +/** + * + * This class is used for storing information on + * test suite DLLs currently loaded + * + * @xxxx + * + */ +class CSuiteDll : public CBase + { +public: + + static CSuiteDll* NewL(const TDesC& aName, CLog* aLog); + void ConstructL(const TDesC& aName, CLog* aLog); + ~CSuiteDll(); + + // accessors + CTestSuite* Suite() const; + TPtrC Name() const; + +private: + CLog* iLog; + RLibrary iLibrary; // DLL Library + CTestSuite* iTestSuite; // pointer to Test suite object + TBuf iName; // name of the test suite + }; + +/** + * + * CStepData class used for passing test step data to the step thread + * JW 03-01-03 : rewritten from TStepData to use heap - avoiding stack overflow + * + * @xxxx + * + */ +class CStepData + { +public: + // constructor + static CStepData* NewL(const TDesC& aStep, const TDesC& aConfig, CSuiteDll* aSuite); + static CStepData* NewL(const TDesC& aStep, const TDesC& aConfig, const TDesC& aParamSet, CSuiteDll* aSuite); + ~CStepData(); + CStepData(); + void ConstructL(const TDesC& aStep, const TDesC& aConfig, const TDesC& aParamSet, CSuiteDll* aSuite); + + // accessors + TPtrC Step() const; + TPtrC Config() const; + const TDesC& ParamSet() const; + CSuiteDll* SuiteDll() const; +private: + TBuf iStep; + TBuf iConfig; + TBuf iParamSet; + CSuiteDll* iSuite; + }; + +/** + * + * CParseLine - the main test script interpreter + * + * @xxxx + * + */ +class CParseLine : public CBase + { +public: + static CParseLine* NewL(CScript* aScript, CTestUtils* aTestUtils, CLog* aLog, TInt64 aGuardTimer, const TDesC& aMatchString); + ~CParseLine(); + CParseLine(const TDesC& aMatchString); + void ConstructL(CScript* aScript, CTestUtils* aTestUtils, CLog* aLog, TInt64 aGuardTimer); + + void ProcessLineL(const TDesC8& aNarrowline, TInt aLineNo); // process a line of script + + // accessors + TPtrC CurrentSuiteName() const; + TPtrC CurrentStepName() const; + +private: + + // thread functions + static TInt ThreadFunctionL (TAny* aPtr); + static TInt ThreadTrapFunctionL (TAny* aPtr); + + // script keyword commands + void ScriptPrint(const TDesC& aText); + void RunScriptL(const TDesC& aText); + void RunTestStep(const TDesC& aText); + void RunPanicTestStep(const TDesC& aText); + void RunTerminationTestStep(const TDesC& aText); + void RunUtil(const TDesC& aText); + void LoadSuiteL(const TDesC& aText); + void Reboot(); + TVerdict DoTestNewThread(const TDesC& aSuite, const TDesC& aStep, + TInt64 aGuardTimerValue, const TDesC& aConfig, const TDesC& aParamSet); + TVerdict DoPanicTest(const TDesC& aSuite, const TDesC& aStep, TInt64 aGuardTimerValue, const TExitCategoryName aExitCategory, TInt aExitReason, const TDesC& aConfig, const TDesC& aParamSet); + TVerdict DoTerminationTest(const TDesC& aSuite, const TDesC& aStep, TInt64 aGuardTimerValue, TInt aExitReason, const TDesC& aConfig); + void GetHeapAndStackSize(const CStepData* aStepData, TInt* aHeapSize, TInt* aStackSize); + void Unload(); + void HeapMark(); + void HeapCheck(); + void RequestMark(); + void RequestCheck(); + void HandlesMark(); + void HandlesCheck(); + void RunProgram(const TDesC& aText); + void TestComplete(const TDesC& aText); + void Delay(const TDesC& aText); + void SetSeverity(const TDesC& aText); + void LogSettings(const TDesC& aText); + // logger - use only with macros + void LogExtra(const TText8* aFile, TInt aLine, TInt aSeverity, + TRefByValue aFmt, ...); + void CreateUniqueTestThreadL(const TDesC& aBaseName, TDes& aThreadName, RThread& aTestThread, TThreadFunction aFunction, TInt aStackSize, TInt aHeapMinSize, TInt aHeapMaxSize, TAny *aPtr); +private: + // record of the current test suite / step name + TBuf iCurrentSuiteName; + TBuf iCurrentStepName; + + // data members + TPath iTheTestPath; // test path + TInt iReqsAtStart; + TInt iProcessHandleCountBefore; + TInt iThreadHandleCountBefore; + + // the current test result + TVerdict iTestVerdict; + // owner script + CScript* iScript; + // test utils + CTestUtils* iTestUtils; + // log + CLog* iLog; + // default guard timer, if any + TInt64 iGuardTimer; + // severity level + TInt iSeverity; + + const TDesC& iMatchString; + TBool iSkip; + + // array of CSuiteDll objects which contain + // information on the current loaded test suite DLLs + CArrayPtr* iArrayLoadedSuiteDll; + + // Flag to indicate that there has been an error + // and the user has selected to skip the rest of the script until a + // test result statement is found in the log + TBool iBreakOnError; + }; + +#endif // __PARSELINE_H__