diff -r 3406c99bc375 -r 07b41fa8d1dd stif/ATSLogger/src/atslogger.cpp --- a/stif/ATSLogger/src/atslogger.cpp Thu Jul 15 20:25:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1116 +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 module contains the implementation of -* CAtsLogger class member functions. -* -*/ - -// INCLUDE FILES -#include "atslogger.h" - -CAtsLogger::CAtsLogger(const TDesC& aName) : - iReportStage(EUninitialized), - iName(aName), - iIndentLevel(0), - iRawLog(EFalse), - iXmlLog(EFalse), - iValid(EFalse), - iLineFeedDone(EFalse), - iInTestCase(EFalse), - iClosed(EFalse), - iFullReportingMode(ETrue), - iDoDebugOutput(EFalse), - iDoIndentation(ETrue) - { - } - -void CAtsLogger::ConstructL( TBool aAfterReboot ) - { - TChar xmlDrive; - iXmlLog = CheckDirectoryL(KAtsLoggerXmlDirectory, xmlDrive); - TChar rawDrive; - iRawLog = CheckDirectoryL(KAtsLoggerRawDirectory, rawDrive); - if (iXmlLog) - { - iXmlLogFileName.Copy(_L("?:")); - iXmlLogFileName.Append(KAtsLoggerXmlDirectory); - iXmlLogFileName.Append(iName); - iXmlLogFileName.Append(KAtsLoggerXmlSuffix); - iXmlLogFileName[0] = (TUint8)xmlDrive; - if( aAfterReboot ) - { - User::LeaveIfError(OpenExistingFileL(iXmlLogFileName)); - } - else - { - User::LeaveIfError(ReplaceFileL(iXmlLogFileName)); - } - iValid = ETrue; - } - else - { - iValid = EFalse; - } - if (iRawLog) - { - iRawLogFileName.Copy(_L("?:")); - iRawLogFileName.Append(KAtsLoggerRawDirectory); - iRawLogFileName.Append(iName); - iRawLogFileName.Append(KAtsLoggerRawSuffix); - iRawLogFileName[0] = (TUint8)rawDrive; - if( aAfterReboot ) - { - User::LeaveIfError(OpenExistingFileL(iRawLogFileName)); - } - else - { - User::LeaveIfError(ReplaceFileL(iRawLogFileName)); - } - } - iXmlBuffer = CBufSeg::NewL(KAtsLoggerBufferSegmentGranularity); - iXmlBufferLength = 0; - } - - -TBool CAtsLogger::CheckDirectoryL(const TDesC& aDirName, TChar& aDrive) - { - User::LeaveIfError(iRfs.Connect()); - TDriveList driveList; - iRfs.DriveList(driveList); - TBool dirFound = EFalse; - TFileName dir; - for (TInt i = 0; i < driveList.Length() && !dirFound; i++) - { - TChar drive; - if (driveList[i] != 0) - { - iRfs.DriveToChar(i, drive); - dir.Copy(_L("?:")); - dir.Append(aDirName); - dir[0] = (TUint8)drive; - RDir rDir; - TInt error = rDir.Open(iRfs, dir, KEntryAttNormal); - if (error == KErrNone) - { - dirFound = ETrue; - aDrive = drive; - } - else - { - dirFound = EFalse; - aDrive = '?'; - } - rDir.Close(); - } - } - iRfs.Close(); - return dirFound; - } - -TInt CAtsLogger::ReplaceFileL(const TDesC& aFileName) - { - User::LeaveIfError(iRfs.Connect()); - RFile file; - TInt err = file.Replace(iRfs, aFileName, EFileWrite | EFileShareAny); - file.Close(); - iRfs.Close(); - return err; - } - -TInt CAtsLogger::OpenExistingFileL(const TDesC& aFileName) - { - User::LeaveIfError(iRfs.Connect()); - RFile file; - TInt err = file.Open(iRfs, aFileName, EFileWrite | EFileShareAny); - file.Close(); - iRfs.Close(); - return err; - } - -EXPORT_C CAtsLogger::~CAtsLogger() - { - if (!iClosed) - { - CloseL(); - } - if (iXmlBuffer) - { - delete iXmlBuffer; - iXmlBuffer = NULL; - } - } - -EXPORT_C void CAtsLogger::CloseL() - { - if (iClosed) - { - return; - } - User::LeaveIfError(iRfs.Connect()); - if (iXmlLog) - { - RFile file; - TInt err = file.Open(iRfs, iXmlLogFileName, EFileWrite | EFileShareAny); - if (err == KErrNone) - { - TInt fileSize = 0; - file.Size(fileSize); - file.Close(); - if (fileSize == 0) - { - iRfs.Delete(iXmlLogFileName); - } - } - } - if (iRawLog) - { - RFile file; - TInt err = file.Open(iRfs, iRawLogFileName, EFileWrite | EFileShareAny); - if (err == KErrNone) - { - TInt fileSize = 0; - file.Size(fileSize); - file.Close(); - if (fileSize == 0) - { - iRfs.Delete(iRawLogFileName); - } - } - } - iRfs.Close(); - iClosed = ETrue; - } - - -EXPORT_C CAtsLogger* CAtsLogger::NewL( const TDesC& aName, - TBool aAfterReboot ) - { - __ASSERT_ALWAYS(aName.Length() > 0, User::Leave(KErrBadName)); - RFs rfs; - User::LeaveIfError(rfs.Connect()); - __ASSERT_ALWAYS(rfs.IsValidName(aName), User::Leave(KErrBadName)); - rfs.Close(); - CAtsLogger* self = new (ELeave) CAtsLogger(aName); - CleanupStack::PushL(self); - self->ConstructL( aAfterReboot ); - CleanupStack::Pop(self); - return self; - } - - -EXPORT_C TBool CAtsLogger::IsValid() - { - return iValid; - } - -EXPORT_C void CAtsLogger::BeginTestReportL() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(EBeginTestReport)) - { - User::Leave(EBeginTestReport); - } - iReportStage = EBeginTestReport; - OpenTagIndentL(KAtsLoggerTagTestReport()); - } - else - { - //iTestSet.iStartTime = TTime(); - iTestSet.iStartTime.HomeTime(); - } - } - -EXPORT_C void CAtsLogger::EndTestReportL() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(EEndTestReport)) - { - User::Leave(EEndTestReport); - } - iReportStage = EEndTestReport; - CloseTagIndentL(KAtsLoggerTagTestReport()); - } - if (iDoDebugOutput) - { - WriteBufferToDebugPortL(iXmlBuffer); - } - if (iXmlLog && !iInTestCase && iXmlBufferLength > 0) - { - WriteBufferToFileL(iXmlBuffer, iXmlLogFileName); - } - iXmlBuffer->Reset(); - iXmlBufferLength = 0; - } - -EXPORT_C void CAtsLogger::BeginTestSetL(const TDesC& aFactory, - const TDesC& aComponent, - const TDesC& aVersion, - const TDesC& aDescription) - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(EBeginTestSet)) - { - User::Leave(EBeginTestSet); - } - iReportStage = EBeginTestSet; - //iTestSet.iStartTime = TTime(); - iTestSet.iStartTime.HomeTime(); - TDateTime date(iTestSet.iStartTime.DateTime()); - OpenTagIndentL(KAtsLoggerTagTestSet()); - OpenTagIndentL(KAtsLoggerTagTestSetInit()); - TagL(KAtsLoggerTagDescription(), aDescription); - HBufC* stamp; - stamp = FormatDateLC(date); - TagL(KAtsLoggerTagDate(), *stamp); - CleanupStack::PopAndDestroy(stamp); - TagL(KAtsLoggerTagFactory(), aFactory); - OpenTagIndentL(KAtsLoggerTagComponent()); - TagL(KAtsLoggerTagName(), aComponent); - TagL(KAtsLoggerTagVersion(), aVersion); - CloseTagIndentL(KAtsLoggerTagComponent()); - CloseTagIndentL(KAtsLoggerTagTestSetInit()); - } - } - -EXPORT_C void CAtsLogger::SaveForRebootL() - { - if (iFullReportingMode) - { - iReportStage = EEndTestReport; - } - if (iDoDebugOutput) - { - WriteBufferToDebugPortL(iXmlBuffer); - } - if (iXmlLog && !iInTestCase && iXmlBufferLength > 0) - { - WriteBufferToFileL(iXmlBuffer, iXmlLogFileName); - } - iXmlBuffer->Reset(); - iXmlBufferLength = 0; - } - -EXPORT_C void CAtsLogger::ContinueAfterRebootL() - { - if (iFullReportingMode) - { - iIndentLevel += 2; - iLineFeedDone = ETrue; - iReportStage = EBeginTestSet; - //iTestSet.iStartTime = TTime(); - iTestSet.iStartTime.HomeTime(); - } - } - - -EXPORT_C void CAtsLogger::EndTestSetL() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(EEndTestSet)) - { - User::Leave(EEndTestSet); - } - iReportStage = EEndTestSet; - OpenTagIndentL(KAtsLoggerTagTestSetResult()); - TTime current; - current.HomeTime(); - HBufC* time; - time = FormatTimeLC(current.MicroSecondsFrom(iTestSet.iStartTime)); - TagL(KAtsLoggerTagRunTime(), *time); - CleanupStack::PopAndDestroy(time); - CloseTagIndentL(KAtsLoggerTagTestSetResult()); - CloseTagIndentL(KAtsLoggerTagTestSet()); - } - } - -EXPORT_C void CAtsLogger::BeginTestCaseL(const TDesC& aId, - const TDesC& aExpected, - const TDesC& aInfo, - const TDesC& aVersion) - { - TTime current; - current.HomeTime(); - BeginTestCaseReportL( aId, aExpected, current, aInfo, aVersion ); - } - -EXPORT_C void CAtsLogger::BeginTestCaseL(const TDesC& aId, - const TInt aExpected, - const TDesC& aInfo, - const TDesC& aVersion) - { - TBuf<16> res; - res.Format(_L("%d"), aExpected); - BeginTestCaseL(aId, res, aInfo, aVersion); - } - -EXPORT_C void CAtsLogger::BeginTestCaseReportL( const TDesC& aId, - const TDesC& aExpected, - const TTime& aStartTime, - const TDesC& aInfo, - const TDesC& aVersion ) - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(EBeginTestCase)) - { - User::Leave(EBeginTestCase); - } - iReportStage = EBeginTestCase; - } - - iTestCase.iStartTime = aStartTime; - - HBufC* time; - time = FormatTimeLC(aStartTime.MicroSecondsFrom(iTestSet.iStartTime)); - OpenTagIndentL(KAtsLoggerTagTestCase(), KAtsLoggerTimeStamp(), *time); - CleanupStack::PopAndDestroy(time); - OpenTagIndentL(KAtsLoggerTagTestCaseInit()); - TagL(KAtsLoggerTagVersion, aVersion); - TagL(KAtsLoggerTagId(), aId); - TagL(KAtsLoggerTagExpected(), aExpected, KAtsLoggerTagDescription(), aInfo); - CloseTagIndentL(KAtsLoggerTagTestCaseInit()); - iTestCase.iStatus.Set(KAtsLoggerNa()); - iInTestCase = ETrue; - } - -EXPORT_C void CAtsLogger::BeginTestCaseReportL( const TDesC& aId, - const TInt aExpected, - const TTime& aStartTime, - const TDesC& aInfo, - const TDesC& aVersion ) - { - TBuf<16> res; - res.Format(_L("%d"), aExpected); - BeginTestCaseReportL( aId, res, aStartTime, aInfo, aVersion ); - } - -EXPORT_C void CAtsLogger::EndTestCaseL() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(EEndTestCase)) - { - User::Leave(EEndTestCase); - } - iReportStage = EEndTestCase; - } - TTime current; - current.HomeTime(); - OpenTagIndentL(KAtsLoggerTagTestCaseResult(), KAtsLoggerTagStatus(), iTestCase.iStatus); - if (iTestCase.iResult) - { - TagL(KAtsLoggerTagActual(), *iTestCase.iResult); - delete iTestCase.iResult; - iTestCase.iResult = NULL; - } - else - { - TagL(KAtsLoggerTagActual(), KAtsLoggerEmpty()); - } - HBufC* time; - time = FormatTimeLC(current.MicroSecondsFrom(iTestCase.iStartTime)); - TagL(KAtsLoggerTagRunTime(), *time); - CleanupStack::PopAndDestroy(time); - CloseTagIndentL(KAtsLoggerTagTestCaseResult()); - CloseTagIndentL(KAtsLoggerTagTestCase()); - iInTestCase = EFalse; - if (iDoDebugOutput) - { - WriteBufferToDebugPortL(iXmlBuffer); - } - if (iXmlLog) - { - WriteBufferToFileL(iXmlBuffer, iXmlLogFileName); - } - iXmlBuffer->Reset(); - iXmlBufferLength = 0; - } - -EXPORT_C void CAtsLogger::TestCasePassed() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(ESetTestCaseVerdict)) - { - User::Leave(ESetTestCaseVerdict); - } - iReportStage = ESetTestCaseVerdict; - } - iTestCase.iStatus.Set(KAtsLoggerPassed()); - } - -EXPORT_C void CAtsLogger::TestCaseFailed() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(ESetTestCaseVerdict)) - { - User::Leave(ESetTestCaseVerdict); - } - iReportStage = ESetTestCaseVerdict; - } - iTestCase.iStatus.Set(KAtsLoggerFailed()); - } - -EXPORT_C void CAtsLogger::TestCaseNa() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(ESetTestCaseVerdict)) - { - User::Leave(ESetTestCaseVerdict); - } - iReportStage = ESetTestCaseVerdict; - } - iTestCase.iStatus.Set(KAtsLoggerNa()); - } - -EXPORT_C void CAtsLogger::TestCaseSkipped() - { - if (iFullReportingMode) - { - if (!IsTransitionLegal(ESetTestCaseVerdict)) - { - User::Leave(ESetTestCaseVerdict); - } - iReportStage = ESetTestCaseVerdict; - } - iTestCase.iStatus.Set(KAtsLoggerSkipped()); - } - -EXPORT_C void CAtsLogger::SetTestCaseResultL(const TDesC& aResult) - { - if (iTestCase.iResult) - { - delete iTestCase.iResult; - iTestCase.iResult = NULL; - } - HBufC* newResult = HBufC::NewL(aResult.Length()); - - CleanupStack::PushL(newResult); - TPtr ptr(newResult->Des()); - ptr.Copy(aResult); - CleanupStack::Pop(newResult); - - iTestCase.iResult = newResult; - } - -EXPORT_C void CAtsLogger::SetTestCaseResultL(const TInt aResult) - { - if (iTestCase.iResult) - { - delete iTestCase.iResult; - iTestCase.iResult = NULL; - } - HBufC* newResult = HBufC::NewL(16); - - CleanupStack::PushL(newResult); - TPtr ptr(newResult->Des()); - ptr.Format(_L("%d"), aResult); - CleanupStack::Pop(newResult); - - iTestCase.iResult = newResult; - } - -EXPORT_C void CAtsLogger::DebugL(TRefByValue aFmt,...) - { - VA_LIST list; - VA_START(list, aFmt); - TBuf<0x100> buf; - buf.AppendFormatList(aFmt, list, NULL); - DebugL(buf); - } - -EXPORT_C void CAtsLogger::DebugL(const TDesC& aMsg) - { - if (iInTestCase) - { - TimeStampedMessageL(KAtsLoggerTagDebug(), aMsg); - } - else - { - CommentL(aMsg); - } - } - -EXPORT_C void CAtsLogger::WarningL(TRefByValue aFmt,...) - { - VA_LIST list; - VA_START(list, aFmt); - TBuf<0x100> buf; - buf.AppendFormatList(aFmt, list, NULL); - WarningL(buf); - } - -EXPORT_C void CAtsLogger::WarningL(const TDesC& aMsg) - { - if (iInTestCase) - { - TimeStampedMessageL(KAtsLoggerTagWarning(), aMsg); - } - else - { - CommentL(aMsg); - } - } - -EXPORT_C void CAtsLogger::ErrorL(TRefByValue aFmt,...) - { - VA_LIST list; - VA_START(list, aFmt); - TBuf<0x100> buf; - buf.AppendFormatList(aFmt, list, NULL); - ErrorL(buf); - } - -EXPORT_C void CAtsLogger::ErrorL(const TDesC& aMsg) - { - if (iInTestCase) - { - TimeStampedMessageL(KAtsLoggerTagError(), aMsg); - } - else - { - CommentL(aMsg); - } - } - -EXPORT_C void CAtsLogger::CommentL(TRefByValue aFmt,...) - { - VA_LIST list; - VA_START(list, aFmt); - TBuf<0x100> buf; - buf.AppendFormatList(aFmt, list, NULL); - CommentL(buf); - } - -EXPORT_C void CAtsLogger::CommentL(const TDesC& aMsg) - { - WriteL(KAtsLoggerCommentOpen()); - WriteL(aMsg); - WriteL(KAtsLoggerCommentClose()); - LineFeedL(); - } - -EXPORT_C TInt CAtsLogger::RawLogL(TRefByValue aFmt,...) - { - VA_LIST list; - VA_START(list, aFmt); - TBuf<0x100> buf; - buf.AppendFormatList(aFmt, list, NULL); - RawLogL(buf); - return KErrNone; - } - -EXPORT_C TInt CAtsLogger::RawLogL(const TDesC& aMsg) - { - if (iRawLog) - { - TBool lfStatus = iLineFeedDone; - iLineFeedDone = EFalse; - User::LeaveIfError(iRfs.Connect()); - RFile file; - TInt err = file.Open(iRfs, iRawLogFileName, EFileWrite | EFileShareAny); - if (err == KErrNotFound) - { - User::LeaveIfError(file.Create(iRfs, iRawLogFileName, EFileWrite | EFileShareAny)); - } - else - { - TInt pos = 0; - file.Seek(ESeekEnd, pos); - } - WriteL(aMsg, file); - file.Close(); - iRfs.Close(); - iLineFeedDone = lfStatus; - } - return KErrNone; - } - -EXPORT_C void CAtsLogger::DebugOutput(const TDesC& aMsg) - { - RDebug::Print(_L("%S"), &aMsg); - } - -EXPORT_C void CAtsLogger::SetFullReporting(TBool aFlag) - { - iFullReportingMode = aFlag; - } - -EXPORT_C void CAtsLogger::SetDebugOutput(TBool aFlag) - { - iDoDebugOutput = aFlag; - } - -EXPORT_C void CAtsLogger::SetIndentation(TBool aFlag) - { - iDoIndentation = aFlag; - } - -HBufC* CAtsLogger::FormatDateLC(TDateTime aDate) - { - HBufC* buf = HBufC::NewL(19); - CleanupStack::PushL(buf); - TPtr ptr(buf->Des()); - ptr.Format(_L("%d-%02d-%02d %02d:%02d:%02d"), aDate.Year(), - aDate.Month(), - aDate.Day(), - aDate.Hour(), - aDate.Minute(), - aDate.Second()); - return buf; - } - -HBufC* CAtsLogger::FormatTimeLC(TTimeIntervalMicroSeconds aTime) - { - //@js<--remove--> TInt seconds1 = (aTime.Int64() / TInt64(1000000)).GetTInt(); - TInt seconds = (I64INT(aTime.Int64()) / I64INT(TInt64(1000000))); - - TInt hours = seconds / (60*60); - TInt minutes = (seconds / 60) % 60; - seconds = (seconds) % 60; - HBufC* buf = HBufC::NewL(10); - CleanupStack::PushL(buf); - TPtr ptr(buf->Des()); - ptr.Format(_L("%02d:%02d:%02d"), hours, minutes, seconds); - return buf; - } - - -void CAtsLogger::TimeStampedMessageL(const TDesC& aTag, const TDesC& aMsg) - { - TTime current; - current.HomeTime(); - HBufC* time; - time = FormatTimeLC(current.MicroSecondsFrom(iTestSet.iStartTime)); - TagL(aTag, aMsg, KAtsLoggerTimeStamp(), *time); - CleanupStack::PopAndDestroy(time); - } - -void CAtsLogger::OpenTagL(const TDesC& aTag) - { - WriteL(KAtsLoggerTagOpen()); - WriteL(aTag); - WriteL(KAtsLoggerTagPost()); - } - -void CAtsLogger::OpenTagL(const TDesC& aTag, - const TDesC& aAttribute, - const TDesC& aValue) - { - WriteL(KAtsLoggerTagOpen()); - WriteL(aTag); - WriteL(KAtsLoggerSpace()); - WriteL(aAttribute); - WriteL(KAtsLoggerAttr()); - HBufC* encoded; - encoded = EncodeLC(aValue); - WriteL(encoded->Des()); - CleanupStack::PopAndDestroy(encoded); - WriteL(KAtsLoggerAttrClose()); - } - -void CAtsLogger::OpenTagIndentL(const TDesC& aTag) - { - OpenTagL(aTag); - LineFeedL(); - iIndentLevel++; - } - -void CAtsLogger::OpenTagIndentL(const TDesC& aTag, - const TDesC& aAttribute, - const TDesC& aValue) - { - OpenTagL(aTag, aAttribute, aValue); - LineFeedL(); - iIndentLevel++; - } - -void CAtsLogger::CloseTagL(const TDesC& aTag) - { - WriteL(KAtsLoggerTagClose()); - WriteL(aTag); - WriteL(KAtsLoggerTagPost()); - } - -void CAtsLogger::CloseTagIndentL(const TDesC& aTag) - { - iIndentLevel--; - CloseTagL(aTag); - LineFeedL(); - } - -void CAtsLogger::TagL(const TDesC& aTag, const TDesC& aMsg) - { - OpenTagL(aTag); - HBufC* encoded; - encoded = EncodeLC(aMsg); - WriteL(encoded->Des()); - CleanupStack::PopAndDestroy(encoded); - CloseTagL(aTag); - LineFeedL(); - } - -void CAtsLogger::TagL(const TDesC& aTag, - const TDesC& aMsg, - const TDesC& aAttribute, - const TDesC& aValue) - { - OpenTagL(aTag, aAttribute, aValue); - HBufC* encoded; - encoded = EncodeLC(aMsg); - WriteL(encoded->Des()); - CleanupStack::PopAndDestroy(encoded); - CloseTagL(aTag); - LineFeedL(); - } - -void CAtsLogger::LineFeedL() - { - WriteL(KAtsLoggerLf()); - iLineFeedDone = ETrue; - } - -HBufC* CAtsLogger::EncodeLC(const TDesC& aMsg) - { - TInt length = aMsg.Length(); - HBufC* buf = HBufC::NewL(length); - *buf = aMsg; - TPtr ptr(buf->Des()); - TInt index = 0; - TInt offset = 0; - while (index < length) - { - TPtrC16 p; - switch (ptr[index + offset]) - { - case '"': - p.Set(KAtsLoggerQuot().Ptr()); - break; - case '\'': - p.Set(KAtsLoggerApos().Ptr()); - break; - case '<': - p.Set(KAtsLoggerLt().Ptr()); - break; - case '>': - p.Set(KAtsLoggerGt().Ptr()); - break; - case '&': - p.Set(KAtsLoggerAmp().Ptr()); - break; - default: - p.Set(KAtsLoggerEmpty().Ptr()); - break; - } - if (p.Length() > 0) - { - TInt len = ptr.Length() + p.Length(); - HBufC* tmp = buf; - CleanupStack::PushL(tmp); - buf = buf->ReAllocL(len); - CleanupStack::Pop(tmp); - tmp = NULL; - ptr.Set(buf->Des()); - ptr.Replace(index + offset, 1, p); - - // offset has to be decrement by one because - // we have replaced a char and index remains the - // same. - offset += p.Length() - 1; - } - else - { - index++; - } - } - CleanupStack::PushL(buf); - return buf; - } - -TInt CAtsLogger::BufferL(CBufBase* aBufBase, TInt& aLength, const TDesC& aBuf) - { - TInt length = aBuf.Length(); - if (iDoIndentation && iLineFeedDone) - { - iLineFeedDone = EFalse; - TInt maxIndentLength = iIndentLevel * KAtsLoggerIndent8().Length(); - TInt indentLength = KAtsLoggerIndent8().Length(); - aBufBase->ExpandL(aLength, length + maxIndentLength); - for (TInt i = 0; i < iIndentLevel; i++) - { - aBufBase->Write(aLength + (i * indentLength), KAtsLoggerIndent8()); - } - aLength += maxIndentLength; - } - else - { - aBufBase->ExpandL(aLength, length); - } - HBufC8* hBufC8; - hBufC8 = HBufC8::NewL(aBuf.Length()); - CleanupStack::PushL(hBufC8); - TPtr8 ptr8(hBufC8->Des()); - for (TInt i = 0; i < length; i++) - { - if (aBuf[i] != '\n' && aBuf[i] != '\r') - { - ptr8.Append((TInt8)(aBuf[i] & 0xff)); - } - else - { - ptr8.Append((TInt8)('\n')); - } - } - aBufBase->Write(aLength, *hBufC8); - CleanupStack::PopAndDestroy(hBufC8); - aLength += length; - return KErrNone; - } - -TInt CAtsLogger::WriteBufferToFileL(CBufBase* aCBufBase, const TDesC& aFileName) - { - User::LeaveIfError(iRfs.Connect()); - RFile file; - TInt err = file.Open(iRfs, aFileName, EFileWrite | EFileShareAny); - if (err == KErrNotFound) - { - User::LeaveIfError(file.Create(iRfs, aFileName, EFileWrite | EFileShareAny)); - } - else - { - TInt pos = 0; - file.Seek(ESeekEnd, pos); - } - TInt i = 0; - TPtrC8 ptr = aCBufBase->Ptr(i); - while (ptr.Length() > 0) - { - file.Write(ptr, ptr.Length()); - i += ptr.Length(); - ptr.Set(aCBufBase->Ptr(i)); - } - file.Close(); - iRfs.Close(); - return KErrNone; - } - -TInt CAtsLogger::WriteBufferToDebugPortL(CBufBase* aCBufBase) - { - TInt i = 0; - TPtrC8 ptr = aCBufBase->Ptr(i); - while (ptr.Length() > 0) - { - TBuf debug; - for (TInt j = 0; j < ptr.Length(); j++) - { - debug.AppendFormat(_L("%c"), ptr[j]); - } - DebugOutput(debug); - i += ptr.Length(); - ptr.Set(aCBufBase->Ptr(i)); - } - return KErrNone; - } - -void CAtsLogger::WriteL(const TDesC& aMsg) - { - if (iXmlLog || iDoDebugOutput) - { - BufferL(iXmlBuffer, iXmlBufferLength, aMsg); - iXmlBuffer->Compress(); - } - } - -void CAtsLogger::WriteL(const TDesC& aMsg, RFile& aFile) - { - if (iLineFeedDone) - { - iLineFeedDone = EFalse; - for (TInt i = 0; i < iIndentLevel; i++) - { - WriteL(KAtsLoggerIndent(), aFile); - } - } - HBufC8* hBufC8 = HBufC8::NewL(aMsg.Length()); - CleanupStack::PushL(hBufC8); - TPtr8 ptr8(hBufC8->Des()); - TInt length = aMsg.Length(); - for (TInt i = 0; i < length; i++) - { - if (aMsg[i] != '\n' && aMsg[i] != '\r') - { - ptr8.Append((TInt8)(aMsg[i] & 0xff)); - } - else - { - ptr8.Append((TInt8)('\n')); - } - } - TRequestStatus status; - aFile.Write(*hBufC8, length, status); - User::WaitForRequest(status); - CleanupStack::PopAndDestroy(hBufC8); - } - -TBool CAtsLogger::IsTransitionLegal(const TReportStage& aNewStage) - { - switch (iReportStage) - { - case EUninitialized: - return (aNewStage == EUninitialized || aNewStage == EBeginTestReport); - case EBeginTestReport: - return (aNewStage == EBeginTestSet || aNewStage == EEndTestReport); - case EBeginTestSet: - return (aNewStage == EBeginTestCase || aNewStage == EEndTestSet); - case EBeginTestCase: - return (aNewStage == ESetTestCaseVerdict); - case ESetTestCaseVerdict: - return (aNewStage == EEndTestCase); - case EEndTestCase: - return (aNewStage == EEndTestSet || aNewStage == EBeginTestCase); - case EEndTestSet: - return (aNewStage == EEndTestReport || aNewStage == EBeginTestSet); - case EEndTestReport: - return (aNewStage == EFinished); - case EFinished: - default: - break; - } - return EFalse; - } - -EXPORT_C const TPtrC CAtsLogger::ErrorMessage(const TInt& aError) - { - switch (aError) - { - case EUninitialized: - return _L("Invalid report stage transition to EUninitialized"); - case EBeginTestReport: - return _L("Invalid report stage transition to EBeginTestReport"); - case EBeginTestSet: - return _L("Invalid report stage transition to EBeginTestSet"); - case EBeginTestCase: - return _L("Invalid report stage transition to EBeginTestCase"); - case ESetTestCaseVerdict: - return _L("Invalid report stage transition to ESetTestCaseVerdict"); - case EEndTestCase: - return _L("Invalid report stage transition to EEndTestCase"); - case EEndTestSet: - return _L("Invalid report stage transition to EEndTestSet"); - case EEndTestReport: - return _L("Invalid report stage transition to EEndTestReport"); - case EFinished: - return _L("Invalid report stage transition to EFinished"); - 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"); - case KErrDivideByZero: - return _L("KErrDivideByZero"); - case KErrBadPower: - return _L("KErrBadPower"); - case KErrDirFull: - return _L("KErrDirFull"); - case KErrHardwareNotAvailable: - return _L("KErrHardwareNotAvailable"); - default: - return _L("Unknown error to ATS logger."); - } - } - -// End of File