testexecfw/tef/test/regressiontest/scriptcommand/src/checklogfilestep.cpp
changeset 0 3e07fef1e154
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/tef/test/regressiontest/scriptcommand/src/checklogfilestep.cpp	Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,121 @@
+/*
+* 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:  
+* Example CTestStep derived implementation
+*
+*/
+
+
+
+/**
+ @file checkresultstep.cpp
+*/
+#include "checklogfilestep.h"
+
+CCheckLogFileStep::~CCheckLogFileStep()
+/**
+ * Destructor
+ */
+	{
+	}
+
+CCheckLogFileStep::CCheckLogFileStep()
+/**
+ * Constructor
+ */
+	{
+	// Call base class method to set up the human readable name for logging
+	SetTestStepName(KCheckLogFileStep);
+	}
+
+TVerdict CCheckLogFileStep::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Demonstrates opening up a handle to the data saved at RChunk base using template class
+ * Overwrite shared data with values and also demonstrates the locking mechanism
+ */
+	{
+	INFO_PRINTF1(_L("Check log file."));
+	SetTestStepResult(EFail);
+	_LIT(KLogFilePath, "LogFilePath");
+	_LIT(KCheckString, "CheckString");
+	_LIT(KExpectedTimes, "ExpectedTimes");
+	
+	TPtrC logFilePath;
+	if (!GetStringFromConfig(ConfigSection(), KLogFilePath(), logFilePath))
+		{
+		ERR_PRINTF1(_L("Error occured when getting log file path"));
+		SetTestStepResult(EInconclusive);
+		return TestStepResult();
+		}
+	
+	TPtrC checkString;
+	if (!GetStringFromConfig(ConfigSection(), KCheckString(), checkString))
+		{
+		ERR_PRINTF1(_L("Error occured when getting check string"));
+		SetTestStepResult(EInconclusive);
+		return TestStepResult();
+		}
+	
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	RFile file;
+	User::LeaveIfError(file.Open(fs, logFilePath, EFileRead|EFileShareAny));
+	CleanupClosePushL(file);
+	TInt fileSize;
+	User::LeaveIfError(file.Size(fileSize));
+	HBufC8* fileBuf8 = HBufC8::NewLC(fileSize);
+	TPtr8 fileBufPtr8 = fileBuf8->Des();
+	file.Read(fileBufPtr8);
+	TBuf<512> lineBuf;
+	TLex8 fileLex8(fileBufPtr8);
+	TInt times = 0;
+	
+	while (!fileLex8.Eos())
+		{
+		ReadLineL(fileLex8, lineBuf);
+		if (KErrNotFound != lineBuf.Find(checkString))
+			{
+			++times;
+			}
+		}
+	
+	TInt expectedTimes;
+	if (GetIntFromConfig(ConfigSection(), KExpectedTimes(), expectedTimes))
+		{
+		if (times == expectedTimes)
+			{
+			SetTestStepResult(EPass);
+			}
+		else
+			{
+			ERR_PRINTF3(_L("Test Failed! Expected Times: %d, Actual Times: %d"), expectedTimes, times);
+			}
+		}
+	
+	CleanupStack::PopAndDestroy(3, &fs);
+	return TestStepResult();
+	}
+
+void CCheckLogFileStep::ReadLineL(TLex8& aFileLex, TDes& aLineBuf)
+	{
+	aLineBuf.Zero();
+	TChar ch;
+	while ((ch=aFileLex.Get()) != '\n')
+		{
+		aLineBuf.Append(ch);
+		}
+	}