diff -r a2efdd544abf -r b47902b73a93 networkprotocolmodules/suplprotocolmodule/SuplProtocol/test/src/mtlr7Step.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkprotocolmodules/suplprotocolmodule/SuplProtocol/test/src/mtlr7Step.cpp Fri Jun 04 10:34:15 2010 +0100 @@ -0,0 +1,283 @@ +// Copyright (c) 2005-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: +// Example CTestStep derived implementation +// +// + +/** + @file mtlr7Step.cpp + @internalTechnology +*/ +#include "mtlr7Step.h" +#include "te_suplprotocolsuitedefs.h" +#include +/** + Destructor + */ +Cmtlr7Step::~Cmtlr7Step() + + { + } + +/** + Constructor + */ +Cmtlr7Step::Cmtlr7Step() + { + SetTestStepName(Kmtlr7Step); + } + +/** + @return - TVerdict code + Override of base class virtual + */ +TVerdict Cmtlr7Step::doTestStepPreambleL() + { + // Call base class method for pre test actions + CTe_suplprotocolSuiteStepBase::doTestStepPreambleL(); + + TLbsNetProtocolModuleParams param(*iGatewayObserver); + iModule = CSuplGatewayInterface::NewL(reinterpret_cast(¶m)); + + // components for generating incoming SMS SUPL INIT + iSuplPush = CLbsSuplPush::NewL(ELbsSuplPushChannelSMS, *this); + iSuplInitGenerator = CSuplInitGenerator::NewL(); + + return TestStepResult(); + } + + +/** Perform Cmtlr7Step test step. + +This test verifies that the SUPL Protocol Module correctly handles an MT-LR +when the requested positioning type is Terminal Assisted +(and Terminal Assisted Positioning is supported) + +@return TVerdict test result code +*/ +TVerdict Cmtlr7Step::doTestStepL() + { + INFO_PRINTF1(_L("\t********************************************************************")); + INFO_PRINTF1(_L("\tMTLR basic procedure followed - Assistance Data in RRLP message")); + INFO_PRINTF1(_L("\t********************************************************************")); + INFO_PRINTF1(_L("- START -")); + + + // Initiate MT-LR + // Generate received SUPL INIT message (test message content #3 - terminal assisted) + TPtr8 messagePtr(iReceiveBuffer.Des()); + TInt err = iSuplInitGenerator->GenerateSuplInitL(3, messagePtr); + if (err != KErrNone) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + + // Inject SUPL INIT using the SUPL Push API + INFO_PRINTF1(_L("\tLBS (SuplPush) -> OnSuplInit()")); + TLbsSuplPushRequestId reqId = 12345; + TPtrC8 message(messagePtr); + iSuplPush->SuplInit(reqId, message, 0); + + // Check Gateway receives a Privacy request and Location Request + INFO_PRINTF1(_L("\tLBS <- ProcessLocationRequest()")); + if (EFail == CheckGatewayCallbackL(CSuplGatewayObserver::EProcessLocationRequest) || + !iGatewayObserver->IsPrivReqReceived() || + MLbsNetworkProtocolObserver::EServiceMobileTerminated != iGatewayObserver->LocType() ) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + + // LBS delivers privacy response + INFO_PRINTF1(_L("\tLBS -> RespondPrivacyRequest ()")); + CLbsNetworkProtocolBase::TLbsPrivacyResponse privacyResponse = CLbsNetworkProtocolBase::EPrivacyResponseAccepted; + iModule->RespondPrivacyRequest(iGatewayObserver->SessionIdValue(), privacyResponse, 0); + + // Check Connection Manager receives a request for connecting + if (EFail == CheckNetworkCallbackL(CSuplNetworkTestObserver::EConnectReq)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t ConnectionRequest -> NET")); + + // Simulate the connection is up (inject that event) + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t Connected <- NET")); + iNetworkObserver->InjectConnectedIndication(iNetworkObserver->SessionId()); + + // LBS Requests assistance data + INFO_PRINTF1(_L("\tLBS -> RequestAssistanceData ()")); + TLbsAsistanceDataGroup dataRequestMask1 = EAssistanceDataBadSatList; + TLbsNetSessionIdArray dummyIdArray; + iModule->RequestAssistanceData(dataRequestMask1, dummyIdArray); + + + // Check Connection Manager receives a request to send a SUPL POS INIT + // with the assistance data mask requested by the gateway + if (EFail == CheckNetworkCallbackL(CSuplNetworkTestObserver::ESendSuplPosInitSendReq)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t SUPL POS INIT -> NET")); + + // Inject a SUPL POS with the Assistance data requested + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t SUPL POS - RRLP Assitance Data <- NET")); + CSuplMessageBase* suplPos = BuildSuplPosAssitDataL(EAssistanceDataAquisitionAssistance|EAssistanceDataBadSatList, EFalse); + iNetworkObserver->InjectSuplMessage(iNetworkObserver->SessionId(), suplPos); + + + + // Check gateway receives the assistance data types requested. + INFO_PRINTF1(_L("\tLBS <- ProcessAssistanceData()")); + if (EFail == CheckGatewayCallbackL( + CSuplGatewayObserver::EProcessAssistanceData) || + (dataRequestMask1 & iGatewayObserver->AssistanceDataSetMask() != dataRequestMask1)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + + + // Check the Connection Manager receives a request to send a SUPL POS (ack to assistance data) + if (EFail == CheckNetworkCallbackL(CSuplNetworkTestObserver::ESendSuplPosSendReq)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t SUPL POS - RRLP Assistance Data Ack -> NET")); + + + + // Inject a SUPL POS (RRLP Measure Position Request) - no assistance data + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t SUPL POS - RRLP Measure Position Request <- NET")); + suplPos = BuildSuplPosRequestL(TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted, EAssistanceDataNone); + iNetworkObserver->InjectSuplMessage(iNetworkObserver->SessionId(), suplPos); + + + + // Check gateway receives a location request (due to the RRLP Measure Position Request) + INFO_PRINTF1(_L("\tLBS <- ProcessLocationRequest()")); + if (EFail == CheckGatewayCallbackL(CSuplGatewayObserver::EProcessLocationRequest) || + MLbsNetworkProtocolObserver::EServiceMobileTerminated != iGatewayObserver->LocType()) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + + + // Fake LBS sending results (measurements) to SPM + INFO_PRINTF1(_L("\tLBS -> RespondLocationRequest")); + TPositionExtendedSatelliteInfo satelliteInfo; + TSatelliteData satelliteData; + satelliteData.SetSatelliteId(23); + satelliteData.SetAzimuth(32); + satelliteData.SetElevation(64); + satelliteData.SetIsUsed(ETrue); + satelliteData.SetSignalStrength(15); + satelliteInfo.AppendSatelliteData(satelliteData); + iModule->RespondLocationRequest(iGatewayObserver->SessionIdValue(),KErrNone,satelliteInfo); + + + // Check the Connection Manager receives a request to send a SUPL POS (RRLP Measure Position Response) + if (EFail == CheckNetworkCallbackL(CSuplNetworkTestObserver::ESendSuplPosSendReq)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t SUPL POS - RRLP Measure Position Response -> NET")); + + + // Inject a SUPL END (with position) + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t SUPL END <- NET")); + CSuplMessageBase* suplEnd = BuildSuplEndL(ETrue); + iNetworkObserver->InjectSuplMessage(iNetworkObserver->SessionId(), suplEnd); + + + // Check gateway receives a location update (due to the received final position) + INFO_PRINTF1(_L("\tLBS <- ProcessLocationUpdate()")); + if (EFail == CheckGatewayCallbackL(CSuplGatewayObserver::EProcessLocationUpdate)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + + + // Check gateway session completed + if (EFail == CheckGatewayCallbackL(CSuplGatewayObserver::EProcessSessionComplete)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + INFO_PRINTF1(_L("\tLBS <- ProcessSessionComplete")); + + // Check Connection Manager receives a disconnection request + if (EFail == CheckNetworkCallbackL(CSuplNetworkTestObserver::EDisconnectReq)) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + INFO_PRINTF1(_L("\t\t\t\t\t\t\t\t DisconnectRequest -> NET")); + + // Check if more observer activity takes place + if (iGatewayObserver->IsMoreObserverActivity() || + iNetworkObserver->IsMoreObserverActivity()) + { + SetTestStepResult(EFail); + return TestStepResult(); + } + INFO_PRINTF1(_L("- END -")); + + SetTestStepResult(EPass); + return TestStepResult(); + + } + + +/** + * @return - TVerdict code + * Override of base class virtual + */ +TVerdict Cmtlr7Step::doTestStepPostambleL() + { + delete iModule; + + delete iSuplPush; + delete iSuplInitGenerator; + + // Call base class method for post test actions + CTe_suplprotocolSuiteStepBase::doTestStepPostambleL(); + return TestStepResult(); + } + + +/** +Overrides the pure virtual MLbsSuplPushObserver::OnSuplInitComplete. +Receives the result of the message sending. + +@param aError [In] The error code or KErrNone if successful. + +@see MTe_LbsSuplSmsTriggerSenderObserver::OnMessageSent +@see CTe_LbsSuplSmsTriggerSender::SendMessage +*/ +void Cmtlr7Step::OnSuplInitComplete(TLbsSuplPushChannel /*aChannel*/, TLbsSuplPushRequestId /*aReqId*/, TInt aError, TInt /*aReserved*/) + { + iSmsSendError = aError; + if (iSmsSendError != KErrNone) + { + User::Invariant(); + } + } +