diff -r 000000000000 -r b16258d2340f applayerprotocols/httptransportfw/Test/testhttpmessage/ctestengine.cpp --- /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; + } + +