diff -r 000000000000 -r 3e07fef1e154 testexecfw/tef/utils/inc/testexecutelogger.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecfw/tef/utils/inc/testexecutelogger.h Mon Mar 08 15:03:44 2010 +0800 @@ -0,0 +1,177 @@ +/* +* Copyright (c) 2005-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: +* +*/ + + + +/** + @file TestExecuteLogger.h +*/ + +#if !(defined __TESTEXECUTE_LOGGER_H__) +#define __TESTEXECUTE_LOGGER_H__ + +#include +#include +#include +#include +#include +#include +#include + +class CSerialWriter; +/** + * @internalComponent + * @test + */ +class CTestExecuteIniData : public CBase + { +public: + IMPORT_C CTestExecuteIniData(); + IMPORT_C ~CTestExecuteIniData(); + IMPORT_C static CTestExecuteIniData* NewL(); + IMPORT_C static CTestExecuteIniData* NewLC(); + IMPORT_C void ConstructL(); + IMPORT_C void ExtractValuesFromIni(); + IMPORT_C void GetKeyValueFromIni(const TDesC& aKeyName, TDes& aValue); + IMPORT_C void GetKeyValueFromIni(const TDesC& aKeyName, TInt& aValue); + IMPORT_C CTestExecuteIniData(TDriveName& aSysDrive); + IMPORT_C static CTestExecuteIniData* NewL(TDriveName& aSysDrive); + IMPORT_C static CTestExecuteIniData* NewLC(TDriveName& aSysDrive); +private: + CIniData* iConfigData; + TPtrC iHtmlLogPath; + TPtrC iXmlLogPath; + TPtrC iDefaultScriptDirectory; + TInt iLogSeverity; + TInt iLoggerOptions; + TInt iJustInTime; + TInt iRemotePanicDetection; + TInt iEnableIniAccessLog; + TInt iEnableTestsCountLog; + TInt iEnableSystemStarter; + TInt iLoggerChannel; + TInt iPortNumber; + TDriveName iDefaultSysDrive; + TPtrC iIniSysDriveName; + TInt iWaitForLoggingTime; + }; + +/** + * Override of base class virtual for TEF logger implementation + * @internalComponent + * @test + */ +class CTestExecuteLogger : public MTestExecuteLogBase + { +public: + IMPORT_C CTestExecuteLogger(TLoggerOptions aLogOptions=ELogHTMLOnly); + IMPORT_C ~CTestExecuteLogger(); + IMPORT_C void LogExtra(const TText8* aFile, TInt aLine, TInt aSeverity,TRefByValue aFmt,...); + IMPORT_C void LogToXml(const TText8* aFile, TInt aLine, TInt aSeverity,const TDesC& aCommandName, const TInt aNumberOfParams, TExtraLogField* aLogFields); + IMPORT_C void LogToXml(const TText8* aFile, TInt aLine, TInt aSeverity,const TDesC& aCommandName); + IMPORT_C void InitialiseLoggingL(const TDesC& aScriptFilePath, TBool aSeparateLogFileMode, TInt aLogLevel); + + IMPORT_C void TerminateLoggingL(const TInt aCommentedCommandsCount, const TInt aRemotePanicsCount, const TInt aRunScriptFailCount); + IMPORT_C void LogTestCaseResult(const TDesC& aFile, TInt aLine, TInt aSeverity, const TDesC& aCommand, const TDesC& aTestCaseName, TVerdict aResult = EPass); + IMPORT_C void PrintCurrentScriptLine(TDes& aCurrentScriptLine); + IMPORT_C void LogResult(TVerdict aResult, const TDesC& aPanicString, TInt aScriptLineNumber,const TDesC& aCommand,const TDesC& aScriptFile,TInt aSeverity); + IMPORT_C TVerdict LogBlock( TTEFItemArray* aItemArray, const TInt aScriptLineNumber ); + IMPORT_C void SetLoggerOptions(TInt aLogMode); + IMPORT_C TInt Connect(); + IMPORT_C void Close(); + inline RTestExecuteLogServ& HtmlLogger() { return iHtmlLogger; }; + inline RTestExecutePIPSLogServ& PIPSLogger() { return iPIPSLogger; }; + inline RFileFlogger& XmlLogger() { return iXmlLogger; }; + IMPORT_C TInt ShareAuto(); + + // Legacy methods provided for backwards compatibility + // These only log to the html log file + IMPORT_C void Write(const TDesC& aLogBuffer); + IMPORT_C void WriteFormat(TRefByValue aFmt,...); + IMPORT_C void Write(const TDesC8& aLogBuffer); + IMPORT_C void WriteFormat(TRefByValue aFmt,...); + IMPORT_C static CTestExecuteLogger* NewL(TLoggerOptions aLogOptions=ELogHTMLOnly); + IMPORT_C static CTestExecuteLogger* NewLC(TLoggerOptions aLogOptions=ELogHTMLOnly); + IMPORT_C void SetLoggerChannel(TInt aLogChannel); + IMPORT_C void SetPipeName(TPtrC& aPipeName) ; + void OpenSerialPortL(const TInt aPortNumber); +protected: + // parse the script string(!PanicString) + TBool ParsePaincStringFromScriptCommandLine(const TDesC& aCommandStr,TLex& aScriptLineParamLex,TDes& aTEFPanicString); +private: + // Connects to the HTML log client session and creating the logs with initial tags for logging + void InitialiseHTMLLoggingL(const TDesC& aLogFilePath, TInt aLogLevel, const TInt& aEnableCommandCount, CScriptPreProcess& aScriptPreProcess); + void InitialisePIPSLoggingL(TInt aLogLevel, const TInt& aEnableCommandCount, CScriptPreProcess& aScriptPreProcess); + // Connects to the XML log client session and creates the logs in the path passed in + // Also sets in the default threshold for log level + void InitialiseXMLLoggingL(const TDesC& aLogFilePath, TInt aLogLevel, const TInt& aEnableCommandCount, CScriptPreProcess& aScriptPreProcess); + void TerminateHTMLLoggingL(RFile* aLogFile, const TInt aCommentedCommandsCount, const TInt aRemotePanicsCount, const TInt aRunScriptFailCount); + void TerminateXMLLoggingL(const TInt aCommentedCommandsCount, const TInt aRemotePanicsCount, const TInt aRunScriptFailCount); + TVerdict LogHTMLBlockL( const TTEFItemArray& aItemArray ); + TVerdict LogXMLBlock( const TTEFItemArray& aItemArray, const TInt aScriptLineNumber ); + void InitialiseSerialLoggingL(TInt aLogLevel, const TInt& aEnableCommandCount, CScriptPreProcess& aScriptPreProcess, TInt portNumber); + void LogTestCaseResultSerialL(const TDesC& aFile, TInt aLine, TInt aSeverity, const TDesC& aCommand, const TDesC& aTestCaseName, TVerdict aResult = EPass); + void LogResultSerialL(TVerdict aResult, const TDesC& aPanicString, TInt aScriptLineNumber,const TDesC& aCommand,const TDesC& aScriptFile); + void LogResultFileL(TVerdict aResult, const TDesC& aPanicString, TInt aScriptLineNumber,const TDesC& aCommand,const TDesC& aScriptFile, TInt aSeverity); + void LoggingTestCaseResultToSummaryResultL( const TDesC &aLogFileDir,const TDesC &aLogFileName,const TDesC8 &aResultBuf); + +private: + // HTML Log client session + RTestExecuteLogServ iHtmlLogger; + RTestExecutePIPSLogServ iPIPSLogger; + // XML Log client session + RFileFlogger iXmlLogger; + TInt iLoggerOptions; + // Member variables to perform TerminateLogging + // Set up some vars for the test step result types + TInt iPassCount; + TInt iFailCount; + TInt iAbortCount; + TInt iUnknownCount; + TInt iInconclusiveCount; + TInt iPanicCount; + TInt iUnexecutedCount; + + // Set up some vars for the RUN_PROGRAM result types + TBool iRunProgramUsed; + TInt iRunProgramPassCount; + TInt iRunProgramFailCount; + TInt iRunProgramAbortCount; + TInt iRunProgramUnknownCount; + TInt iRunProgramInconclusiveCount; + TInt iRunProgramPanicCount; + TInt iRunProgramUnexecutedCount; + + // Set up some vars for the testcase result types + TBool iTestCasesUsed; + TInt iTestCasePassCount; + TInt iTestCaseFailCount; + TInt iTestCaseInconclusiveCount; + + // Log file paths for HTML & XML + TBuf iHtmlLogPath; + TBuf iXmlLogPath; + TInt iRemotePanic; // Flag to retrieve status of Remote Panic Detection from testexecute.ini + TInt iRunScriptCommandCount; // Count of number of RUN_SCRIPT commands in the main script executed + CSerialWriter *iSerialWriter ; + TInt iPortNumber ; + TInt iLoggerChannel; + TInt iTestCaseSkippedCount; + TBool iPIPSExists ; + }; + +#endif