messagingfw/msgtest/tools/utils/src/logtoscr.cpp
changeset 62 db3f5fa34ec7
parent 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtest/tools/utils/src/logtoscr.cpp	Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,188 @@
+// Copyright (c) 2000-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 utility converts any email logfiles ( imlog*.txt ) to script
+// files ( imsk*.scr ).
+// It strips out the comments, date stamps and '<<' '>>' markers.
+// 
+//
+
+#include "emailtestutils.h"
+#include "scripttestutils.h"
+#include <miutlog.h>
+#include <miutmsg.h>
+#include <txtrich.h>
+
+// local variables etc //
+
+_LIT(KImcmTest, "U_IMUT2 - Utility for stripping down logfiles for use as scripts");
+RTest test(KImcmTest);
+
+LOCAL_D CTrapCleanup* theCleanup;
+LOCAL_D CImLog* log;
+LOCAL_D CEmailTestUtils* testUtils;
+LOCAL_D	CActiveScheduler* scheduler;
+	
+
+//
+
+LOCAL_C void Init()
+	{
+	scheduler = new (ELeave) CActiveScheduler;
+	CActiveScheduler::Install(scheduler);
+	CleanupStack::PushL(scheduler);
+	
+	testUtils = CEmailTestUtils::NewLC(test);
+	testUtils->CreateAllTestDirectories();
+	testUtils->FileSession().SetSessionPath(_L("C:\\"));
+
+	log = CImLog::NewL(_L("c:\\logs\\email\\u_imut2.log"), EAppend);
+	CleanupStack::PushL(log);
+	log->AppendComment(_L8("*** U_IMUT2 Utility ***"));
+	TBuf8<80> buf;
+#if defined(__WINS__)
+	buf.Append(_L8("WINS "));
+#else
+	buf.Append(_L8("MARM "));
+#endif
+#if defined(_UNICODE)
+	buf.Append(_L8("U"));
+#endif
+#if defined(_DEBUG)
+	buf.Append(_L8("DEB"));
+#else
+	buf.Append(_L8("REL"));
+#endif
+	log->AppendComment(buf);
+	}
+	
+LOCAL_C void Closedown()
+	{
+	log->AppendComment(_L8("**********    U_IMUT2 Complete    **********"));
+	log->AppendComment(_L8(""));
+
+	CleanupStack::PopAndDestroy(3);  //testUtils, log, scheduler
+	}
+
+//
+
+enum TImStripLogType
+	{
+	EImMakeInFile,
+	EImMakeOutFile,
+	EImEndMakeFile
+	};
+
+LOCAL_C void CreateScriptFilesL()
+	{
+	RFs& fs = testUtils->FileSession();
+	fs.SetSessionPath(_L("c:\\logs\\email\\"));
+
+	CScriptTestUtils* scriptTestUtils = CScriptTestUtils::NewLC(*testUtils);
+
+	CDir* logFiles;
+	TInt portStringCounter;
+	RFile logFile;
+	RFile scriptFile;
+	TBufC<KMaxFileName> logFileName;
+	TBuf<KMaxFileName> scriptFileName;
+
+	// First create the script file, then create the output test file.
+
+	TImStripLogType lineType = EImMakeInFile;
+	while ((lineType == EImMakeInFile)
+			|| (lineType == EImMakeOutFile))
+		{
+
+		User::LeaveIfError(fs.GetDir(_L("imlog*.txt"), 0, ESortNone, logFiles));
+		CleanupStack::PushL(logFiles);
+
+		TInt logFileCounter = logFiles->Count();
+
+		while (logFileCounter > 0)
+			// Generate the script file from each log file
+			{
+			// Get the name of the log file.
+			logFileCounter--;
+			logFileName = ((*logFiles)[logFileCounter]).iName;
+
+			// Get the name of the destination script file.
+			scriptFileName = _L("imsk");
+			portStringCounter = 5;
+
+			while (logFileName[portStringCounter] != L'.')
+				{
+				scriptFileName.Append(logFileName[portStringCounter]);
+				portStringCounter++;
+				}
+
+		if (EImMakeInFile == lineType)
+			{
+			scriptFileName.Append(_L(".scr"));
+			}
+		else if (EImMakeOutFile == lineType)
+			{
+			scriptFileName.Append(_L(".out"));
+			}
+
+		if (lineType == EImMakeInFile)
+			scriptTestUtils->LogToInputFileL(logFileName, scriptFileName, EFalse);
+		else
+			scriptTestUtils->LogToOutputFileL(logFileName, scriptFileName, ETrue);
+
+			// Close the files
+			logFile.Close();
+			scriptFile.Close();
+			}
+
+		CleanupStack::PopAndDestroy(); // logFiles
+
+		// If we have just created the script file the create the output test file.
+		if (EImMakeInFile == lineType)
+			{
+			lineType = EImMakeOutFile;
+			}
+		else
+			{
+			lineType = EImEndMakeFile;
+			}
+		}
+
+	CleanupStack::PopAndDestroy(); // scriptTestUtils
+	}
+
+//
+LOCAL_C void doMainL()
+	{
+	Init();
+
+	CreateScriptFilesL();
+
+	Closedown();
+	}
+
+GLDEF_C TInt E32Main()
+	{	
+	__UHEAP_MARK;
+	test.Start(_L("U_IMUT2 Log -> Script Utility"));
+	theCleanup=CTrapCleanup::New();
+	TRAPD(ret,doMainL());		
+	test(ret==KErrNone);
+	delete theCleanup;	
+	test.End();
+	test.Close();
+	__UHEAP_MARKEND;
+	User::Heap().Check();
+	return(KErrNone);
+	}
+