diff -r 000000000000 -r af10295192d8 networkingtestandutils/networkingintegrationtest/IntegrationTestUtils/Log.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkingtestandutils/networkingintegrationtest/IntegrationTestUtils/Log.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,475 @@ +// Copyright (c) 2003-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 Log.cpp +*/ + +// EPOC includes +#include +#include + +// Test system includes +#include "../inc/Log.h" + +EXPORT_C CLog * CLog::NewL( CConsoleBase * console ) +/** +Epoc style constuctor + +@param console A pointer to the current console object. +@return A new CLog object. +*/ + + { + CLog * self = new(ELeave) CLog; + CleanupStack::PushL(self); + self->Construct( console ); + CleanupStack::Pop(); + return self; + } + +EXPORT_C void CLog::Construct( CConsoleBase * console ) +/** +Epoc style 2nd phase constructor. +Initialise the Utils. + +@param console A pointer to the current console object. +@return A new CLog object. +*/ + { + // the log system needs the current console + // for the console log display + iConsole = console; + iSeverity = ESevrAll; + //Do we need to put information about source file & #line? + //Default is yes. + iPutSrcInfo = ETrue; + iHtmlLogMode = ETrue ; + } + +EXPORT_C CLog::~CLog() +/** +destructor +*/ + { + } + +EXPORT_C void CLog::OpenLogFileL(const TFileName &aScriptFileName) +/** +Open the test log file. + +@param aScriptFileName The script file name which is used to generate the log file name. +*/ + { + + // get the full pathname default drive name and extension + _LIT(Kdefault,"c:\\xx.htm"); + TParse ScriptFileName; + + // combine C:\\xx.htm and the whole parameter supplied + TInt returnCode = ScriptFileName.Set( aScriptFileName, &Kdefault, NULL ); + + // overright extension if supplied with .htm + returnCode = ScriptFileName.Set( ScriptFileName.Name(), &Kdefault, NULL ); + if (returnCode != KErrNone ) + return; + + // connect to the server + TInt ret = iFileLogger.Connect(); + if (ret == KErrNone ) + { + // create the log file in fixed directory c:\logs\Testresults + iFileLogger.CreateLog(_L("C:\\Logs\\TestResults"), ScriptFileName.NameAndExt()); + } + } + +EXPORT_C void CLog::Log( TRefByValue format, ... ) +/** +Display the log data on the console. +If there is a log file open write to it. + +@param format "printf" format string +*/ + { + VA_LIST aList; + VA_START( aList, format ); + + TIntegrationTestLog16Overflow iOverflow16; + + // decode formated data for display on console + TBuf LineBuf; + LineBuf.AppendFormatList( format, aList, &iOverflow16 ); + + // write to the console + iConsole->Printf(_L("%S\n"),&LineBuf ); + + // write to log file + iFileLogger.WriteFormat(_L("%S\n"),&LineBuf); + + VA_END( aList ); + } + +EXPORT_C void CLog::SetPutSrcInfo( TBool aPutSrcInfo ) +/** +Enable or disable souve information in the log file. + +@param aPutSrcInfo The error code. +*/ + { + iPutSrcInfo=aPutSrcInfo; + } + +EXPORT_C void CLog::Log( TInt aSeverity, TRefByValue format, ... ) +/** +Display the log data on the console. +If there is a log file open write to it. + +@param aSeverity severity level +@param format "printf" format string +*/ +{ + VA_LIST aList; + VA_START( aList, format ); + + if( aSeverity & Severity()) + { + Log( format, aList); + } + + VA_END( aList ); +} + +EXPORT_C void CLog::Log( TRefByValue format, VA_LIST aList ) +/** +Display the log data on the console +If there is a log file open write to it. + +@param format "printf" format string. +@param aList Variable length argument list. +*/ + { + // decode formated data for display on console + TBuf LineBuf; + TIntegrationTestLog16Overflow iOverflow16; + + LineBuf.AppendFormatList( format, aList, &iOverflow16 ); + + + // write to log file + iFileLogger.WriteFormat(_L("%S\n"),&LineBuf); + + // write to the console + iConsole->Printf(_L("%S\n"),&LineBuf ); + } + + + +EXPORT_C void CLog::LogExtra(const TText8* aFile, TInt aLine, TInt aSeverity, + TRefByValue aFmt, VA_LIST aList) +/** +Display the log data on the console +if there is a log file open write to it + +@param aFile source file name. +@param aLine line number. +@param aSeverity severity level. +@param aFmt "printf" format string. +@param aList List of printf params. +@note should be used for macros only +*/ +{ + if( aSeverity & Severity()) + { + + TIntegrationTestLog16Overflow iOverflow16; + + // decode formated data for display on console + TBuf LineBuf; + + LineBuf.AppendFormatList( aFmt, aList, &iOverflow16 ); + // write to the console + iConsole->Printf(_L("%S\n"),&LineBuf ); + //Do we need to put information about source file & #line? + if(iPutSrcInfo) + { // Braces used to scope lifetime of TBuf objects + TPtrC8 fileName8(aFile); + TBuf<128> fileName; + TParse printFileName ; + fileName.Copy(fileName8); //TText8->TBuf16 + //We don't need full file name. + printFileName.Set(fileName, NULL, NULL) ; + fileName.Copy(printFileName.NameAndExt()) ; + // write to log file + iFileLogger.WriteFormat(_L("%S\t%d\t%S\n"),&fileName, aLine, &LineBuf); + } + else + { + // write to log file + iFileLogger.WriteFormat(_L("%S\n"),&LineBuf); + } + + + + } + +} + +EXPORT_C void CLog::LogExtra(const TText8* aFile, TInt aLine, TInt aSeverity, + TRefByValue aFmt,...) +/** +Display the log data on the console +if there is a log file open write to it. + +@param aFile source file name +@param aLine line number +@param aSeverity severity level +@param aFmt "printf" format string +@note should be used for macros only +*/ + { + VA_LIST aList; + VA_START( aList, aFmt ); + LogExtra(aFile, aLine, aSeverity, aFmt, aList); + VA_END( aList ); + } + + +EXPORT_C void CLog::LogResult( TVerdict ver, TRefByValue format, ... ) +/** +Display highlighted results on the console. +If there is a log file open write to it. + +@param ver The test result. +@param format A printf style format string. +*/ + { + VA_LIST aList; + VA_START( aList, format ); + + TIntegrationTestLog16Overflow iOverflow16; + + // decode formated data for display on console + TBuf LineBuf; + LineBuf.AppendFormatList( format, aList, &iOverflow16 ); + + // write to the console + iConsole->Printf(_L("%S\n"),&LineBuf ); + + // write to log file + if( iHtmlLogMode) + { + switch( ver) + { + case EPass: + ERR_PRINTF2(_L("%S\n"),&LineBuf ); + break; + case EFail: + ERR_PRINTF2(_L("%S\n"),&LineBuf ); + break; + case EInconclusive: + ERR_PRINTF2(_L("%S\n"),&LineBuf ); + break; + case ETestSuiteError: + ERR_PRINTF2(_L("%S\n"),&LineBuf ); + break; + case EAbort: + ERR_PRINTF2(_L("%S\n"),&LineBuf ); + } + } + else + { + ERR_PRINTF2(_L("%S\n"),&LineBuf ); + } + VA_END( aList ); + } + +EXPORT_C TPtrC CLog::EpocErrorToText(TInt aError) +/** +Convert a SymbianOS error code to text. + +@param aError The error code. +@return Text describing the error code. +*/ + { + switch (aError) + { + case KErrNone: + return _L("KErrNone"); + case KErrNotFound: + return _L("KErrNotFound"); + case KErrGeneral: + return _L("KErrGeneral"); + case KErrCancel: + return _L("KErrCancel"); + case KErrNoMemory: + return _L("KErrNoMemory"); + case KErrNotSupported: + return _L("KErrNotSupported"); + case KErrArgument: + return _L("KErrArgument"); + case KErrTotalLossOfPrecision: + return _L("KErrTotalLossOfPrecision"); + case KErrBadHandle: + return _L("KErrBadHandle"); + case KErrOverflow: + return _L("KErrOverflow"); + case KErrUnderflow: + return _L("KErrUnderflow"); + case KErrAlreadyExists: + return _L("KErrAlreadyExists"); + case KErrPathNotFound: + return _L("KErrPathNotFound"); + case KErrDied: + return _L("KErrDied"); + case KErrInUse: + return _L("KErrInUse"); + case KErrServerTerminated: + return _L("KErrServerTerminated"); + case KErrServerBusy: + return _L("KErrServerBusy"); + case KErrCompletion: + return _L("KErrCompletion"); + case KErrNotReady: + return _L("KErrNotReady"); + case KErrUnknown: + return _L("KErrUnknown"); + case KErrCorrupt: + return _L("KErrCorrupt"); + case KErrAccessDenied: + return _L("KErrAccessDenied"); + case KErrLocked: + return _L("KErrLocked"); + case KErrWrite: + return _L("KErrWrite"); + case KErrDisMounted: + return _L("KErrDisMounted"); + case KErrEof: + return _L("KErrEof"); + case KErrDiskFull: + return _L("KErrDiskFull"); + case KErrBadDriver: + return _L("KErrBadDriver"); + case KErrBadName: + return _L("KErrBadName"); + case KErrCommsLineFail: + return _L("KErrCommsLineFail"); + case KErrCommsFrame: + return _L("KErrCommsFrame"); + case KErrCommsOverrun: + return _L("KErrCommsOverrun"); + case KErrCommsParity: + return _L("KErrCommsParity"); + case KErrTimedOut: + return _L("KErrTimedOut"); + case KErrCouldNotConnect: + return _L("KErrCouldNotConnect"); + case KErrCouldNotDisconnect: + return _L("KErrCouldNotDisconnect"); + case KErrDisconnected: + return _L("KErrDisconnected"); + case KErrBadLibraryEntryPoint: + return _L("KErrBadLibraryEntryPoint"); + case KErrBadDescriptor: + return _L("KErrBadDescriptor"); + case KErrAbort: + return _L("KErrAbort"); + case KErrTooBig: + return _L("KErrTooBig"); + default: + return _L("Unknown"); + } + } + + +EXPORT_C const TText* CLog::TestResultText( enum TVerdict aTestVerdict ) +/** +Turn a test verdict into text. + +@param aTestVerdict The test result. +@return Text describing the current verdict. +*/ + { + switch ( aTestVerdict ) + { + case EPass: + return _S("PASS"); + case EFail: + return _S("FAIL"); + case EInconclusive: + return _S("INCONCLUSIVE"); + case ETestSuiteError: + return _S("TEST_SUITE_ERROR"); + case EAbort: + return _S("ABORT"); + default: + return _S("What"); + + } + } + +EXPORT_C void CLog::LogBlankLine( TInt number ) +/** +Add a number of blank lines. + +@param number The number of blank lines to add to the Log. +*/ + { + for (TInt i =0; i< number; i++) + Log(_L(" ")); + } + +EXPORT_C void CLog::CloseLogFile() +/** +Close the log file. +*/ + { + // add the htm end + iFileLogger.WriteFormat(_L("")); + + // close flogger + iFileLogger.CloseLog(); + } + +void TIntegrationTestLog16Overflow::Overflow(TDes16& /*aDes*/) +/** +This function is called if the format text overflows the internal buffer. +*/ + { + + User::Panic(_L("Log output buffer overflow"),1); + + } + +EXPORT_C void CLog::SetSeverity( TInt aSeverity ) +/** +Set the current severity level. + +@param aSeverity The new severity level. +*/ +{ + iSeverity = aSeverity; +} + +EXPORT_C TInt CLog::Severity() +/** +Get the current severity level. + +@return The current severity level. +*/ +{ + return iSeverity; +} + +