datacommsserver/esockserver/test/TE_EsockTestSteps/src/Te_esockteststepsSuiteServer.cpp
// Copyright (c) 2004-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:
// for (WINS && !EKA2) versions will be xxxServer.Dll and require a thread to be started
// in the process of the client. The client initialises the server by calling the
// one and only ordinal.
//
//
/**
@file Te_esockteststepsSuiteServer.cpp
*/
#include <e32base.h>
#include <c32comm.h>
#include <c32root.h>
#include <ecom/ecom.h>
#include "SocketServer.TestSteps.h"
#include "Connections.TestSteps.h"
#include "SubConnections.TestSteps.h"
#include "Sockets.TestSteps.h"
#include "BearerMobility.TestSteps.h"
#include "DataMonitoring.TestSteps.h"
#include "ESockDebug.TestSteps.h"
#include "ConnectionServer.TestSteps.h"
#include "Commsdat.TestSteps.h"
#include "Qos.TestSteps.h"
#include "cancelconnectrsocketStep.h"
#include "Te_esockteststepsSuiteServer.h"
CTe_esockteststepsSuite* CTe_esockteststepsSuite::NewL()
/**
* @return - Instance of the test server
* Same code for Secure and non-secure variants
* Called inside the MainL() function to create and start the
* CTestServer derived server.
*/
{
CTe_esockteststepsSuite * server = new (ELeave) CTe_esockteststepsSuite();
CleanupStack::PushL(server);
// CServer base class call which can be either StartL or ConstructL,
// the later will permit Server Logging.
server->StartL(server->ServerName());
CleanupStack::Pop(server);
return server;
}
// Secure variants much simpler
// For EKA2, just an E32Main and a MainL()
LOCAL_C void MainL()
/**
* Secure variant
* Much simpler, uses the new Rendezvous() call to sync with the client
*/
{
// Leave the hooks in for platform security
#if (defined __DATA_CAGING__)
RProcess().DataCaging(RProcess::EDataCagingOn);
RProcess().DataCaging(RProcess::ESecureApiOn);
#endif
CActiveScheduler* sched=NULL;
sched=new(ELeave) CActiveScheduler;
CActiveScheduler::Install(sched);
CTe_esockteststepsSuite* server = NULL;
// Create the CTestServer derived server
TRAPD(err,server = CTe_esockteststepsSuite::NewL());
if(!err)
{
// Sync with the client and enter the active scheduler
RProcess::Rendezvous(KErrNone);
sched->Start();
}
delete server;
delete sched;
}
GLDEF_C TInt E32Main()
/**
* @return - Standard Epoc error code on process exit
* Secure variant only
* Process entry point. Called by client using RProcess API
*/
{
__UHEAP_MARK;
CTrapCleanup* cleanup = CTrapCleanup::New();
if(cleanup == NULL)
{
return KErrNoMemory;
}
TRAPD(err,MainL());
delete cleanup;
REComSession::FinalClose();
__UHEAP_MARKEND;
return err;
}
CTe_esockteststepsSuite::CTe_esockteststepsSuite()
: CTestServer()
, iEsockTest(NULL)
{
}
CTe_esockteststepsSuite::~CTe_esockteststepsSuite()
{
if( iEsockTest != NULL )
{
delete iEsockTest;
iEsockTest = NULL;
}
}
#define NEW_ESOCK_TESTSTEP(TEST_STEP_NAME) \
else if(aStepName.CompareF (K##TEST_STEP_NAME) == 0)\
testStep = new C##TEST_STEP_NAME(iEsockTest);
#define FIRST_NEW_ESOCK_TESTSTEP(TEST_STEP_NAME) \
if(aStepName.CompareF (K##TEST_STEP_NAME) == 0) \
testStep = new C##TEST_STEP_NAME(iEsockTest);
CTestStep* CTe_esockteststepsSuite::CreateTestStep(const TDesC& aStepName)
/**
* @return - A CTestStep derived instance
* Secure and non-secure variants
* Implementation of CTestServer pure virtual
*/
{
CTestStep* testStep = NULL;
// They are created "just in time" when the worker thread is created
// More test steps can be added below
if(aStepName.CompareF (KAddRSocketToRSubConnectionStep) == 0)
testStep = new CAddRSocketToRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KAcceptIncomingConnectionStep) == 0)
testStep = new CAcceptIncomingConnectionStep(iEsockTest);
else if(aStepName.CompareF (KAsyncAcceptIncomingConnectionStep) == 0)
testStep = new CAsyncAcceptIncomingConnectionStep(iEsockTest);
else if(aStepName.CompareF (KAddRSocketToRSubConnectionOOMStep) == 0)
testStep = new CAddRSocketToRSubConnectionOOMStep(iEsockTest);
else if(aStepName.CompareF (KBackupRestoreStep) == 0)
testStep = new CBackupRestoreStep(iEsockTest);
else if(aStepName.CompareF (KCheckMobilityNotificationStep) == 0)
testStep = new CCheckMobilityNotificationStep(iEsockTest);
else if(aStepName.CompareF (KCheckRSubConnectionEventsStep) == 0)
testStep = new CCheckRSubConnectionEventsStep(iEsockTest);
else if(aStepName.CompareF (KCloseRCommsMobilityAPIExtStep) == 0)
testStep = new CCloseRCommsMobilityAPIExtStep(iEsockTest);
else if(aStepName.CompareF (KCloseRConnectionStep) == 0)
testStep = new CCloseRConnectionStep(iEsockTest);
else if(aStepName.CompareF (KCloseRSocketServStep) == 0)
testStep = new CCloseRSocketServStep(iEsockTest);
else if(aStepName.CompareF (KCloseRSocketStep) == 0)
testStep = new CCloseRSocketStep(iEsockTest);
else if(aStepName.CompareF (KCloseRSubConnectionStep) == 0)
testStep = new CCloseRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KCloseRSubConParameterBundleStep) == 0)
testStep = new CCloseRSubConParameterBundleStep(iEsockTest);
else if(aStepName.CompareF (KCompareExtIPLink99ParameterSetStep) == 0)
testStep = new CCompareExtIPLink99ParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KCompareExtSBLPParameterSetStep) == 0)
testStep = new CCompareExtSBLPParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KCompareGenQosParameterSetStep) == 0)
testStep = new CCompareGenQosParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KCompareGenSBLPParameterSetStep) == 0)
testStep = new CCompareGenSBLPParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KinitialiseExtMbmsParameterSetStep) == 0)
testStep = new CinitialiseExtMbmsParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KinitialiseGenMbmsParameterSetStep) == 0)
testStep = new CinitialiseGenMbmsParameterStep(iEsockTest);
else if(aStepName.CompareF (KConnectRSocketServStep) == 0)
testStep = new CConnectRSocketServStep(iEsockTest);
else if(aStepName.CompareF (KConnectRSocketStep) == 0)
testStep = new CConnectRSocketStep(iEsockTest);
else if(aStepName.CompareF (KControlRSubConnectionStep) == 0)
testStep = new CControlRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KCreateRConnectionStep) == 0)
testStep = new CCreateRConnectionStep(iEsockTest);
else if(aStepName.CompareF (KCreateRSocketServStep) == 0)
testStep = new CCreateRSocketServStep(iEsockTest);
else if(aStepName.CompareF (KCreateRSocketStep) == 0)
testStep = new CCreateRSocketStep(iEsockTest);
else if(aStepName.CompareF (KCreateSBLPFlowIdStep) == 0)
testStep = new CCreateSBLPFlowIdStep(iEsockTest);
else if(aStepName.CompareF (KSetSBLPFlowIdStep) == 0)
testStep = new CSetSBLPFlowIdStep(iEsockTest);
else if(aStepName.CompareF (KCreateRSubConnectionStep) == 0)
testStep = new CCreateRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KCreateRSubConParameterBundleStep) == 0)
testStep = new CCreateRSubConParameterBundleStep(iEsockTest);
else if(aStepName.CompareF (KCreateRSubConParameterFamilyStep) == 0)
testStep = new CCreateRSubConParameterFamilyStep(iEsockTest);
else if(aStepName.CompareF (KGetRSubConParametersStep) == 0)
testStep = new CGetRSubConParametersStep(iEsockTest);
else if(aStepName.CompareF (KinitialiseExtIPLink99ParameterSetStep) == 0)
testStep = new CinitialiseExtIPLink99ParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KinitialiseExtIPLinkR5ParameterSetStep) == 0)
testStep = new CinitialiseExtIPLinkR5ParameterSetStep(iEsockTest);
else if (aStepName.CompareF(KCompareExtIPLinkR5ParameterSetStep) == 0)
testStep = new CCompareExtIPLinkR5ParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KinitialiseIMSExtParameterSetStep) == 0)
testStep = new CinitialiseIMSExtParameterSetStep(iEsockTest);
// SYMBIAN_NETWORKING_UMTSR5
else if(aStepName.CompareF (KinitialiseExtSblpParameterSetStep) == 0)
testStep = new CinitialiseExtSblpParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KinitialiseGenQosParameterSetStep) == 0)
testStep = new CinitialiseGenQosParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KinitialiseGenSblpParameterSetStep) == 0)
testStep = new CinitialiseGenSblpParameterSetStep(iEsockTest);
else if(aStepName.CompareF (KMultipleOpenRSubConnectionStep) == 0)
testStep = new CMultipleOpenRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KMultipleAddRSubConnectionStep) == 0)
testStep = new CMultipleAddRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KAddRSocketToRSubConNoWaitStep) == 0)
testStep = new CAddRSocketToRSubConNoWaitStep(iEsockTest);
else if(aStepName.CompareF (KMultipleRemoveRSubConnectionStep) == 0)
testStep = new CMultipleRemoveRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KOpenRCommsMobilityAPIExtStep) == 0)
testStep = new COpenRCommsMobilityAPIExtStep(iEsockTest);
else if(aStepName.CompareF (KOpenRConnectionStep) == 0)
testStep = new COpenRConnectionStep(iEsockTest);
else if(aStepName.CompareF (KOpenRSocketStep) == 0)
testStep = new COpenRSocketStep(iEsockTest);
else if(aStepName.CompareF (KOpenRSubConnectionOOMStep) == 0)
testStep = new COpenRSubConnectionOOMStep(iEsockTest);
else if(aStepName.CompareF (KOpenRSubConnectionStep) == 0)
testStep = new COpenRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KWaitForIncomingConnectionStep) == 0)
testStep = new CWaitForIncomingConnectionStep(iEsockTest);
else if(aStepName.CompareF (KRegisterForRSubConnectionEventsStep) == 0)
testStep = new CRegisterForRSubConnectionEventsStep(iEsockTest);
else if(aStepName.CompareF (KRemoveRSocketFromRSubConnectionOOMStep) == 0)
testStep = new CRemoveRSocketFromRSubConnectionOOMStep(iEsockTest);
else if(aStepName.CompareF (KRemoveRSocketFromRSubConnectionStep) == 0)
testStep = new CRemoveRSocketFromRSubConnectionStep(iEsockTest);
else if(aStepName.CompareF (KRejectIncomingConnectionStep) == 0)
testStep = new CRejectIncomingConnectionStep(iEsockTest);
else if(aStepName.CompareF (KSendReceiveRSocketStep) == 0)
testStep = new CSendReceiveRSocketStep(iEsockTest);
else if(aStepName.CompareF (KSetRSubConParametersStep) == 0)
testStep = new CSetRSubConParametersStep(iEsockTest);
else if(aStepName.CompareF (KShutdownRSocketStep) == 0)
testStep = new CShutdownRSocketStep(iEsockTest);
else if(aStepName.CompareF (KStartRConnectionStep) == 0)
testStep = new CStartRConnectionStep(iEsockTest);
else if(aStepName.CompareF (KAwaitRConnectionStartComplete) == 0)
testStep = new CAwaitRConnectionStartComplete(iEsockTest);
else if(aStepName.CompareF (KStartSimTSYStep) == 0)
testStep = new CStartSimTSYStep(iEsockTest);
else if(aStepName.CompareF (KStopRConnectionStep) == 0)
testStep = new CStopRConnectionStep(iEsockTest);
else if(aStepName.CompareF (KStopSimTSYStep) == 0)
testStep = new CStopSimTSYStep(iEsockTest);
else if(aStepName.CompareF (KSimTSYTriggerEventStep) == 0)
testStep = new CSimTSYTriggerEventStep(iEsockTest);
else if(aStepName.CompareF (KCleanAllStep) == 0)
testStep = new CCleanAllStep(iEsockTest);
else if(aStepName.CompareF (KTe_CreatePublishSubscribeVar) == 0)
testStep = new CCreatePublishSubscribeVar(iEsockTest);
else if(aStepName.CompareF (KTe_CheckPublishSubscribeVar) == 0)
testStep = new CCheckPublishSubscribeVar(iEsockTest);
else if(aStepName.CompareF (KInitialiseRSubConParameterFamilyStep) == 0)
testStep = new CInitialiseRSubConParameterFamilyStep(iEsockTest);
else if(aStepName.CompareF(KmoveConnectedSocketToSubconnectionStep)==0)
testStep = new CmoveConnectedSocketToSubconnectionStep(iEsockTest);
else if(aStepName.CompareF(KCancelConnectrsocketStep)==0)
testStep = new CCancelConnectrsocketStep(iEsockTest);
else if(aStepName.CompareF(Kacceptcarrierrcommsmobilityapiext)==0)
testStep = new Cacceptcarrierrcommsmobilityapiext(iEsockTest);
else if(aStepName.CompareF(Krejectcarrierrcommsmobilityapiext)==0)
testStep = new Crejectcarrierrcommsmobilityapiext(iEsockTest);
else if(aStepName.CompareF(KCancelMobilityNotificationStep)==0)
testStep = new CCancelMobilityNotificationStep(iEsockTest);
else if(aStepName.CompareF(Kmigratercommsmobilityapiext)==0)
testStep = new Cmigratercommsmobilityapiext(iEsockTest);
else if(aStepName.CompareF(Kignorercommsmobilityapiext)==0)
testStep = new Cignorercommsmobilityapiext(iEsockTest);
else if(aStepName.CompareF(KRegisterForMobilityNotificationStep) == 0)
testStep = new CRegisterForMobilityNotificationStep(iEsockTest);
else if(aStepName.CompareF (KattachtorconnectionStep) == 0)
testStep = new CattachtorconnectionStep(iEsockTest);
else if(aStepName.CompareF(Kmobilitynotifyrcommsmobilityapiext)==0)
testStep = new Cmobilitynotifyrcommsmobilityapiext(iEsockTest);
else if(aStepName.CompareF(Kcancelnotifyrcommsmobilityapiext)==0)
testStep = new Ccancelnotifyrcommsmobilityapiext(iEsockTest);
// Data monitoring
else if(aStepName.CompareF (KOpenRCommsDataMonitoringApiExtStep) == 0)
testStep = new COpenRCommsDataMonitoringApiExtStep(iEsockTest);
else if(aStepName.CompareF (KRequestDataTransferredStep) == 0)
testStep = new CRequestDataTransferredStep(iEsockTest);
else if(aStepName.CompareF (KCloseRCommsDataMonitoringApiExtStep) == 0)
testStep = new CCloseRCommsDataMonitoringApiExtStep(iEsockTest);
else if(aStepName.CompareF (KReceiveDataReceivedNotificationStep) == 0)
testStep = new CReceiveDataReceivedNotificationStep(iEsockTest);
else if(aStepName.CompareF (KReceiveDataSentNotificationStep) == 0)
testStep = new CReceiveDataSentNotificationStep(iEsockTest);
else if(aStepName.CompareF (KCancelDataReceivedNotificationStep) == 0)
testStep = new CCancelDataReceivedNotificationStep(iEsockTest);
else if(aStepName.CompareF (KCancelDataSentNotificationStep) == 0)
testStep = new CCancelDataSentNotificationStep(iEsockTest);
else if(aStepName.CompareF (KRequestDataReceivedNotificationStep) == 0)
testStep = new CRequestDataReceivedNotificationStep(iEsockTest);
else if(aStepName.CompareF (KRequestDataSentNotificationStep) == 0)
testStep = new CRequestDataSentNotificationStep(iEsockTest);
#ifdef __1060_TESTCODE__
// Mobility
else if(aStepName.CompareF (KregisterformobilitynotificationStep) == 0)
testStep = new CregisterformobilitynotificationStep(iEsockTest);
else if(aStepName.CompareF (KChangeBearerAvailabilityStep) == 0)
testStep = new CChangeBearerAvailabilityStep(iEsockTest);
else if(aStepName.CompareF (KCSelectRConnectionStep) == 0)
testStep = new CSelectRConnectionStep(iEsockTest);
else if(aStepName.CompareF (KGetAvailabilityAPIStep) == 0)
testStep = new CGetAvailabilityAPIStep(iEsockTest);
else if(aStepName.CompareF (KRegisterForAvailabilityNotificationStep) == 0)
testStep = new CRegisterForAvailabilityNotificationStep(iEsockTest);
else if(aStepName.CompareF (KCheckForAvailabilityStep) == 0)
testStep = new CCheckForAvailabilityStep(iEsockTest);
else if(aStepName.CompareF (KConfirmSocketDataTransferStep) == 0)
testStep = new CConfirmSocketDataTransferStep(iEsockTest);
else if(aStepName.CompareF (KCreateBearerAvailabilitySimulatorStep) == 0)
testStep = new CCreateBearerAvailabilitySimulatorStep(iEsockTest);
#endif
// ESock debug control based test steps
NEW_ESOCK_TESTSTEP(AppendMessageInterceptPattern)
NEW_ESOCK_TESTSTEP(EnableMessageInterceptRegister)
NEW_ESOCK_TESTSTEP(DisableMessageInterceptRegister)
NEW_ESOCK_TESTSTEP(ResetMessageInterceptRegister)
NEW_ESOCK_TESTSTEP(QueryMsgInterceptComplete)
// RConnectionServ API
NEW_ESOCK_TESTSTEP(CreateRConnectionServStep)
NEW_ESOCK_TESTSTEP(ConnectRConnectionServStep)
NEW_ESOCK_TESTSTEP(RConnectionServApiExtStep)
NEW_ESOCK_TESTSTEP(CloseRConnectionServStep)
NEW_ESOCK_TESTSTEP(AccessPointStatusQueryStep)
NEW_ESOCK_TESTSTEP(CancelAccessPointStatusQueryStep)
NEW_ESOCK_TESTSTEP(RequestAccessPointNotificationStep)
NEW_ESOCK_TESTSTEP(ReceiveAccessPointNotificationStep)
NEW_ESOCK_TESTSTEP(CancelAccessPointNotificationStep)
NEW_ESOCK_TESTSTEP(RequestMBMSNtfnStep)
NEW_ESOCK_TESTSTEP(ReceiveMBMSNtfnStep)
NEW_ESOCK_TESTSTEP(CancelMBMSNtfnStep)
// Availability control
NEW_ESOCK_TESTSTEP(SetAccessPointAvailabilityStep)
NEW_ESOCK_TESTSTEP(SetPppAccessPointAvailabilityStep)
NEW_ESOCK_TESTSTEP(SetWifiAccessPointAvailabilityStep)
NEW_ESOCK_TESTSTEP(EnumerateConnectionsStep)
// Commsdat helper tests
NEW_ESOCK_TESTSTEP(DeleteCommsdatRecordStep)
NEW_ESOCK_TESTSTEP(CreateCommsdatRecordStep)
NEW_ESOCK_TESTSTEP(UpdateCommsdatRecordStep)
NEW_ESOCK_TESTSTEP(InitialiseDummyProtocolParameterSetStep)
// Sockets
NEW_ESOCK_TESTSTEP(SendReceiveIoctlStep)
NEW_ESOCK_TESTSTEP(SocketProtocolDescriptionStep)
NEW_ESOCK_TESTSTEP(SocketGetOptionStep)
// Socket server
NEW_ESOCK_TESTSTEP(SocketServerNumProtocolsStep)
NEW_ESOCK_TESTSTEP(SocketServerFindProtocolStep)
NEW_ESOCK_TESTSTEP(SocketServerGetProtocolInfoStep)
NEW_ESOCK_TESTSTEP(SocketServerStartProtocolStep)
NEW_ESOCK_TESTSTEP(SocketServerStopProtocolStep)
// General
NEW_ESOCK_TESTSTEP(CompareIntegerValuesStep)
NEW_ESOCK_TESTSTEP(RegisterProgressNotificationStep)
NEW_ESOCK_TESTSTEP(CheckProgressNotificationStep)
NEW_ESOCK_TESTSTEP(CheckNegativeProgressNotificationStep)
return testStep;
}
/**
Returns server name based on the EKA version
@internalTechnology
@test
@return Descriptor containing the servername
*/
const TPtrC CTe_esockteststepsSuite::ServerName() const
{
// On EKA2, test server runs in its own process.
// So we arrive at the server name using the exe from which it is loaded.
// This is useful when doing cap tests, as we create duplicate exe's using setcap then.
TParsePtrC serverName(RProcess().FileName());
return serverName.Name();
}