diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/servermtmutils/test/inc/t_ConnUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/pop3andsmtpmtm/servermtmutils/test/inc/t_ConnUtils.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,184 @@ +// Copyright (c) 2002-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: +// + +#include + +// =============================================== // +class CSendPopCommandMessage; + +enum TTestMode{ + ESingleDefaultConn = 0, + ESingleSpecifiedConn, + ETwoDefaultSerialConn, + ETwoDefaultParallelConn, + ETwoDifferentSerialConn, + ETwoDifferentParallelConn, + EExplicitDefaultConn + }; + +// Parent active object which controls the children the sequence of +// Connect, Send and count messages and Disconnect. +class CTestHarnessParent : public CActive + { +public: + static CTestHarnessParent* NewL(); + static CTestHarnessParent* NewLC(); + void ChildFinished(); + CSendPopCommandMessage* MakeBasicConnectionLC(TDes& aServAddress, + TDes8& aUser, TDes8& aPass); + CSendPopCommandMessage* MakeOverrideConnectionLC(TDes& aServAddress, + TDes8& aUser, TDes8& aPass); + CSendPopCommandMessage* MakeExplicitDefaultConnectionLC(TDes& aServAddress, + TDes8& aUser, TDes8& aPass); + void TestSingleDefaultConnL(); + void TestSingleSpecifiedConnL(); + void TestTwoDefaultConnectionsSeriallyL(); + void TestTwoDefaultConnectionsParallellyL(); + void TestTwoDifferentConnectionsSeriallyL(); + void TestTwoDifferentConnectionsParallellyL(); + void TestExplicitDefaultConnL(); + void SetTestMode(TTestMode aTestMode); +private: + CTestHarnessParent(); + ~CTestHarnessParent(); + void ConstructL(); + void RunL(); + void DoCancel(); + void SingleDefaultConnection(); + void SingleSpecifiedConnection(); + void TwoSerialConnectionsL(); + void TwoParallelConnections(); + typedef enum TState{ + EConnect = 0, + ESend, + EDisConnect, + EConnect2, + ESend2, + EDisConnect2, + EStop + }; + TState iState; + CSendPopCommandMessage *iPopCmdServiceA; + CSendPopCommandMessage *iPopCmdServiceB; + TInt iConnectionType; + TTestMode iTestMode; + + }; + +// =============================================== // + +// Child active object whose instances will be controled by parent for +// Connect,Send and count messages and Disconnect + +class CSendPopCommandMessage : public CActive + { +public: // functions + // construct/destruct + static CSendPopCommandMessage *NewL(TDesC& aServerAddress, + TInt aPort, + TDesC8& aUser, + TDesC8& aPass, + CTestHarnessParent* aParent, + CImIAPPreferences* aConnPref = NULL); + + static CSendPopCommandMessage *NewLC(TDesC& aServerAddress, + TInt aPort, + TDesC8& aUser, + TDesC8& aPass, + CTestHarnessParent* aParent, + CImIAPPreferences* aConnPrefaConnPref = NULL); + + // issue request + void RequestSend(); + void SetConnectionPrefs(CImIAPPreferences* aConnPref); + void Complete(TInt aError); + TInt RunError(TInt aError); + void ConnectionL(); + void List(); + TBool IsChildCompleteSet(); + ~CSendPopCommandMessage(); + void DisConnect(); + void SetLastError(TInt aError); + TInt GetLastError(); +private: + void RunL(); + void QueueNextReceive(); + void ConstructL(); + void SetSelfComplete(TBool aComplete); + + CSendPopCommandMessage(); + CSendPopCommandMessage(TDesC& aServerAddress, + TInt aPort, + TDesC8& aUser, + TDesC8& aPass, + CTestHarnessParent* aParent, + CImIAPPreferences* aConnPref); + + void Quit(); + void DisplayErrorReason(TInt& aReason); + void DoCancel(); + typedef enum TSendState{ + EConnect = 0, + EUserName, + EPassword, + EStat, + EList, + EQuit, + EComplete, + EConnectDone, + EQuitDone + }; + CImTextServerSession* iImSocket; + TSendState iSendState; + TStreamId iId; + HBufC* iBuf; + TInt iCurrentState; + TInt iLineStatus; + TBool iReceive; + TSockXfrLength iLen; + TDesC& iServerAddress; + TInt iPort; + TDesC8& iUserName; + TDesC8& iPass; + CTestHarnessParent* iParent; + CImIAPPreferences* iIAPPreferences; + TInt iLastError; + TBool iComplete; + }; + +//====================================// + +// Test harness calss which installs the scheduler and loads the logical +// and physical device + +class CTestHarnessUtil : public CBase + { +public: + static CTestHarnessUtil* NewL(); + ~CTestHarnessUtil(); +private: + void ConstructL(); + CTestHarnessUtil(); + void InitSchedulerL(); + TInt CommInit(); +private: + RFs iFs; + CActiveScheduler *iScheduler; + }; + +//====================================// + + +