applayerprotocols/httptransportfw/Test/t_utils/HttpTestCore.h
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/Test/t_utils/HttpTestCore.h	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,251 @@
+// 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:
+// Author:	Franco Bellu
+// this file Contains the following classes: ,	CHttpTestBase, CHttpTestEngine
+// 
+//
+
+#ifndef __HTTPTESTCORE_H__
+#define __HTTPTESTCORE_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <e32cons.h>
+#include <f32file.h>
+#include <http.h>
+#include <uri8.h>
+#include "httptestutils.h"
+#include "t_detectkey.h" 
+
+
+
+const TInt KErrTestInterrupted = -7398;
+
+
+// An error code that is considered success by the heap failure
+// tests. It's used in situations where the heap failures will cause
+// the test to deviate from the 'normal' course.
+const TInt KErrTestFailed = -7399;
+
+
+class CDetectKeyPress;
+
+//##ModelId=3C4C4C40025F
+class CTestScheduler : public CActiveScheduler
+	{
+	//##ModelId=3C4C4C40026A
+	IMPORT_C virtual void Error(TInt anError) const;
+	};
+
+class CHttpTestEngine;
+
+
+/**
+ * This class represents a general test case to be run.It provides 
+ * common functionalities for the derived testcases
+ */
+
+//##ModelId=3C4C4C410260
+class CHttpTestBase : public CActive
+	{
+public:
+	//##ModelId=3C4C4C410315
+	IMPORT_C TInt ExpectedStatusCode();
+	IMPORT_C CHttpTestBase();
+	//##ModelId=3C4C4C410314
+	IMPORT_C void BeginTest();
+	//##ModelId=3C4C4C410300
+	inline void SetEngine(CHttpTestEngine* aEngine);
+	//##ModelId=3C4C4C4102EE
+	inline void SetLeakTests(TInt aNumberOfLeakTests, TInt aFirstLeakIteration = 0);
+	//##ModelId=3C4C4C4102ED
+	virtual const TDesC& TestName()=0;
+protected:
+	//##ModelId=3C4C4C4102EC
+	IMPORT_C virtual void RunL();
+	//##ModelId=3C4C4C4102E2
+	IMPORT_C virtual TInt RunError(TInt aErr);
+	//##ModelId=3C4C4C4102D9
+	IMPORT_C void CompleteOwnRequest();
+	//##ModelId=3C4C4C4102D8
+	virtual void DoRunL()=0;
+
+private:
+	//##ModelId=3C4C4C4102CE
+	void DoLeakTestsL();
+
+protected:
+	//##ModelId=3C4C4C4102C4
+	CHttpTestEngine* iEngine;
+	//##ModelId=3C4C4C4102B2
+	RStringPool iMyStrP ; // all the tests need it to use strings
+	//##ModelId=3C4C4C4102A8
+	RStringPool iIpAddr ; // every test opening transaction needs it
+	//##ModelId=3C4C4C41029C
+	TInt iExpectedStatusCode;
+	//##ModelId=3C4C4C410288
+	TBool iTestFail;	// then it will leave
+	//##ModelId=3C4C4C41027E
+	TInt iLeakTests;	// the number of leak tests to do
+	//##ModelId=3C4C4C41026D
+	TInt iFirstLeakIteration;	// the iteration number of the first leak test to do
+	};
+
+/**
+ * This class represents a transaction-based test case to be run.
+ */
+
+//##ModelId=3C4C4C440070
+class CHttpTestTransBase : public CHttpTestBase, public MHTTPDataSupplier
+	{
+public:
+	IMPORT_C CHttpTestTransBase();
+	//##ModelId=3C4C4C4400C2
+	IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
+	//##ModelId=3C4C4C4400B8
+	IMPORT_C virtual TInt MHFRunError(TInt aError,RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
+	//##ModelId=3C4C4C4400B7
+	IMPORT_C virtual TInt Reset() ;
+
+protected:
+	//##ModelId=3C4C4C4400AE
+	IMPORT_C virtual TBool GetNextDataPart(TPtrC8& aDataChunk);
+	//##ModelId=3C4C4C4400AD
+	IMPORT_C void ReleaseData() ;
+	//##ModelId=3C4C4C4400AC
+	IMPORT_C TInt OverallDataSize();
+	//##ModelId=3C4C4C44009A
+	IMPORT_C void DumpResponseBody(RHTTPTransaction& aTrans);
+	//##ModelId=3C4C4C440098
+	IMPORT_C void DumpRespHeaders(RHTTPTransaction& aTrans);
+protected:
+	//##ModelId=3C4C4C440090
+	RHTTPSession iSession;
+	//##ModelId=3C4C4C440084
+	RHTTPTransaction iTransaction;
+	};
+
+
+/**
+ * This class drives CHttpTestBase-derived test objects
+ * 
+ */
+//##ModelId=3C4C4C410007
+class CHttpTestEngine : public CActive, public MTestInteractionObserver
+	{
+public:
+	//##ModelId=3C4C4C410170
+	IMPORT_C void SetCurrentStatusCode(TInt aStatusCode);
+	//##ModelId=3C4C4C41015D
+	IMPORT_C static CHttpTestEngine* NewL(const TDesC& aTestTitle, TBool aSilent = EFalse);
+	//##ModelId=3C4C4C41015C
+	IMPORT_C ~CHttpTestEngine();
+	//##ModelId=3C4C4C410152
+	IMPORT_C void ConfigureTestSet(RPointerArray<CHttpTestBase> aTestSet);
+	//##ModelId=3C4C4C41013E
+	IMPORT_C void TestCompleted(TInt aResult);
+	//##ModelId=3C4C4C410135
+	inline TInt TestIndex();
+	//##ModelId=3C4C4C410134
+	IMPORT_C CConsoleBase& Console() const;
+	//##ModelId=3C4C4C41012A
+	IMPORT_C CHTTPTestUtils& Utils() const;
+	//##ModelId=3C4C4C410116
+	IMPORT_C void TestSummary(TInt& aNumPasses, TInt& iNumFailures) const;
+	//##ModelId=3C4C4C410115
+	inline RArray<TBool> TestResults() const;
+	//##ModelId=3C4C4C41010B
+	inline TBool IsSilent() const;
+	//##ModelId=3C4C4C410102
+	IMPORT_C void SetSilent(TBool aSilent);
+	//##ModelId=3C4C4C410101
+	IMPORT_C void PressAnyKey();
+
+	// from MTestInteractionObserver
+	//##ModelId=3C4C4C4100ED
+	void TestInteractionDetectedL(TTestInteraction aTestInteraction);
+
+
+protected:
+	//##ModelId=3C4C4C4100E3
+	void ConstructL(const TDesC& aTestTitle);
+	// from CActive
+	//##ModelId=3C4C4C4100DA
+	virtual void DoCancel();
+	//##ModelId=3C4C4C4100D9
+	virtual void RunL();
+private:
+	//##ModelId=3C4C4C4100CF
+	CHttpTestEngine(TBool aSilent);
+	//##ModelId=3C4C4C4100C6
+	void RunNextTestL();
+	
+private:
+	enum TState { EIdle=0, ERunningTest, EShuttingDown, ESingleTestCaseFailed};
+
+private:
+	//##ModelId=3C4C4C4100BD
+	RPointerArray<CHttpTestBase>	iTestSet;
+	//##ModelId=3C4C4C410095
+	RArray<TBool>					iTestResults;
+	//##ModelId=3C4C4C41006D
+	TState							iState;
+	//##ModelId=3C4C4C410063
+	TInt							iTestIndex;
+	//##ModelId=3C4C4C410059
+	CHttpTestBase*					iCurrentTest;
+	//##ModelId=3C4C4C41004D
+	CConsoleBase*					iConsole;
+	//##ModelId=3C4C4C410039
+	CHTTPTestUtils*					iUtils;
+	//##ModelId=3C4C4C410027
+	TBool							iSilent;
+	//##ModelId=3C4C4C41001D
+	TInt							iCurrentStatusCode;
+	
+	//##ModelId=3C4C4C410015
+	CDetectKeyPress* iDetectKeyPress;
+	};
+
+
+inline void CHttpTestBase::SetEngine(CHttpTestEngine* aEngine)	
+	{ 
+	iEngine = aEngine;
+	}
+
+inline void CHttpTestBase::SetLeakTests(TInt aNumberOfLeakTests, TInt aFirstLeakIteration)
+	{
+	iLeakTests = aNumberOfLeakTests;
+	iFirstLeakIteration = aFirstLeakIteration;
+	}
+
+
+inline TInt CHttpTestEngine::TestIndex()	
+	{ 
+	return  iTestIndex;
+	}
+
+inline RArray<TBool> CHttpTestEngine::TestResults() const
+	{
+	return iTestResults;
+	}
+
+inline TBool CHttpTestEngine::IsSilent() const
+	{
+	return iSilent;
+	}
+
+
+
+#endif