datacommsserver/esockserver/test/TE_EsockTestSteps/inc/ConnectionServer.TestSteps.h
changeset 0 dfb7c4ff071f
child 4 928ed51ddc43
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/ConnectionServer.TestSteps.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,600 @@
+/**
+* Copyright (c) 2006-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:
+*
+*/
+
+
+
+/**
+ @file ConnectionServer.TestSteps.h
+*/
+
+#if (!defined CONNECTIONSERVER_TESTSTEPS_H)
+#define CONNECTIONSERVER_TESTSTEPS_H
+
+#include <test/testexecutestepbase.h>
+#include "Te_EsockStepBase.h"
+#include <comms-infras/es_connectionserv.h>
+#include <comms-infras/cs_connservparams.h>
+
+//#include <comms-infras/connservwifiparams.h>
+
+#include <networking/mbmsparams.h>
+#include <networking/qos3gpp_subconparams.h>
+#include <genericscprparams.h>
+
+#include <comms-infras/es_availability.h>
+#include <etelmm.h>
+
+_LIT(KConnectionServName, "ConnServName");
+_LIT(KConnectionServTierId, "TierId");
+
+// Test step classes
+//------------------
+
+/**
+Class implementing CreateRConnectionServStep
+
+@internalComponent
+*/
+class CCreateRConnectionServStep : public CTe_EsockStepBase
+	{
+public:
+	CCreateRConnectionServStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doTestStepPreambleL();
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	TPtrC iConnectionServName;
+	};
+
+_LIT(KCreateRConnectionServStep, "CreateRConnectionServStep");
+
+
+/**
+Class implementing CConnectRConnectionServStep
+
+@internalComponent
+*/
+class CConnectRConnectionServStep : public CTe_EsockStepBase
+	{
+public:
+	CConnectRConnectionServStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+	TInt TierNameToTierId(const TDesC& aTierName, TUint& aTierId);
+	
+private:
+	TPtrC iConnectionServName;
+	TUint iTierId;
+	};
+
+_LIT(KConnectRConnectionServStep, "ConnectRConnectionServStep");
+
+
+/**
+Class implementing CRConnectionServApiExtStep
+
+@internalComponent
+*/
+class CRConnectionServApiExtStep : public CTe_EsockStepBase
+	{
+public:
+	CRConnectionServApiExtStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+	
+private:
+	RCommsDataMonitoringApiExt iExt;
+	TPtrC iConnectionServName;
+	TUint iTierId;
+	};
+
+_LIT(KRConnectionServApiExtStep, "RConnectionServApiExtStep");
+
+
+
+/**
+Class implementing CCloseRConnectionServStep
+
+@internalComponent
+*/
+class CCloseRConnectionServStep : public CTe_EsockStepBase
+	{
+public:
+	CCloseRConnectionServStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+	
+private:
+	TPtrC iConnectionServName;
+	};
+
+_LIT(KCloseRConnectionServStep, "CloseRConnectionServStep");
+
+
+class TExpectedAccessPointStatusMask : public ConnectionServ::TAccessPointStatusFilter
+	{
+public:
+	TBool CompareToAPStatus(const ConnectionServ::TAccessPointStatus& aStatus) const;
+		
+private:
+	TBool CompareStatusFlagToMaskFlag(
+		const ConnectionServ::TAccessPointFlagValue apFlag,
+		const ConnectionServ::TAccessPointFlagFilterValue apMaskValue) const;
+	};
+
+
+class TExpectedAccessPointParameters
+	{
+public:
+	TExpectedAccessPointParameters(
+		const TAccessPointInfo& aInfo,
+		const TExpectedAccessPointStatusMask& aStatus)
+			: iInfo(aInfo), iStatus(aStatus) {}
+	const TExpectedAccessPointStatusMask& AccessPointStatus() const {return iStatus;}
+	const TAccessPointInfo& AccessPointInfo() const {return iInfo;}
+
+private:
+	TAccessPointInfo iInfo;
+	TExpectedAccessPointStatusMask iStatus;
+	};
+
+/**
+Base class for query based RConnectionServ tests
+
+@internalComponent
+*/
+class CRConnectionServQueryTestStepBase : public CTe_EsockStepBase
+	{
+public:
+	CRConnectionServQueryTestStepBase(CCEsockTestBase*& aEsockTest) : CTe_EsockStepBase(aEsockTest) {}
+
+protected:
+	void BundleToString(const CParameterBundleBase* aBundle, TDes& aBuf);
+	void ParamSetCtrToString(const CParameterSetContainer* aCtnr,TDes& aBuf);
+	void GenericParamsToString(const ConnectionServ::XAccessPointGenericParameterSet* aSet, TDes& aBuf);
+	//void WifiParamsToString(const ConnectionServ::XAccessPointWifiParameterSet* aSet, TDes& aBuf);
+	void MBMSParamsToString(const ConnectionServ::XMBMSServiceQuerySet* aSet,
+			TDes& aBuf);
+	void MBMSServiceParamsToString(const ConnectionServ::XMBMSServiceParameterSet* aSet,
+				TDes& aBuf); 
+	TChar GetApFlagChar(ConnectionServ::TAccessPointFlagValue val);
+
+	TInt BuildQueryL(ConnectionServ::CConnectionServParameterBundle& aQueryBundle);
+	TInt BuildExpectedResultsL(
+		RArray<TExpectedAccessPointParameters>& aExpectedAPParameters,
+		TInt& aNumExpectedAPs);
+	void FetchFilterL(const TDesC& aFilterDes, ConnectionServ::TAccessPointStatusFilter& aFetchedFilter);
+	ConnectionServ::TAccessPointFlagFilterValue ReadFlagFilterValueL(TChar ch);
+
+	TBool CompareAgainstExpected(
+		TInt aNumExpected,
+		RArray<TExpectedAccessPointParameters>& aAPsExpected,
+		ConnectionServ::CConnectionServParameterBundle& aResultsBundle);
+	};
+
+/**
+Class implementing CAccessPointStatusQueryStep
+
+@internalComponent
+*/
+class CAccessPointStatusQueryStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CAccessPointStatusQueryStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	~CAccessPointStatusQueryStep();
+
+	TPtrC iConnectionServName;
+	ConnectionServ::CConnectionServParameterBundle*	iQueryBundle;
+	ConnectionServ::CConnectionServParameterBundle*	iResultsBundle;
+	TInt iExpectedError;
+	TInt iNumExpectedAPs;
+	RArray<TExpectedAccessPointParameters> iExpectedAPParameters;
+	};
+
+_LIT(KAccessPointStatusQueryStep, "AccessPointStatusQueryStep");
+
+
+/**
+Class implementing CCancelAccessPointStatusQueryStep
+
+@internalComponent
+*/
+class CCancelAccessPointStatusQueryStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CCancelAccessPointStatusQueryStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	~CCancelAccessPointStatusQueryStep();
+
+	TPtrC iConnectionServName;
+	ConnectionServ::CConnectionServParameterBundle*	iQueryBundle;
+	ConnectionServ::CConnectionServParameterBundle*	iResultsBundle;
+	TInt iNumExpectedAPs;
+	RArray<TExpectedAccessPointParameters> iExpectedAPParameters;
+	};
+
+_LIT(KCancelAccessPointStatusQueryStep, "CancelAccessPointStatusQueryStep");
+
+
+/**
+Class implementing CRequestAccessPointNotification
+
+@internalComponent
+*/
+class CRequestAccessPointNotificationStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CRequestAccessPointNotificationStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	TPtrC iConnectionServName;
+	TPtrC iNotifName;
+	ConnectionServ::CConnectionServParameterBundle*	iQueryBundle;
+	ConnectionServ::CConnectionServParameterBundle*	iResultsBundle;
+	TInt iExpectedError;
+	TInt iNumExpectedAPs;
+	RArray<TExpectedAccessPointParameters> iExpectedAPParameters;
+	};
+
+_LIT(KRequestAccessPointNotificationStep, "RequestAccessPointNotificationStep");
+
+
+/**
+Class implementing CReceiveAccessPointNotification
+
+@internalComponent
+*/
+class CReceiveAccessPointNotificationStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CReceiveAccessPointNotificationStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	TPtrC iConnectionServName;
+	TPtrC iNotifName;
+	RArray<TExpectedAccessPointParameters> iExpectedAPParameters;
+	TInt iNumExpectedAPs;
+	TInt iInitialDelayInSeconds;
+	TBool iExpectingNotification;
+	};
+
+_LIT(KReceiveAccessPointNotificationStep, "ReceiveAccessPointNotificationStep");
+
+
+
+/**
+Class implementing CCancelAccessPointNotification
+
+@internalComponent
+*/
+class CCancelAccessPointNotificationStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CCancelAccessPointNotificationStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	TPtrC iNotifName;
+	TInt iInitialDelayInSeconds;
+	};
+
+_LIT(KCancelAccessPointNotificationStep, "CancelAccessPointNotificationStep");
+
+
+
+class MObserverTimeout
+	{
+public:
+	virtual void Timeout() = 0;
+	};
+
+
+// CConnServNotificationWatcher
+//-----------------------------
+class CConnServNotificationWatcher :
+	public CBase,
+	public ConnectionServ::MAccessPointNotificationObserver
+	{
+public:
+	// Thread entry point
+	//-------------------
+	static TInt EntryPoint(TAny* aArgs);
+	void RunNotificationL();
+	
+	CConnServNotificationWatcher(ConnectionServ::RConnectionServ* aConnServ)
+		: iConnServ(*aConnServ) {}
+
+	static CConnServNotificationWatcher* NewLC(
+		ConnectionServ::RConnectionServ* aConnServ,
+		ConnectionServ::CConnectionServParameterBundle* aQueryBundle);
+	
+	void ConstructL(ConnectionServ::CConnectionServParameterBundle* aQueryBundle);
+
+	// MAccessPointNotificationObserver
+	//---------------------------------
+	virtual void AccessPointNotification(ConnectionServ::CConnectionServParameterBundle* aResult);
+	virtual void AccessPointNotificationError(TInt aErrCode);
+
+	void Wait() {iMutex.Wait();}
+	void Signal() {iMutex.Signal();}
+	
+	void AwaitStartupCompletionL() const;
+	void WaitOnQueueL() const;
+	
+	void PerformNotificationRequestL();
+	ConnectionServ::CConnectionServParameterBundle* GetResultsBundle();
+
+	
+	void CancelNotification();
+	TInt ErrCode() const { return iErrCode; }
+	void DoCancel();
+	~CConnServNotificationWatcher();
+	
+private:
+	TInt iErrCode;
+	ConnectionServ::RConnectionServ iConnServ;
+	ConnectionServ::CConnectionServParameterBundle* iQueryBundle;
+	RPointerArray<ConnectionServ::CConnectionServParameterBundle> iNotificationBundles;
+	TInt iTimeout;
+	RMutex iMutex;
+	RProperty iQueueProp;
+	TBool iHaveReceivedNotifSetupAck;
+	
+public:
+	RThread iNotifThread;
+	RThread iCommandThread;
+	TRequestStatus* iCancelStatus;
+	};
+
+
+// CNotifCancelControl
+//--------------------
+class CNotifCancelControl : public CActive
+	{
+public:
+	CNotifCancelControl(CConnServNotificationWatcher& aNotifMgr)
+		: iNotifManager(aNotifMgr), CActive(EPriorityStandard) {}
+	
+	static CNotifCancelControl* NewL(CConnServNotificationWatcher& aNotifMgr)
+		{
+		CNotifCancelControl* mine = new(ELeave) CNotifCancelControl(aNotifMgr);
+		CActiveScheduler::Add(mine);
+		return mine;
+		}
+
+	void Wait()
+		{
+		iStatus = KRequestPending;
+		SetActive();
+		iNotifManager.iCancelStatus = &iStatus;
+		}
+
+private:
+	void DoCancel() {}
+	void RunL()
+		{
+		// Stop the active scheduler which will cancel all outstanding requests
+		CActiveScheduler::Stop();
+		}
+		
+private:
+	CConnServNotificationWatcher& iNotifManager;
+	};
+
+
+/**
+Class implementing CSetAccessPointAvailabilityStep
+
+@internalComponent
+@description Enables the setting of availability status on access points for simulation of availability
+*/
+class CSetAccessPointAvailabilityStep : public CTe_EsockStepBase
+	{
+public:
+	CSetAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doTestStepPreambleL();
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	TInt iAccessPointId;
+	TInt iAvailabilityScore;
+	};
+
+_LIT(KSetAccessPointAvailabilityStep, "SetAccessPointAvailabilityStep");
+
+/**
+Class implementing CSetPppAccessPointAvailabilityStep
+
+@internalComponent
+@description Enables the setting of Ppp availability status on access points for simulation of availability
+*/
+class CSetPppAccessPointAvailabilityStep : public CTe_EsockStepBase
+	{
+public:
+	CSetPppAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doTestStepPreambleL();
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	RMobilePhone::TMobilePhoneRegistrationStatus iRegStatus;
+	};
+
+_LIT(KSetPppAccessPointAvailabilityStep, "SetPppAccessPointAvailabilityStep");
+
+/**
+Class implementing CSetWifiAccessPointAvailabilityStep
+
+@internalComponent
+@description Enables the setting of Ppp availability status on access points for simulation of availability
+*/
+class CSetWifiAccessPointAvailabilityStep : public CTe_EsockStepBase
+	{
+public:
+	CSetWifiAccessPointAvailabilityStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doTestStepPreambleL();
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	TInt	iAPAvailable;
+	TPtrC	iSsid;
+	TPtrC	iBssid;
+	TPtrC	iSupportedRates;
+	TPtrC	iNetworkType;
+	TPtrC	iAuthenticated;
+	TPtrC	iEncrypt;
+	TPtrC	iAPEncryptionType;
+	TPtrC	iAssociated;
+	TPtrC	iChannel;
+	TPtrC	iRssi;
+	};
+
+_LIT(KSetWifiAccessPointAvailabilityStep, "SetWifiAccessPointAvailabilityStep");
+
+// Changes for MBMS Broadcast related test cases starts here 
+enum TTypeOfNotification
+		{
+		EMbmsBearerAvailNtfn =1,
+		EMbmsServiceAvailNtfn,
+		EMbmsRemoveServiceNtfn,
+		EMbmsActiveListNtfn,
+		EMbmsMonitorListNtfn
+		};
+
+_LIT(KRequestMBMSNtfnStep, "RequestMBMSNtfnStep");
+_LIT(KReceiveMBMSNtfnStep, "ReceiveMBMSNtfnStep");
+_LIT(KCancelMBMSNtfnStep, "CancelMBMSNtfnStep");
+
+/**
+Class implementing CRequestMBMSNtfnStep
+@internalComponent
+*/
+
+class CRequestMBMSNtfnStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CRequestMBMSNtfnStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	 enum TAction
+			   {
+			    EAddService =1,
+			    ERemoveService =2,
+			    ERemoveAllServices=3
+			    };
+	 
+	~CRequestMBMSNtfnStep();
+	TInt BuildBearerAvailQueryL(ConnectionServ::CConnectionServParameterBundle& aQueryBundle);
+	TInt BuildServiceAvailQueryL(ConnectionServ::CConnectionServParameterBundle& aQueryBundle);
+	TInt BuildRemoveServiceQueryL(ConnectionServ::CConnectionServParameterBundle& aQueryBundle,TAction aAction);
+	TInt BuildActiveListQueryL(ConnectionServ::CConnectionServParameterBundle& aQueryBundle);
+	TInt BuildMonitorListQueryL(ConnectionServ::CConnectionServParameterBundle& aQueryBundle);
+			
+	TPtrC iConnectionServName;
+	TPtrC iNotifName;   
+	ConnectionServ::CConnectionServParameterBundle*	iQueryBundle;
+	ConnectionServ::CConnectionServParameterBundle*	iQueryBundleAdd;
+		
+	TTypeOfNotification iNotificationType;
+
+	TBool iIsMultiClient; 
+	TUint iNumTmgis; 
+	TUint iMCC;
+	TUint iMNC;
+	TInt iServiceId;
+	TInt iAccessBearer;
+	TInt iServiceMode;
+	
+	CArrayFixFlat <TTmgi> *iTmgiList;
+		
+	TBool iAllTmgiValid;
+	TBool iAllTmgiInvalid;
+	TBool iRemoveAll;
+	};
+
+/**
+Class implementing CReceiveMBMSNtfnStep
+@internalComponent
+*/
+
+class CReceiveMBMSNtfnStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CReceiveMBMSNtfnStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	~CReceiveMBMSNtfnStep();
+	
+	TPtrC iConnectionServName;
+	TPtrC iNotifName;   
+	TInt iInitialDelayInSeconds;
+	TInt iExpectedValue;
+	TInt iExpectedValue1;
+	TTypeOfNotification iNotificationType;
+	
+	TUint iNumTmgis; 
+	TUint iMCC;
+	TUint iMNC;
+	TUint iServiceId;
+	TBool iAllTmgiValid;
+	TBool iAllTmgiInvalid;
+	TBool iRemoveAll;
+	
+	CArrayFixFlat <TTmgi> *iTmgiList;
+	};
+
+/**
+Class implementing CancelMBMSNtfnStep
+@internalComponent
+*/
+
+class CCancelMBMSNtfnStep : public CRConnectionServQueryTestStepBase
+	{
+public:
+	CCancelMBMSNtfnStep(CCEsockTestBase*& aEsockTest);
+	TVerdict doSingleTestStep();
+	TInt ConfigureFromIni();
+
+private:
+	~CCancelMBMSNtfnStep();
+		
+	TPtrC iConnectionServName;
+	TPtrC iNotifName;   
+	};
+
+	
+#endif // CONNECTIONSERVER_TESTSTEPS_H
+