applayerprotocols/httptransportfw/Test/testhttpmessage/ctestengine.cpp
changeset 0 b16258d2340f
child 19 c0c2f28ace9c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/Test/testhttpmessage/ctestengine.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,180 @@
+// 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:
+// defines test classes: CTestEngine
+// 
+//
+
+#include "ctestengine.h"
+#if !defined __CTESTMESSAGECOMPOSER_H__
+#include "ctestmessagecomposer.h"
+#endif
+#if !defined CTESTMESSAGEPARSER_H_
+#include "ctestmessageparser.h"
+#endif
+
+#define KTestRequestHeader _L8("HTTP MESSAGE PERFORMANCE LOGGER\n\n\n")
+
+_LIT(KFilePath, "c:\\logs\\http\\");
+_LIT(KFileName, "c:\\logs\\http\\msg_peformance_logger.txt");
+_LIT(KTestHttpMessageComposer,"Composing HTTP Request Message \n \n \n");
+_LIT(KTestHttpMessageParser,"Parsing HTTP Response Message \n \n \n");
+_LIT(KTestHttpMessagePeformanceTitle, "HTTP Message Performance Test Harness");
+CTestEngine* CTestEngine::NewL()
+	{
+	CTestEngine* self = new (ELeave) CTestEngine();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CTestEngine::~CTestEngine()
+	{
+	delete iTestUtils;
+	}
+
+const TDesC& CTestEngine::TestName()
+		{
+		_LIT(KTestName, "HTTP message Test");
+		return KTestName;
+		}
+CTestEngine::CTestEngine()
+	{
+	iStartTime = 0;
+	iEndTime = 0;
+	}
+
+void CTestEngine::ConstructL()
+	{
+	iTestUtils = CHTTPTestUtils::NewL(KTestHttpMessagePeformanceTitle());
+	iTestUtils->InitCommsL();
+	}
+
+void CTestEngine::DoRunL()
+	{
+
+	}
+void CTestEngine::DoCancel()
+	{
+	}
+void CTestEngine::RunTestsL()
+	{
+	//Tests for composer
+	iTestUtils->StartTestL(_L("Test 1 for composition of http message having multiple Headers with no body"));
+	TestComposeMessageL(1);
+	iTestUtils->EndTest(iTestFailed);
+	iTestUtils->StartTestL(_L("Test 2 for composition of http message having 8 Headers with no body"));
+	TestComposeMessageL(2);
+	iTestUtils->EndTest(iTestFailed);
+	//Tests for parser
+	iTestUtils->StartTestL(_L("Test 1 for http message parser"));
+	//Message to be parsed : "HTTP/1.1 200 OK\r\nDate: Tue, 04 Aug 2009 10:49:50 GMT\r\nServer: Apache/2.2.11 (Unix)\r\nLast-Modified: Thu, 16 Jul 2009 12:06:00 GMT\r\nETag: 4c0f49-329-46ed17eb73a00 \r\nAccept-Ranges: bytes\r\n\r\n "
+	TestParseMessageL(1);
+	iTestUtils->EndTest(iTestFailed);
+	iTestUtils->StartTestL(_L("Test 2 for http message parser"));
+	//Message to be parsed : "HTTP/1.1 200 OK\r\nDate: Tue, 04 Aug 2009 10:49:59 GMT\r\nServer: Apache/2.2.11 (Unix)\r\nLast-Modified: Thu, 16 Jul 2009 12:06:00 GMT\r\nETag: 4c134b-cbc-46ed17eb73a00 \r\nAccept-Ranges: bytes\r\nContent-Length: 3260\r\nKeep-Alive: timeout=5, max=88\r\nConnection: Keep-Alive\r\nContent-Type: image/png\r\n\r\n "
+	TestParseMessageL(2);
+	iTestUtils->EndTest(iTestFailed);
+	iTestUtils->StartTestL(_L("Test 3 for http message parser"));
+	//Message to be parsed : "HTTP/1.1 200 OK\r\nDate: Tue, 04 Aug 2009 10:49:59 GMT\r\nServer: Apache\r\nConnection: Close\r\nTransfer-Encoding: chunked\r\nContent-Type: text/html\r\n\r\n "
+	TestParseMessageL(3);
+	iTestUtils->EndTest(iTestFailed);
+	iTestUtils->StartTestL(_L("Test 4 for http message parser"));
+	//Message to be parsed : "HTTP/1.1 200 OK\r\nDate: Tue, Date: Tue, 22 Sep 2009 04:27:56 GMT\r\nServer: Apache\r\nContent-Encoding: gzip\r\nContent-Length: 6355\r\nContent-Type: text/html\r\nExpires: Tue, 22 Sep 2009 04:27:56 GMT\r\nCache-Control: 	max-age=0, no-cache\r\nPragma: no-cache\r\nConnection: close\r\nVary: Accept-Encoding\r\n\r\n "
+	TestParseMessageL(4);
+	iTestUtils->EndTest(iTestFailed);
+	}
+	
+void CTestEngine::TestComposeMessageL(TInt aNumberofHeaders)
+	{
+	iTestFailed	= EFalse;
+	CTestMessageComposer* messagecomposer = CTestMessageComposer::NewL(*this);
+	CleanupStack::PushL(messagecomposer);
+	messagecomposer->SetHeaderL(aNumberofHeaders);
+	StartTimer();
+	messagecomposer->StartRequest();
+	CActiveScheduler::Start();
+	EndTimer(KTestHttpMessageComposer);
+	CleanupStack::PopAndDestroy(messagecomposer);
+	}
+
+void CTestEngine::TestParseMessageL(TInt aMessageType)
+	{
+	CTestMessageParser* messageparser = CTestMessageParser::NewL(*this);
+	CleanupStack::PushL(messageparser);
+	StartTimer();
+	messageparser->StartRequest(aMessageType);
+	CActiveScheduler::Start();
+	EndTimer(KTestHttpMessageParser);
+	CleanupStack::PopAndDestroy(messageparser);
+	}
+	
+	void CTestEngine::NotifyError(TInt /*aError*/)
+	{
+	}
+
+void CTestEngine::NotifyStart()
+	{
+	}
+
+void CTestEngine::NotifyComplete()
+	{
+	CActiveScheduler::Stop();	
+	}
+
+void CTestEngine::LogIt(const TDesC& aComment)
+	{
+	TInt err = iFs.Connect();
+	if(err == KErrNone)
+		{
+		iFs.MkDirAll(KFilePath);
+		err = iFile.Open(iFs, KFileName, EFileWrite);
+		if(err == KErrNotFound)
+			{
+			iFile.Create(iFs, KFileName, EFileWrite);
+			iFile.Write(KTestRequestHeader);
+			}
+		TFileText file;
+		file.Set(iFile);
+		file.Write(aComment);
+		iFile.Close();
+		iFs.Close();
+		}
+	else	
+		{
+		User::InfoPrint(_L("Cannot write to file"));
+		}
+	}
+
+	void CTestEngine::StartTimer()
+			{
+			iStartTime = User::FastCounter();
+			}
+	
+	void CTestEngine::EndTimer(const TDesC& aComment)
+			{
+			iEndTime = User::FastCounter();
+			iTimeDifference = iEndTime-iStartTime;	
+			_LIT(KTimeDiff, ",%ld microseconds\n");
+			RBuf myBuf;
+			myBuf.Create (aComment.Length()+64);
+			myBuf.Append (aComment );
+			myBuf.AppendFormat(KTimeDiff, iTimeDifference.Int64());
+		    LogIt(myBuf);
+			myBuf.Close();
+			iStartTime = 0;
+			iEndTime = 0;			
+			}
+
+