testexecfw/tef/utils/inc/testexecutelogger.h
changeset 0 3e07fef1e154
--- /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 <e32base.h>
+#include <e32cons.h>
+#include <f32file.h>
+#include <test/testexecutelogbase.h>
+#include <iniparser.h>
+#include <test/blockitems.h>
+#include <test/tefscriptutils.h>
+
+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<const TDesC> 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<const TDesC> aFmt,...);
+	IMPORT_C void Write(const TDesC8& aLogBuffer);
+	IMPORT_C void WriteFormat(TRefByValue<const TDesC8> 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<KMaxTestExecuteNameLength> iHtmlLogPath;
+	TBuf<KMaxTestExecuteNameLength> 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