diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestpacketcontext.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestpacketcontext.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,14451 @@ +/* +* Copyright (c) 2007-2008 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: +* +*/ + + + +/** + * Test step definitions for the PacketContext functional unit. + * @internalTechnology + */ + +#include +#include +#include +#include "cctsyintegrationtestpacketcontext.h" +#include "chttpdownload.h" + + +CCTSYIntegrationTestPacketContextBase::CCTSYIntegrationTestPacketContextBase(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestSuiteStepBase(aEtelSessionMgr), iPacketServiceTestHelper(*this), iNetworkTestHelper(*this) +/** + * Constructor + */ + { + } + +CCTSYIntegrationTestPacketContextBase::~CCTSYIntegrationTestPacketContextBase() +/* + * Destructor + */ + { + } + + +void CCTSYIntegrationTestPacketContextBase::SetAttachModeToWhenPossibleAndWaitForAttachL(RPacketService& aPacketService) +/** + * Attaches the phone to the packet service by setting the + * attach mode to RPacketService::EAttachWhenPossible. Requests + * that the phone attaches to the packet service and waits for + * attach to complete. + * + * @param aPacketService Reference to packet service subsession. + */ + { + RPacketService::TAttachMode attachMode; + CHECK_EQUALS_L(aPacketService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error.")); + + TExtEtelRequestStatus notifyServiceStatusChStatus(aPacketService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStatusChStatus); + RPacketService::TStatus packetServiceStatus; + aPacketService.NotifyStatusChange(notifyServiceStatusChStatus, packetServiceStatus); + + if(attachMode != RPacketService::EAttachWhenPossible) + { + CHECK_EQUALS_L(aPacketService.SetAttachMode(RPacketService::EAttachWhenPossible), KErrNone, + _L("RPacketService::SetAttachMode returned with an error.")); + } + + CHECK_EQUALS_L(aPacketService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error.")); + CHECK_EQUALS_L(attachMode, RPacketService::EAttachWhenPossible, _L("RPacketService::GetAttachMode did not return EAttachWhenPossible.")); + + // Ensure phone is attached to the packet service (RPacketService::GetStatus returns EStatusAttached). + RPacketService::TStatus packetStatus; + CHECK_EQUALS_L(aPacketService.GetStatus(packetStatus), KErrNone, _L("RPacketService::GetStatus returned with an error")); + + // Wait for phone to attach to packet service if it is not attached. + if (packetStatus != RPacketService::EStatusAttached) + { + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + aPacketService, + notifyServiceStatusChStatus, + packetServiceStatus, + RPacketService::EStatusAttached, + KErrNone); + CHECK_EQUALS_L(aPacketService.GetStatus(packetStatus), KErrNone, _L("RPacketService::GetStatus returned with an error")); + CHECK_EQUALS_L(packetStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus did not return EStatusAttached")); + } + + CleanupStack::PopAndDestroy(1, ¬ifyServiceStatusChStatus); + } + + +TInt CCTSYIntegrationTestPacketContextBase::AddPacketFilterV2ToContextL(RPacketContext& aPacketContext, TInt aId, TInt aErrCode) +/** + * Adds a packet filter to context. + * + * @param aPacketContext Reference to packet context subsession. + * @param aId the id of the filter to set, which is also an identifyer to one of three predefined filters + * @param aErrCode the error code that the AddPacketFilter should return, default KErrNone. + * + * @return Request status value returned by + * RPacketContext::AddPacketFilter call. + */ + { + RPacketContext::TPacketFilterV2 packetFilterV2; + FillPacketFilter(packetFilterV2,aId); + + RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2); + + TExtEtelRequestStatus addFilterStatus(aPacketContext, EPacketContextAddPacketFilter); + CleanupStack::PushL(addFilterStatus); + aPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeShort), KErrNone, + _L("RPacketContext::AddPacketFilter timed out")) + ASSERT_EQUALS(addFilterStatus.Int(), aErrCode, + _L("RPacketContext::AddPacketFilter did returned the expected value")) + + TInt ret = addFilterStatus.Int(); + CleanupStack::PopAndDestroy(&addFilterStatus); + return ret; + } + +// Helper macro, same as ASSERT_EQUALS but also change a local parameter (ret) to EFalse if the parameters are not equal +// One should define the variable TBool ret before calling this macro, and then one can use this variable to know if any of the local macros failed. +#define LOCAL_ASSERT_EQUALS(result,expected,msg) \ + { \ + TBool tempLocalAssertEqualsRet = ((result)==(expected)); \ + ASSERT_TRUE(tempLocalAssertEqualsRet,msg); \ + if(!tempLocalAssertEqualsRet) \ + { \ + ret=EFalse; \ + } \ + } + +// Helper macro, same as ASSERT_TRUE but also change a local parameter (ret) to EFalse if the parameters are not equal +// One should define the variable TBool ret before calling this macro, and then one can use this variable to know if any of the local macros failed. +#define LOCAL_ASSERT_TRUE(value,msg) LOCAL_ASSERT_EQUALS((TBool)(value),(TBool)ETrue,msg); + + +TUint CCTSYIntegrationTestPacketContextBase::FindLSB(TUint aNumber) +/** + * Finds the least significant bit in a number + * + * @param aNumber The number + * @return The LSB of aNumber + */ + { + if(aNumber==0) + { + return 0; + } + TUint bit=1; + while(ETrue) + { + if((aNumber&bit)!=0) + { + return bit; + } + bit=bit*2; + } + } + +TUint CCTSYIntegrationTestPacketContextBase::FindMSB(TUint aNumber) +/** + * Finds the most significant bit in a number + * + * @param aNumber The number + * @return The MSB of aNumber + */ + { + if(aNumber==0) + { + return 0; + } + TUint bit=1; + while(ETrue) + { + if((aNumber&bit)!=0) + { + aNumber=(aNumber^bit); + if(aNumber==0) + { + return bit; + } + } + bit=bit*2; + } + } + +void CCTSYIntegrationTestPacketContextBase::FillPacketFilter(RPacketContext::TPacketFilterV2 &aFilter, TInt aId) +/** + * Fill a packet filter object with actual values. + * + * @param aFilter Reference to the structure to fill. + * @param aId the id of the filter to set, which is also an identifyer to one of three predefined filters + * + */ + { + aFilter.iId = aId; + switch(aId) + { + case 1: + { + aFilter.iEvaluationPrecedenceIndex = 0; + aFilter.iSrcAddr[0] = 0xCF; + aFilter.iSrcAddr[1] = 0xFF; + aFilter.iSrcAddr[2] = 0xFF; + aFilter.iSrcAddr[3] = 0x11; + aFilter.iSrcAddrSubnetMask[0] = 0xC0; + aFilter.iSrcAddrSubnetMask[1] = 0xC1; + aFilter.iSrcAddrSubnetMask[2] = 0xF2; + aFilter.iSrcAddrSubnetMask[3] = 0x51; + aFilter.iProtocolNumberOrNextHeader = 6; + aFilter.iSrcPortMin = 2; + aFilter.iSrcPortMax = 65000; + aFilter.iDestPortMin = 8; + aFilter.iDestPortMax = 65100; + aFilter.iTOSorTrafficClass = 0x3F8C; + aFilter.iFlowLabel = 0; + aFilter.iIPSecSPI = 0; + break; + } + case 2: + { + aFilter.iEvaluationPrecedenceIndex = 255; + aFilter.iSrcAddr[0] = 0x21; + aFilter.iSrcAddr[1] = 0xD2; + aFilter.iSrcAddr[2] = 0x3F; + aFilter.iSrcAddr[3] = 0x1A; + aFilter.iSrcAddrSubnetMask[0] = 0x2A; + aFilter.iSrcAddrSubnetMask[1] = 0x2B; + aFilter.iSrcAddrSubnetMask[2] = 0xFF; + aFilter.iSrcAddrSubnetMask[3] = 0x3F; + aFilter.iProtocolNumberOrNextHeader = 8; + aFilter.iIPSecSPI = 0x0F88F000; + aFilter.iTOSorTrafficClass = 0x2F77; + aFilter.iDestPortMax = 0; + aFilter.iDestPortMin = 0; + aFilter.iFlowLabel = 0; + aFilter.iSrcPortMax = 0; + aFilter.iSrcPortMin = 0; + break; + } + case 3: + { + aFilter.iEvaluationPrecedenceIndex = 127; + aFilter.iSrcAddr[0] = 0xEF; + aFilter.iSrcAddr[1] = 0xAF; + aFilter.iSrcAddr[2] = 0xBF; + aFilter.iSrcAddr[3] = 0x21; + aFilter.iSrcAddrSubnetMask[0] = 0x10; + aFilter.iSrcAddrSubnetMask[1] = 0x21; + aFilter.iSrcAddrSubnetMask[2] = 0x32; + aFilter.iSrcAddrSubnetMask[3] = 0x41; + aFilter.iProtocolNumberOrNextHeader = 10; + aFilter.iSrcPortMin = 0; + aFilter.iSrcPortMax = 0; + aFilter.iDestPortMin = 0; + aFilter.iDestPortMax = 0; + aFilter.iTOSorTrafficClass = 0x4F8C; + aFilter.iFlowLabel = 0; + aFilter.iIPSecSPI = 0; + } + case 4: + { + aFilter.iEvaluationPrecedenceIndex = 0; + aFilter.iSrcAddr[0] = 0xD0; + aFilter.iSrcAddr[1] = 0xFF; + aFilter.iSrcAddr[2] = 0xFF; + aFilter.iSrcAddr[3] = 0x11; + aFilter.iSrcAddrSubnetMask[0] = 0xC1; + aFilter.iSrcAddrSubnetMask[1] = 0xC1; + aFilter.iSrcAddrSubnetMask[2] = 0xF2; + aFilter.iSrcAddrSubnetMask[3] = 0x51; + aFilter.iProtocolNumberOrNextHeader = 12; + aFilter.iSrcPortMin = 2; + aFilter.iSrcPortMax = 65000; + aFilter.iDestPortMin = 8; + aFilter.iDestPortMax = 65100; + aFilter.iTOSorTrafficClass = 0x3F8C; + aFilter.iFlowLabel = 0; + aFilter.iIPSecSPI = 0; + break; + } + case 5: + { + aFilter.iEvaluationPrecedenceIndex = 127; + aFilter.iSrcAddr[0] = 0xD1; + aFilter.iSrcAddr[1] = 0xFF; + aFilter.iSrcAddr[2] = 0xFF; + aFilter.iSrcAddr[3] = 0x11; + aFilter.iSrcAddrSubnetMask[0] = 0xC2; + aFilter.iSrcAddrSubnetMask[1] = 0xC1; + aFilter.iSrcAddrSubnetMask[2] = 0xF2; + aFilter.iSrcAddrSubnetMask[3] = 0x51; + aFilter.iProtocolNumberOrNextHeader = 14; + aFilter.iSrcPortMin = 2; + aFilter.iSrcPortMax = 65000; + aFilter.iDestPortMin = 8; + aFilter.iDestPortMax = 65100; + aFilter.iTOSorTrafficClass = 0x3F8C; + aFilter.iFlowLabel = 0; + aFilter.iIPSecSPI = 0; + break; + } + case 6: + { + aFilter.iEvaluationPrecedenceIndex = 255; + aFilter.iSrcAddr[0] = 0xD2; + aFilter.iSrcAddr[1] = 0xFF; + aFilter.iSrcAddr[2] = 0xFF; + aFilter.iSrcAddr[3] = 0x11; + aFilter.iSrcAddrSubnetMask[0] = 0xC3; + aFilter.iSrcAddrSubnetMask[1] = 0xC1; + aFilter.iSrcAddrSubnetMask[2] = 0xF2; + aFilter.iSrcAddrSubnetMask[3] = 0x51; + aFilter.iProtocolNumberOrNextHeader = 16; + aFilter.iSrcPortMin = 2; + aFilter.iSrcPortMax = 65000; + aFilter.iDestPortMin = 8; + aFilter.iDestPortMax = 65100; + aFilter.iTOSorTrafficClass = 0x3F8C; + aFilter.iFlowLabel = 0; + aFilter.iIPSecSPI = 0; + break; + } + case 7: + { + aFilter.iEvaluationPrecedenceIndex = 0; + aFilter.iSrcAddr[0] = 0xD3; + aFilter.iSrcAddr[1] = 0xFF; + aFilter.iSrcAddr[2] = 0xFF; + aFilter.iSrcAddr[3] = 0x11; + aFilter.iSrcAddrSubnetMask[0] = 0xC4; + aFilter.iSrcAddrSubnetMask[1] = 0xC1; + aFilter.iSrcAddrSubnetMask[2] = 0xF2; + aFilter.iSrcAddrSubnetMask[3] = 0x51; + aFilter.iProtocolNumberOrNextHeader = 18; + aFilter.iSrcPortMin = 2; + aFilter.iSrcPortMax = 65000; + aFilter.iDestPortMin = 8; + aFilter.iDestPortMax = 65100; + aFilter.iTOSorTrafficClass = 0x3F8C; + aFilter.iFlowLabel = 0; + aFilter.iIPSecSPI = 0; + break; + } + case 8: + default: + { + aFilter.iEvaluationPrecedenceIndex = 127; + aFilter.iSrcAddr[0] = 0xD4; + aFilter.iSrcAddr[1] = 0xFF; + aFilter.iSrcAddr[2] = 0xFF; + aFilter.iSrcAddr[3] = 0x11; + aFilter.iSrcAddrSubnetMask[0] = 0xC5; + aFilter.iSrcAddrSubnetMask[1] = 0xC1; + aFilter.iSrcAddrSubnetMask[2] = 0xF2; + aFilter.iSrcAddrSubnetMask[3] = 0x51; + aFilter.iProtocolNumberOrNextHeader = 18; + aFilter.iSrcPortMin = 2; + aFilter.iSrcPortMax = 65000; + aFilter.iDestPortMin = 8; + aFilter.iDestPortMax = 65100; + aFilter.iTOSorTrafficClass = 0x3F8C; + aFilter.iFlowLabel = 0; + aFilter.iIPSecSPI = 0; + break; + } + } + } + + +TBool CCTSYIntegrationTestPacketContextBase::CompareFilters(const RPacketContext::TPacketFilterV2 &aFilterOne, + const RPacketContext::TPacketFilterV2 &aFilterTwo) +/** + * Compare two packet filter objects. + * + * @param aFilterOne Reference to the structure with the first filter. + * @param aFilterOne Reference to the structure with the second filter. + * + * @return ETrue if both filters are the same + * + */ + { + TBool ret = ETrue; + + LOCAL_ASSERT_EQUALS(aFilterOne.ExtensionId(), aFilterTwo.ExtensionId() ,_L("RPacketContext::GetPacketFilterInfo returned wrong iExtensionId")); + LOCAL_ASSERT_EQUALS(aFilterOne.iId, aFilterTwo.iId ,_L("RPacketContext::GetPacketFilterInfo returned wrong iId")); + LOCAL_ASSERT_EQUALS(aFilterOne.iEvaluationPrecedenceIndex, aFilterTwo.iEvaluationPrecedenceIndex ,_L("RPacketContext::GetPacketFilterInfo returned wrong iEvaluationPrecedenceIndex")); + for(TInt i=0;i +void CCTSYIntegrationTestPacketContextBase::FillParametersFromCapabilities(RPacketQoS::TQoSGPRSRequested &aParameters, + const RPacketQoS::TQoSCapsGPRS &aCapabilities) +/** + * fill a RPacketQoS::TQoSGPRSRequested object from a given RPacketQoS::TQoSCapsGPRS capabilities + * + * @param aParameters Reference to the structure of the parameters to fill. + * @param aCapabilities Reference to the structure with the capabilities to use. + * + */ + { + aParameters.iMinDelay = static_cast(FindMSB(aCapabilities.iDelay)); + aParameters.iReqDelay = static_cast(FindLSB(aCapabilities.iDelay)); + aParameters.iMinMeanThroughput = static_cast(FindMSB(aCapabilities.iMean)); + aParameters.iReqMeanThroughput = static_cast(FindLSB(aCapabilities.iMean)); + aParameters.iMinPeakThroughput = static_cast(FindMSB(aCapabilities.iPeak)); + aParameters.iReqPeakThroughput = static_cast(FindLSB(aCapabilities.iPeak)); + aParameters.iMinReliability = static_cast(FindMSB(aCapabilities.iReliability)); + aParameters.iReqReliability = static_cast(FindLSB(aCapabilities.iReliability)); + aParameters.iReqPrecedence = static_cast(FindMSB(aCapabilities.iPrecedence)); + aParameters.iMinPrecedence = static_cast(FindLSB(aCapabilities.iPrecedence)); + + } + + +template<> +void CCTSYIntegrationTestPacketContextBase::FillParametersFromCapabilities(RPacketQoS::TQoSR99_R4Requested &aParameters, + const RPacketQoS::TQoSCapsR99_R4 &aCapabilities) +/** + * fill a RPacketQoS::TQoSR99_R4Requested object from a given RPacketQoS::TQoSCapsR99_R4 capabilities + * + * @param aParameters Reference to the structure of the parameters to fill. + * @param aCapabilities Reference to the structure with the capabilities to use. + * + */ + { + aParameters.iReqTrafficClass = static_cast(FindLSB(aCapabilities.iTrafficClass)); + aParameters.iMinTrafficClass = static_cast(FindMSB(aCapabilities.iTrafficClass)); + aParameters.iReqDeliveryOrderReqd = static_cast(FindLSB(aCapabilities.iDeliveryOrderReqd)); + aParameters.iMinDeliveryOrderReqd = static_cast(FindMSB(aCapabilities.iDeliveryOrderReqd)); + aParameters.iReqDeliverErroneousSDU = static_cast(FindLSB(aCapabilities.iDeliverErroneousSDU)); + aParameters.iMinDeliverErroneousSDU = static_cast(FindMSB(aCapabilities.iDeliverErroneousSDU)); + aParameters.iReqMaxSDUSize = 1500; //NOT SURE + aParameters.iMinAcceptableMaxSDUSize = 100; //NOT SURE + aParameters.iReqMaxRate.iUplinkRate = 1000; //NOT SURE + aParameters.iReqMaxRate.iDownlinkRate = 1000; //NOT SURE + aParameters.iMinAcceptableMaxRate.iUplinkRate = 500; //NOT SURE + aParameters.iMinAcceptableMaxRate.iDownlinkRate = 500; //NOT SURE + aParameters.iReqBER = static_cast(FindLSB(aCapabilities.iBER)); + aParameters.iMaxBER = static_cast(FindMSB(aCapabilities.iBER)); + aParameters.iReqSDUErrorRatio = static_cast(FindLSB(aCapabilities.iSDUErrorRatio)); + aParameters.iMaxSDUErrorRatio = static_cast(FindMSB(aCapabilities.iSDUErrorRatio)); + aParameters.iReqTrafficHandlingPriority = static_cast(FindLSB(aCapabilities.iTrafficHandlingPriority)); + aParameters.iMinTrafficHandlingPriority = static_cast(FindMSB(aCapabilities.iTrafficHandlingPriority)); + aParameters.iReqTransferDelay = 1000; //NOT SURE + aParameters.iMaxTransferDelay = 100; //NOT SURE + aParameters.iReqGuaranteedRate.iUplinkRate = 1000; //NOT SURE + aParameters.iReqGuaranteedRate.iDownlinkRate = 1000; //NOT SURE + aParameters.iMinGuaranteedRate.iUplinkRate = 500; //NOT SURE + aParameters.iMinGuaranteedRate.iDownlinkRate = 500; //NOT SURE + } + +template<> +void CCTSYIntegrationTestPacketContextBase::FillParametersFromCapabilities(RPacketQoS::TQoSR5Requested &aParameters, + const RPacketQoS::TQoSCapsR5 &aCapabilities) +/** + * fill a RPacketQoS::TQoSR5Requested object from a given RPacketQoS::TQoSCapsR5 capabilities + * + * @param aParameters Reference to the structure of the parameters to fill. + * @param aCapabilities Reference to the structure with the capabilities to use. + * + */ + { + FillParametersFromCapabilities((RPacketQoS::TQoSR99_R4Requested&)aParameters,(const RPacketQoS::TQoSCapsR99_R4 &)aCapabilities); + aParameters.iSignallingIndication = static_cast(aCapabilities.iSignallingIndication); + aParameters.iSourceStatisticsDescriptor = static_cast(aCapabilities.iSourceStatisticsDescriptor); + } + + +template +void CCTSYIntegrationTestPacketContextBase::GetProfileCapsL(RPacketQoS& aContextQoS, QOSCAPS& aCapabilities) +/** + * Get QoS profile capabilities + * + * @param aContextQoS Reference RPacketQoS object. + * @param aCapabilities Reference to QoS capabilities. + * + */ + { + TPckg qosCapsPckg(aCapabilities); + TExtEtelRequestStatus reqQoSProfileCaps(aContextQoS,EPacketQoSGetProfileCaps); + CleanupStack::PushL(reqQoSProfileCaps); + aContextQoS.GetProfileCapabilities(reqQoSProfileCaps, qosCapsPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqQoSProfileCaps, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(reqQoSProfileCaps.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + CleanupStack::PopAndDestroy(1, &reqQoSProfileCaps); + } + + +TBool CCTSYIntegrationTestPacketContextBase::ActivateSecondaryPacketContextL(RPacketContext& aSecondaryPacketContext, TPrimaryPacketContextId aPrimaryPacketContextId, TSecondaryPacketContextId aSecondaryPacketContextId) +/** + * Activate a secondary packet context + * + * @param aSecondaryPacketContext a reference to a context session to activate. + * + * @return ETrue if everything is OK, EFalse in any other case + */ + { + TBool ret = ETrue; + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aSecondaryPacketContext,1), KErrNone, + _L("RPacketContext::AddPacketFilter returned with error status")); + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + aPrimaryPacketContextId, + aSecondaryPacketContextId); + + // Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::GetProfileCapabilities timed out.")); + LOCAL_ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, + _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::SetProfileParameters timed out.")); + LOCAL_ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, + _L("RPacketQoS::SetProfileParameters returned with error status.")); + + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(aSecondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + aSecondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(aSecondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + aSecondaryPacketContext.Activate(contextActivateStatus); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Activate timed out.")); + LOCAL_ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + aSecondaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(aSecondaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("Packet Context's status expected to be EStatusActive but is not.")); + + // Pop: + // contextActivateStatus + // notifyContextStChStatus + // setProfileParamStatus + // getProfileCapStatus + CleanupStack::PopAndDestroy(4,&getProfileCapStatus); + return ret; + + } + +CCTSYIntegrationTestPacketContext0001::CCTSYIntegrationTestPacketContext0001(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0001::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0001::~CCTSYIntegrationTestPacketContext0001() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0001::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0001 + * @SYMFssID BA/CTSY/PKTC-0001 + * @SYMTestCaseDesc Activate and deactivate a primary PDP context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyContextAdded, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps, RPacketContext::GetConfig, RPacketContext::Deactivate, RPacketContext::GetDnsInfo + * @SYMTestExpectedResults Pass - Activation and deactivation succeeds. Packet service and context statuses are correct. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify packet service status, packet context statuses, dynamic caps. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Get the attach mode so that it can be restored at the end of the test + RPacketService::TAttachMode attachMode; + CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error.")); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), + KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), + KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + // Currenlty there are three context configs types: TContextConfigGPRS, TContextConfigCDMA, TContextConfigR99_R4 + // A suitable config should be chosen accoriding to the baseband's capability. + + // Get the context config using network info + // Using Gprs config for now... + RPacketContext::TContextConfigGPRS config; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TPckg configPk(config); + + // Set the context. + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + packetContext.SetConfig(setConfigStatus, configPk); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, + _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, + _L("RPacketContext::SetConfig returned with error status.")); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, + _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, + _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, + _L("Packet context config has zero length contextId.")); + + // === Activate packet context === + // === Check context and service statuses and notifications === + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for service's dynamic caps change + RPacketService::TDynamicCapsFlags dynCaps; + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate packet context with RPacketContext::Activate + DEBUG_PRINTF1(_L("Activating packet context")); + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext.Activate(contextActivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not.")); + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Check dynamic caps === + DEBUG_PRINTF1(_L("Checking Dynamic Caps")); + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer; + TInt unWantedDynCapBits = RPacketService::KCapsManualAttach; + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 10060 ); + iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( + packetService, + notifyServiceDynCapsStatus, + dynCaps, + wantedDynCapBits, + unWantedDynCapBits, + KErrNone); + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set")); + + // === Get context information === + + // Check RPacketContext::GetConfig returns same config as that set + DEBUG_PRINTF1(_L("Get config information")); + TExtEtelRequestStatus contextConfigStatus(packetContext, EPacketContextGetConfig); + CleanupStack::PushL(contextConfigStatus); + RPacketContext::TContextConfigGPRS getConfig; + TPckg getConfigPk(getConfig); + packetContext.GetConfig(contextConfigStatus, getConfigPk); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, + _L("RPacketContext::GetConfig timed out.")) + ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, + _L("RPacketContext::GetConfig returned an error.")); + + ASSERT_EQUALS_DES8(getConfig.iAccessPointName, config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data.")); + + // Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses + RPacketContext::TDnsInfoV2 dnsInfo; + RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo); + TExtEtelRequestStatus dnsInfoStatus(packetContext, EPacketContextGetDNSInfo); + CleanupStack::PushL(dnsInfoStatus); + packetContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, + _L("RPacketContext::GetDnsInfo timed out.")); + + ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetDnsInfo returned an error.")); + ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, + _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns.")); + ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, + _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns.")); + + // === Check context and service statuses on Deactivating packect context === + + // Post notification for context's status change + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for service's status change + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Deactivate the context with RPacketContext::Deactivate + TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + packetContext.Deactivate(contextDeactivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("Packet Context's status expected to be EStatusDeactivating but is not.")); + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("Packet Context's status did not return EStatusInactive.")); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + expectedPacketServiceStatus = RPacketService::EStatusAttached; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusAttached + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Return packet service's attach mode to original setting + ASSERT_EQUALS(packetService.SetAttachMode(attachMode), KErrNone, _L("RPacketService::SetAttachMode returned with an error.")); + + CleanupStack::Pop(10, &getNetworkStatus); + // contextDeactivateStatus + // dnsInfoStatus + // contextConfigStatus + // contextActivateStatus, + // notifyContextStChStatus, + // notifyServiceDynCapsStatus + // notifyServiceStChStatus, + // setConfigStatus, + // notifyContextStatus, + // getNetworkStatus + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0001::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0001"); + } + + + +CCTSYIntegrationTestPacketContext0002::CCTSYIntegrationTestPacketContext0002(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0002::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0002::~CCTSYIntegrationTestPacketContext0002() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0002::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0002 + * @SYMFssID BA/CTSY/PKTC-0002 + * @SYMTestCaseDesc Activate and deactivate a primary PDP context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::GetContextNameInNif, RPacketService::GetNifInfo, RPacketService::EnumerateContextsInNif, RPacketContext::Deactivate + * @SYMTestExpectedResults Pass - Activation succeeds. NIF info correct. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify NIF related info from RPacketService correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer,KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Get the attach mode so that it can be restored at the end of the test + RPacketService::TAttachMode attachMode; + CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error.")); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsActivate. + + // $CTSYProblem. + // GetDynamicCaps does not return 0x1(KCapsActivate), because KCapsActivate flag is not set yet. + // CTSY sets KCapsActivate flag during context initialisation. + + // Check for the CAPS being returned + RPacketService::TDynamicCapsFlags dynCaps; + CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + + // RPacketService::TDynamicCapsFlags wantedDynCapBits = RPacketService::KCapsActivate; + //CHECK_BITS_SET_L(dynCaps, wantedDynCapBits, KNoUnwantedBits, _L("Packet service's KCapsActivate flag not set")); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + // Get the context config using network info + RPacketContext::TContextConfigGPRS config; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TPckg configPk(config); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Open a new primary context. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Set a valid context config with RPacketContext::SetConfig + TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + packetContext.SetConfig(setConfigStatus, configPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status.")); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, _L("Packet context config has zero length contextId.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + expectedPacketContextStatus = RPacketContext::EStatusActive; + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Check that there is one NIF with one primary context belonging to it === + + // Get context info + TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo); + CleanupStack::PushL(getContextInfo); + RPacketService::TContextInfo contextInfo; + const TInt index = 0; + packetService.GetContextInfo(getContextInfo, index, contextInfo); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out")); + ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name")); + + // Check RPacketService::EnumerateNifs returns aCount = 1 + TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(nifsStatus); + TInt nifCount = 0; + const TInt wantedCount = 1; + packetService.EnumerateNifs(nifsStatus, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned with an error.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1 + TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(enumerateContextsInNifStatus); + TInt contextsInNifCount; + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, contextInfo.iName, contextsInNifCount); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out")); + ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif returned wrong number of contexts sharing a NIF")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName + TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(contextNameNifsStatus); + TInt iIndex = 0; + TName contextName; + packetService.GetContextNameInNif(contextNameNifsStatus, contextInfo.iName, iIndex, contextName ); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextInfo.iName, contextName, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + ASSERT_EQUALS(iIndex, KErrNone, _L("RPacketContext::GetContextNameInNif with aIndex returned with an error")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1 + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + // Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext + + TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(nifInfoStatus); + const TInt nifInfoCount = 0; + RPacketService::TNifInfoV2 nifInfoV2; + RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2); + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error")); + ASSERT_EQUALS_DES16(nifInfoV2.iContextName, contextName, _L("RPacketService::GetNifInfo with valid name returned with an error")); + ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 1, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error")); + ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketSerivce::GetNifInfo with iNifStatus returned with an error")); + ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address")); + + // $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext + // Changed test procedure to check for EInternalContext instead of EExternalContext + ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type")); + + // Post notification for context's status change + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Deactivate the context with RPacketContext::Deactivate + TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + packetContext.Deactivate(contextDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("RPacketContext::GetStatus returns incorrect status.")); + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::EnumerateNifs returns aCount = 0 + TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(enumerateNifsStatus); + nifCount = 0; + const TInt wantedEnumerateNifsCount = 1; + packetService.EnumerateNifs(enumerateNifsStatus, nifCount); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out")); + ASSERT_EQUALS(nifCount, wantedEnumerateNifsCount, _L("RPacketService::EnumerateNifs returned wrong NIF count.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // pop + // getNetworkStatus + // setConfigStatus + // notifyContextStatus + // contextActivateStatus + // notifyContextStatus + // notifyContextStChStatus + // nifsStatus + // ContextNifsStatus + // ContextNameNifsStatus + // nifInfoStatus + // contextDeactivateStatus + // enumerateNifsStatus + CleanupStack::PopAndDestroy(12, &getNetworkStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0002::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0002"); + } + + + +CCTSYIntegrationTestPacketContext0003::CCTSYIntegrationTestPacketContext0003(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0003::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0003::~CCTSYIntegrationTestPacketContext0003() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0003::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0003 + * @SYMFssID BA/CTSY/PKTC-0003 + * @SYMTestCaseDesc Activate and deactivate a primary context (roaming). + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyContextAdded, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps, RPacketContext::GetConfig, RPacketContext::Deactivate, RPacketContext::GetDnsInfo + * @SYMTestExpectedResults Pass - Primary context is activated then deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/manual + * + * Reason for test: Verify packet service status, packet context statuses, dynamic caps. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Get the registration status and ensure that the phone is camped on a valid cell. + + // Ensure phone is attached to packet service. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Check RPacketService::GetNtwkRegStatus returns ERegisteredRoaming + + // Set a valid context config with RPacketContext::SetConfig + + // Check RPacketService::NotifyContextAdded completes with a valid context name + + // Activate packet context with RPacketContext::Activate + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + + // === Get context information === + + // Check RPacketContext::GetConfig returns same config as that set + + // Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses + + // Deactivate the context with RPacketContext::Deactivate + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + + // Check RPacketContext::GetStatus returns EStatusInactive + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + + // Check RPacketService::GetStatus returns EStatusAttached + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0003::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0003"); + } + + + +CCTSYIntegrationTestPacketContext0004::CCTSYIntegrationTestPacketContext0004(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0004::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0004::~CCTSYIntegrationTestPacketContext0004() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0004::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0004 + * @SYMFssID BA/CTSY/PKTC-0004 + * @SYMTestCaseDesc Activate and deactivate a primary context (roaming). + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::GetContextNameInNif, RPacketService::GetNifInfo, RPacketService::EnumerateContextsInNif, RPacketContext::Deactivate, RPacketService::EnumerateContextsInNif, RPacketContext::Deactivate + * @SYMTestExpectedResults Pass - Context activated and deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/manual + * + * Reason for test: Verify NIF related info from RPacketService correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Check RPacketService::GetNtwkRegStatus returns ERegisteredRoaming + + // Set a valid context config with RPacketContext::SetConfig + + // Check RPacketService::NotifyContextAdded completes with a valid context name + + // Activate packet context with RPacketContext::Activate + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // === Check that there is one NIF with one primary context belonging to it === + + // Check RPacketService::EnumerateNifs returns aCount = 1 + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1 + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1 + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + // Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext + + // Deactivate the context with RPacketContext::Deactivate + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + + // Check RPacketContext::GetStatus returns EStatusInactive + + // Check RPacketService::EnumerateNifs returns aCount = 0 + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0004::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0004"); + } + + + +CCTSYIntegrationTestPacketContext0005::CCTSYIntegrationTestPacketContext0005(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0005::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0005::~CCTSYIntegrationTestPacketContext0005() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0005::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0005 + * @SYMFssID BA/CTSY/PKTC-0005 + * @SYMTestCaseDesc Activate and deactivate an HSDPA context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketContext::SetConfig, RPacketContext::GetDnsInfo + * @SYMTestExpectedResults Pass - Context activated and deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/manual + * + * Reason for test: Verify packet service status, packet context statuses, dynamic caps has KCapsHSDPA and static caps are correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + //Check if we are on a simulated network + + ERR_PRINTF2(_L("$CTSYProblem: defect id = %d"), 10083); + User::Leave(KErrNone); + + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure RPacketService::GetStaticCaps returns caps in set of KCapsHSDPASupported + TUint staticCaps = 0; + TUint expectedCaps = RPacketService::KCapsHSDPASupported; + CHECK_EQUALS_L(packetService.GetStaticCaps(staticCaps, RPacketContext::EPdpTypeIPv4), KErrNone, _L("RPacketService::GetStaticCaps returned an error")); + CHECK_BITS_SET_L(staticCaps, expectedCaps, KNoUnwantedBits, _L("RPacketService::GetStaticCaps did not return correct static caps")); + + // Ensure phone is attached to the packet service in an HSDPA enabled cell. + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Open a primary context. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, _L("Packet context config has zero length contextId.")); + + // Set a valid context config with RPacketContext::SetConfig + //Get network info from phone + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + TExtEtelRequestStatus getNetworkStatus (phone,EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium), KErrNone, _L("MobilePhone::GetCurrentNetwork timed out")) + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("MobilePhone::GetCurrentNetwork returned an error")) + + // Get the context config using network info + RPacketContext::TContextConfigGPRS config; + TPtrC apn,user,pwd; + iPacketServiceTestHelper.GetGprsSettings(info,apn,user,pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TPckg configPk(config); + + // set the context using network info + TExtEtelRequestStatus setConfigStatus (packetContext,EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + packetContext.SetConfig(setConfigStatus,configPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("PacketContext::SetConfig timed out")) + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("PacketContext::SetConfig returned an error.")) + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for service's dynamic caps change + RPacketService::TDynamicCapsFlags dynCaps; + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer | RPacketService::KCapsHSDPA; + TInt unWantedDynCapBits = RPacketService::KCapsManualAttach; + iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( + packetService, + notifyServiceDynCapsStatus, + dynCaps, + wantedDynCapBits, + unWantedDynCapBits, + KErrNone); + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps did not return correct dynamic caps")); + + // === Get context information === + + // Check RPacketContext::GetConfig returns same config as that set + TExtEtelRequestStatus contextConfigStatus(packetContext, EPacketContextGetConfig); + CleanupStack::PushL(contextConfigStatus); + RPacketContext::TContextConfigGPRS getConfig; + TPckg getConfigPk(getConfig); + packetContext.GetConfig(contextConfigStatus, getConfigPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out.")) + ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error.")); + ASSERT_EQUALS_DES8(getConfig.iAccessPointName, config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data.")); + + // Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses + RPacketContext::TDnsInfoV2 dnsInfo; + RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo); + TExtEtelRequestStatus dnsInfoStatus(packetContext, EPacketContextGetDNSInfo); + CleanupStack::PushL(dnsInfoStatus); + packetContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out.")); + ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error.")); + ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns.")); + ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns.")); + + // Post notification for context's status change + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for service's status change + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Deactivate the context with RPacketContext::Deactivate + TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + packetContext.Deactivate(contextDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + expectedPacketServiceStatus = RPacketService::EStatusAttached; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusAttached + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // pop + // getNetworkStatus + // setConfigStatus + // notifyContextStatus + // notifyServiceStChStatus + // notifyContextStChStatus + // notifyServiceDynCapsStatus + // contextActivateStatus + // contextConfigStatus + // dnsInfoStatus + // contextDeactivateStatus + + CleanupStack::PopAndDestroy(10, &getNetworkStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0005::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0005"); + } + + + +CCTSYIntegrationTestPacketContext0006::CCTSYIntegrationTestPacketContext0006(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0006::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0006::~CCTSYIntegrationTestPacketContext0006() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0006::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0006 + * @SYMFssID BA/CTSY/PKTC-0006 + * @SYMTestCaseDesc Activate and deactivate an EGPRS context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketContext::SetConfig, RPacketContext::GetDnsInfo + * @SYMTestExpectedResults Pass - Context activated and deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/manual + * + * Reason for test: Verify packet service status, packet context statuses, dynamic caps. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + ERR_PRINTF2(_L("$CTSYProblem: defect id = %d"), 10084); + User::Leave(KErrNone); + + + //Check if we are on a simulated network to run emergency call tests + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Ensure RPacketService::GetStaticCaps returns caps in set of KCapsEGPRSSupported + TUint staticCaps = 0; + TUint expectedCaps = RPacketService::KCapsEGPRSSupported; + CHECK_EQUALS_L(packetService.GetStaticCaps(staticCaps, RPacketContext::EPdpTypeIPv4), KErrNone, _L("RPacketService::GetStaticCaps returned an error")); + CHECK_BITS_SET_L(staticCaps, expectedCaps, KNoUnwantedBits, _L("RPacketService::GetStaticCaps did not return correct static caps")); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Open a primary context. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, _L("RPacketService::NotifyContextAdded returned zero length contextId.")); + + // Set a valid context config with iUseEdge = ETrue using RPacketContext::SetConfig + //Get network info from phone + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + TExtEtelRequestStatus getNetworkStatus (phone,EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium), KErrNone, _L("MobilePhone::GetCurrentNetwork timed out")) + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("MobilePhone::GetCurrentNetwork returned an error")) + + // Get the context config using network info + RPacketContext::TContextConfigGPRS config; + TPtrC apn,user,pwd; + iPacketServiceTestHelper.GetGprsSettings(info,apn,user,pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TBool edge = ETrue; + config.iUseEdge = edge; + TPckg configPk(config); + + // set the context using network info + TExtEtelRequestStatus setConfigStatus (packetContext,EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + packetContext.SetConfig(setConfigStatus,configPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("PacketContext::SetConfig timed out")) + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("PacketContext::SetConfig returned an error.")) + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for service's dynamic caps change + RPacketService::TDynamicCapsFlags dynCaps; + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsEGPRS. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer | RPacketService::KCapsEGPRS; + TInt unWantedDynCapBits = RPacketService::KCapsManualAttach; + iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( + packetService, + notifyServiceDynCapsStatus, + dynCaps, + wantedDynCapBits, + unWantedDynCapBits, + KErrNone); + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsEGPRS + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set")); + + // === Get context information === + + // Get context info + TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo); + CleanupStack::PushL(getContextInfo); + RPacketService::TContextInfo contextInfo; + const TInt index = 0; + packetService.GetContextInfo(getContextInfo, index, contextInfo); + + // Check RPacketContext::GetConfig returns same config as that set + TExtEtelRequestStatus contextConfigStatus(packetContext, EPacketContextGetConfig); + CleanupStack::PushL(contextConfigStatus); + RPacketContext::TContextConfigGPRS getConfig; + TPckg getConfigPk(getConfig); + packetContext.GetConfig(contextConfigStatus, getConfigPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out.")) + ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error.")); + ASSERT_EQUALS_DES8(getConfig.iAccessPointName, config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS(getConfig.iUseEdge, config.iUseEdge, _L("RPacketContext::GetConfig returns incorrect config data.")); + + // Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses + RPacketContext::TDnsInfoV2 dnsInfo; + RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo); + TExtEtelRequestStatus dnsInfoStatus(packetContext, EPacketContextGetDNSInfo); + CleanupStack::PushL(dnsInfoStatus); + packetContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out.")); + ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error.")); + ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns.")); + ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns.")); + + // === Check that there is one NIF with one primary context belonging to it === + + // Check RPacketService::EnumerateNifs returns aCount = 1 + TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(nifsStatus); + TInt countValue = 0; + packetService.EnumerateNifs(nifsStatus, countValue); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(countValue, 1, _L("RPacketContext::EnumerateNifs returned wrong aValue")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1 + TExtEtelRequestStatus contextNifsStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(contextNifsStatus); + countValue = 0; + packetService.EnumerateContextsInNif(contextNifsStatus, contextInfo.iName, countValue); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(countValue, 1, _L("RPacketService::EnumerateContextsInNif returned with an error.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName + TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(contextNameNifsStatus); + TInt ind = 0; + TName contextName; + packetService.GetContextNameInNif(contextNameNifsStatus, contextInfo.iName, ind, contextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned an error.")); + ASSERT_EQUALS_DES16(contextName, contextInfo.iName, _L("RPacketService::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1 + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + // Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext + TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(nifInfoStatus); + RPacketService::TNifInfoV2 nifInfoV2; + RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2); + packetService.GetNifInfo(nifInfoStatus, countValue, nifInfoV2Pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned an error.")); + ASSERT_EQUALS_DES16(nifInfoV2.iContextName, contextName, _L("RPacketService::GetNifInfo with valid name returned with an error")); + ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 1, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error")); + ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo with iNifStatus returned with an error")); + ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo with iPdpAddress returned with an error")); + ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo with iContextType returned with an error")); + + // Post notification for context's status change + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for service's status change + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Deactivate the context with RPacketContext::Deactivate + TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + packetContext.Deactivate(contextDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + expectedPacketServiceStatus = RPacketService::EStatusAttached; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusAttached + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // pop + // notifyContextStatus + // getNetworkStatus + // setConfigStatus + // notifyServiceStChStatus + // notifyContextStChStatus + // notifyServiceDynCapsStatus + // contextActivateStatus + // getContextInfo + // contextConfigStatus + // dnsInfoStatus + // NifsStatus + // contextNifsStatus + // contextNameNifsStatus + // NifInfoStatus + // contextDeactivateStatus + CleanupStack::PopAndDestroy(15, ¬ifyContextStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0006::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0006"); + } + + + +CCTSYIntegrationTestPacketContext0007::CCTSYIntegrationTestPacketContext0007(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0007::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0007::~CCTSYIntegrationTestPacketContext0007() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0007::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0007 + * @SYMFssID BA/CTSY/PKTC-0007 + * @SYMTestCaseDesc Activate and deactivate a secondary context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::NotifyDynamicCapsChange, RPacketService::GetStatus, RPacketContext::SetConfig, RPacketContext::GetDnsInfo, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify packet service status, packet context statuses, dynamic caps + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + // wait until we are on the network + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + //Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure phone is attached to the packet service. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Post notification for the ContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Open a primary context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Open a new secondary context from primary context + RPacketContext& secondaryPacketContext2 = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext2,1), KErrNone, + _L("RPacketContext::AddPacketFilter returned with error status")); + + // === Add QoS === + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + // Note: Using GPRS params + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::GetProfileCapabilities timed out.")) + ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, + _L("RPacketQoS::GetProfileCapabilities returned with error status.")) + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::SetProfileParameters timed out.")) + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, + _L("RPacketQoS::SetProfileParameters returned with error status.")) + + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeShort), KErrNone, + _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, + _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, + _L("RPacketService::NotifyContextAdded Packet context config has zero length contextId.")); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Activate primary context with RPacketContext::Activate + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus did not return RPacketService::EStatusActive.")); + + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + RPacketContext::TContextStatus packetContextStatus; + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext2, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Post notification for for service's dynamic caps change + RPacketService::TDynamicCapsFlags dynCaps; + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Activate the secondary context. + TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext2, EPacketContextActivate); + CleanupStack::PushL(secContextActivateStatus); + secondaryPacketContext2.Activate(secContextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedSecPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecPacketContextStatus, + KErrNone); + secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // -> EStatusActive + expectedSecPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(secondaryPacketContext2.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive.")); + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + + // $CTSYProblem. + // GetDynamicCaps does not change since the LTSY dose not call the EPacketNotifyDynamicCapsChange when the context is activated + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + + // $CTSYProblem. + // GetDynamicCaps dose not change since the LTSY dose not call the EPacketNotifyDynamicCapsChange when the context is activated + + // === Get context information === + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + // Check RPacketContext::GetConfig for primary context returns same config as that set + TExtEtelRequestStatus contextConfigStatus(primaryPacketContext , EPacketContextGetConfig); + CleanupStack::PushL(contextConfigStatus); + RPacketContext::TContextConfigGPRS getConfig; + TPckg getConfigPk(getConfig); + primaryPacketContext.GetConfig(contextConfigStatus, getConfigPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, + _L("RPacketContext::GetConfig timed out.")) + ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, + _L("RPacketContext::GetConfig returned an error.")); + RPacketContext::TContextConfigGPRS config; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + ASSERT_EQUALS_DES8(getConfig.iAccessPointName, + config.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, + config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, + config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data.")); + + // Check RPacketContext::GetDnsInfo for primary context returns valid primary and secondary DNS ip addresses + RPacketContext::TDnsInfoV2 dnsInfoPrimary; + RPacketContext::TTDnsInfoV2Pckg dnsInfoPrimaryPkg(dnsInfoPrimary); + TExtEtelRequestStatus dnsInfoStatus(primaryPacketContext, EPacketContextGetDNSInfo); + CleanupStack::PushL(dnsInfoStatus); + primaryPacketContext.GetDnsInfo(dnsInfoStatus, dnsInfoPrimaryPkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out.")); + ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error.")); + ASSERT_TRUE(dnsInfoPrimary.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns.")); + ASSERT_TRUE(dnsInfoPrimary.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns.")); + + // Check RPacketContext::GetDnsInfo for secondary context returns same primary and secondary DNS ip addresses as for the primary context + RPacketContext::TDnsInfoV2 dnsInfoSecondary; + RPacketContext::TTDnsInfoV2Pckg dnsInfoSecondaryPkg(dnsInfoSecondary); + TExtEtelRequestStatus dnsInfoStatus2(secondaryPacketContext2, EPacketContextGetDNSInfo); + CleanupStack::PushL(dnsInfoStatus2); + secondaryPacketContext2.GetDnsInfo(dnsInfoStatus2, dnsInfoSecondaryPkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus2, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out.")); + ASSERT_EQUALS(dnsInfoStatus2.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error.")); + ASSERT_TRUE(dnsInfoSecondary.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns.")); + ASSERT_TRUE(dnsInfoSecondary.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns.")); + + // Compare ip addresses + ASSERT_EQUALS_DES8(dnsInfoPrimary.iPrimaryDns, dnsInfoSecondary.iPrimaryDns, + _L("RPacketContext::GetDnsInfo IP addresses mismatch for Primary and Secondary contexts.")); + ASSERT_EQUALS_DES8(dnsInfoPrimary.iSecondaryDns, dnsInfoSecondary.iSecondaryDns, + _L("RPacketContext::GetDnsInfo IP addresses mismatch for Primary and Secondary contexts.")); + + // Post notification for context's status change + secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Deactivate the secondary context with RPacketContext::Deactivate + TExtEtelRequestStatus secCntxtDeactivateStatus(secondaryPacketContext2, EPacketContextDeactivate); + CleanupStack::PushL(secCntxtDeactivateStatus); + secondaryPacketContext2.Deactivate(secCntxtDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(secCntxtDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(secCntxtDeactivateStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusDeactivating -> EStatusInactive + expectedSecPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecPacketContextStatus, + KErrNone); + secondaryPacketContext2.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContext2Status = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifySecContextStChStatus, + secPacketContextStatus, + expectedPacketContext2Status, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusInactive + ASSERT_EQUALS(secondaryPacketContext2.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusInactive.")); + + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop: + // secCntxtDeactivateStatus + // dnsInfoStatus2 + // dnsInfoStatus + // contextConfigStatus + // getNetworkStatus + // secContextActivateStatus + // notifyServiceDynCapsStatus + // notifySecContextStChStatus + // notifyServiceStChStatus + // setProfileParamStatus + // getProfileCapStatus + // notifyContextStatus + CleanupStack::PopAndDestroy(12,¬ifyContextStatus); + + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0007::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0007"); + } + + + +CCTSYIntegrationTestPacketContext0008::CCTSYIntegrationTestPacketContext0008(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0008::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0008::~CCTSYIntegrationTestPacketContext0008() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0008::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0008 + * @SYMFssID BA/CTSY/PKTC-0008 + * @SYMTestCaseDesc Activate and deactivate a secondary context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::EnumerateContextsInNif, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify NIF info from RPacketService correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + //Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure phone is attached to the packet service. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName primaryContextId; + packetService.NotifyContextAdded(notifyContextStatus, primaryContextId); + + // Open a primary packet context + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + CHECK_TRUE_L(primaryContextId.Length() > 0, _L("RPacketService::NotifyContextAdded returned with zero length context name.")); + + // Post notification for the RPacketService::NotifyContextAdded + TName secondaryContextId; + packetService.NotifyContextAdded(notifyContextStatus, secondaryContextId); + + // Open a secondary packet context + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + CHECK_TRUE_L(secondaryContextId.Length() > 0, _L("RPacketService::NotifyContextAdded returned with zero length context name.")); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + + // === Add QoS === + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getQoSProfileCapsStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getQoSProfileCapsStatus); + RPacketQoS::TQoSCapsGPRS qosCaps; + TPckg qosCapsPckg(qosCaps); + packetQoS.GetProfileCapabilities(getQoSProfileCapsStatus, qosCapsPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getQoSProfileCapsStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")) + ASSERT_EQUALS(getQoSProfileCapsStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned error.")) + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosRequested; + TPckg qosReqPckg(qosRequested); + FillParametersFromCapabilities(qosRequested,qosCaps); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + + packetQoS.SetProfileParameters(setProfileParamStatus, qosReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Get network info from phone + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")) + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")) + + // Get the context config using network info + RPacketContext::TContextConfigGPRS config; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + + // Set a valid context config with RPacketContext::SetConfig + TPckg configPk(config); + TExtEtelRequestStatus setConfigStatus (primaryPacketContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + primaryPacketContext.SetConfig(setConfigStatus,configPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")) + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned an error.")) + + // Set notify for primary context change + TExtEtelRequestStatus reqPriContextChangeStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(reqPriContextChangeStatus); + RPacketContext::TContextStatus primaryPacketContextStatus; + primaryPacketContext.NotifyStatusChange(reqPriContextChangeStatus, primaryPacketContextStatus); + + + // Activate primary context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + reqPriContextChangeStatus, + primaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(reqPriContextChangeStatus, primaryPacketContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + reqPriContextChangeStatus, + primaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + ASSERT_EQUALS(primaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned error.")); + ASSERT_EQUALS(primaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive as expected.")); + + + // Set notify for secondary context change + TExtEtelRequestStatus reqSecContextChangeStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(reqSecContextChangeStatus); + RPacketContext::TContextStatus secondaryPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(reqSecContextChangeStatus, secondaryPacketContextStatus); + + // Activate the secondary context. + TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(secContextActivateStatus); + secondaryPacketContext.Activate(secContextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeMedium), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + reqSecContextChangeStatus, + secondaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + secondaryPacketContext.NotifyStatusChange(reqSecContextChangeStatus, secondaryPacketContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + reqSecContextChangeStatus, + secondaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned error.")); + ASSERT_EQUALS(secondaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive as expected.")); + + // === Check that there is one NIF with one primary and one secondary context belonging to it === + + // Check RPacketService::EnumerateNifs returns aCount = 1 + TExtEtelRequestStatus reqNifStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(reqNifStatus); + TInt nifCount = 0; + packetService.EnumerateNifs(reqNifStatus, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(nifCount, 1, _L("RPacketService::EnumerateNifs did not return 1 as expected")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2 + TExtEtelRequestStatus reqContextNifStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(reqContextNifStatus); + packetService.EnumerateContextsInNif(reqContextNifStatus, primaryContextId, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqContextNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(nifCount, 2, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing secondary context name returns aCount = 2 + nifCount = 0; + packetService.EnumerateContextsInNif(reqContextNifStatus, secondaryContextId, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqContextNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(nifCount, 2, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns valid context name in aContextName + TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(contextNameNifsStatus); + TInt index = 0; + TName returnedContextName; + packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned error")); + ASSERT_TRUE(returnedContextName.Length() > 0, _L("RPacketService::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns valid context name in aContextName + index = 1; + packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned error")); + ASSERT_TRUE(returnedContextName.Length() > 0, _L("RPacketService::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 2 returns an error != KErrNone + index = 2; + packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_TRUE(contextNameNifsStatus.Int() != KErrNone, _L("RPacketService::GetContextNameInNif did not return an error as expected")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + TExtEtelRequestStatus reqNifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(reqNifInfoStatus); + RPacketService::TNifInfoV2 nifInfoV2; + RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2); + index = 0; + packetService.GetNifInfo(reqNifInfoStatus, index, nifInfoV2Pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqNifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo timed out")); + ASSERT_EQUALS(reqNifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned an error")); + ASSERT_TRUE(nifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with aCount = 0 returned with invalid iContextName")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2 + ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo with iNumberOfContexts did not return 2 as expected")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo did not return EStatusActive as expected")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo with iPdpAddress returned with an error")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext + ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo did not return EInternalContext as expected")); + + // Deactivate the secondary context with RPacketContext::Deactivate + TExtEtelRequestStatus secContextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(secContextDeactivateStatus); + secondaryPacketContext.Deactivate(secContextDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextDeactivateStatus, ETimeMedium), KErrNone, _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(secContextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned error.")); + + //Release QoS + iEtelSessionMgr.ReleaseSecondaryPacketContextQoS(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Release packet contexts + iEtelSessionMgr.ReleaseSecondaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // notifyContextStatus + // getQoSProfileCapsStatus + // setProfileParamStatus + // getNetworkStatus + // setConfigStatus + // reqPriContextChangeStatus + // contextActivateStatus + // reqSecContextChangeStatus + // secContextActivateStatus + // reqNifStatus + // reqContextNifStatus + // contextNameNifsStatus + // reqNifInfoStatus + // secContextDeactivateStatus + CleanupStack::PopAndDestroy(14, ¬ifyContextStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0008::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0008"); + } + + + +CCTSYIntegrationTestPacketContext0009::CCTSYIntegrationTestPacketContext0009(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0009::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0009::~CCTSYIntegrationTestPacketContext0009() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0009::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0009 + * @SYMFssID BA/CTSY/PKTC-0009 + * @SYMTestCaseDesc Activate and deactivate a secondary context (roaming). + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::NotifyDynamicCapsChange, RPacketService::GetStatus, RPacketContext::SetConfig, RPacketContext::GetDnsInfo, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/manual + * + * Reason for test: Verify packet service status, packet context statuses, dynamic caps. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to packet service. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + + // === Add QoS === + + // Open a new QoS from the secondary context + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // Set a valid context config with RPacketContext::SetConfig + + // Check RPacketService::NotifyContextAdded completes with a valid context name + + // Activate primary context with RPacketContext::Activate + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + // Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + + // Open a new secondary context from primary context + + // Activate the secondary context. + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer | KCapsHSDPA + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + + // === Get context information === + + // Check RPacketContext::GetConfig for primary context returns same config as that set + + // Check RPacketContext::GetDnsInfo for primary context returns valid primary and secondary DNS ip addresses + // Check RPacketContext::GetDnsInfo for secondary context returns same primary and secondary DNS ip addresses as for the primary context + + // Deactivate the secondary context with RPacketContext::Deactivate + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusDeactivating -> EStatusInactive + + // Check RPacketContext::GetStatus for the secondary context returns EStatusInactive + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + + // Check RPacketService::GetStatus for the secondary context returns EStatusActive + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0009::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0009"); + } + + + +CCTSYIntegrationTestPacketContext0010::CCTSYIntegrationTestPacketContext0010(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0010::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0010::~CCTSYIntegrationTestPacketContext0010() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0010::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0010 + * @SYMFssID BA/CTSY/PKTC-0010 + * @SYMTestCaseDesc Activate and deactivate a secondary context (roaming). + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateNifs, RPacketService::EnumerateContextsInNif, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Secondary context is activated then deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/manual + * + * Reason for test: Verify NIF info from RPacketService correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to the packet service. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + + // === Add QoS === + + // Open a new QoS from the secondary context + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // Set a valid context config with RPacketContext::SetConfig + + // Activate primary context with RPacketContext::Activate + + // Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + + // Open a new secondary context from primary context + + // Activate the secondary context. + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + + // === Check that there is one NIF with one primary and one secondary context belonging to it === + + // Check RPacketService::EnumerateNifs returns aCount = 1 + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2 + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing secondary context name returns aCount = 2 + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns valid context name in aContextName + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns valid context name in aContextName + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 2 returns an error != KErrNone + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2 + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + // Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext + + // Deactivate the secondary context with RPacketContext::Deactivate + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0010::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0010"); + } + + + +CCTSYIntegrationTestPacketContext0011::CCTSYIntegrationTestPacketContext0011(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0011::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0011::~CCTSYIntegrationTestPacketContext0011() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0011::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0011 + * @SYMFssID BA/CTSY/PKTC-0011 + * @SYMTestCaseDesc Activate a context when it is already active. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::Activate, RPacketContext::GetStatus + * @SYMTestExpectedResults Pass - Error returned on activation. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context status. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + // Ensure a primary PDP context is active. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Activate the active context with RPacketContext::Activate. + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + + // Check error is returned. + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_TRUE(contextActivateStatus.Int() != KErrNone, _L("RPacketContext::Activate did not return error as expected.")); + + // Check RPacketContext::GetStatus returns EStatusActive + RPacketContext::TContextStatus primaryPacketContextStatus; + ASSERT_EQUALS(primaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(primaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusActive.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // contextActivateStatus + CleanupStack::PopAndDestroy(1, &contextActivateStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0011::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0011"); + } + + + +CCTSYIntegrationTestPacketContext0012::CCTSYIntegrationTestPacketContext0012(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0012::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0012::~CCTSYIntegrationTestPacketContext0012() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0012::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0012 + * @SYMFssID BA/CTSY/PKTC-0012 + * @SYMTestCaseDesc Re-activate a context after deactivation. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps + * @SYMTestExpectedResults Pass - Context is deactivated and then reactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context and packet service status, dynamic caps. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Get the attach mode so that it can be restored at the end of the test + RPacketService::TAttachMode attachMode; + CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error.")); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Ensure a PDP context is active. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for service's dynamic caps change + RPacketService::TDynamicCapsFlags dynCaps; + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Deactivate the PDP context with RPacketContext::Deactivate + TExtEtelRequestStatus contextDeactivateStatus(packetContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + packetContext.Deactivate(contextDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusAttached; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusAttached + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + // === Check dynamic caps === + + // Check RPacketService::GetDynamicCaps returns caps in set of RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach | RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + TInt wantedDynCapBits = RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsRxCSCall; + TInt unWantedDynCapBits = RPacketService::KCapsManualAttach; + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps did not return correct dynamic caps")); + + // Post notification for service's status change + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Activate a PDP context again. + // Post notification for context's status change + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 50002 ); + // CTSY doesn´t support context re-activation. See cmmpacketcontextgsmwcdmaext.cpp and CMmPacketContextGsmWcdmaExt::ActivateL() + // Test case is made to leave because of this. + CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentionally - ***Send message fail, and ctsy cancel it later****")); + packetContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActive + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("Packet Context's status expected to be EStatusActive but is not.")); + + // Post notification for context's status change + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer; + unWantedDynCapBits = RPacketService::KCapsManualAttach; + iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( + packetService, + notifyServiceDynCapsStatus, + dynCaps, + wantedDynCapBits, + unWantedDynCapBits, + KErrNone); + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Return packet service's attach mode to original setting + packetService.SetAttachMode(attachMode); + + // pop + // notifyContextStChStatus + // notifyServiceStChStatus + // notifyServiceDynCapsStatus + // contextDeactivateStatus + // contextActivateStatus + + CleanupStack::PopAndDestroy(5, ¬ifyContextStChStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0012::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0012"); + } + + + +CCTSYIntegrationTestPacketContext0013::CCTSYIntegrationTestPacketContext0013(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0013::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0013::~CCTSYIntegrationTestPacketContext0013() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0013::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0013 + * @SYMFssID BA/CTSY/PKTC-0013 + * @SYMTestCaseDesc Activate and deactivate two primary contexts. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::GetConfig, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::EnumerateContexts, RPacketService::GetContextInfo, RPacketContext::GetDnsInfo, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateNifs, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketContext::Deactivate + * @SYMTestExpectedResults Pass - Two contexts can be simultaneously active. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify it is possible to have two active primary contexts simultaneously. + +Verify context and packet service status, NIF related info, DNS and context config info. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Attach to the packet service. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L( iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL( phone ), KErrNone, + _L("Network is unavailable") ); + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Activate a primary context. + RPacketContext& packetContext1 = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext1); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Open another primary context (referred to in this test as "primary context 2") + RPacketContext& packetContext2 = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext2); + + // Set a valid context config for primary context 2 using RPacketContext::SetConfig + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeMedium), + KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), + KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + RPacketContext::TContextConfigGPRS contextConfig; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd, 2); + contextConfig.iAccessPointName.Copy(apn); + contextConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + contextConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TPckg contextConfigPckg(contextConfig); + TExtEtelRequestStatus setConfigStatus(packetContext2, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + packetContext2.SetConfig(setConfigStatus, contextConfigPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, + _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, + _L("RPacketContext::SetConfig returned with error status.")); + + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, + _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, + _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, + _L("Packet context config has zero length contextId.")); + + + // Post notification for service's dynamic caps change + RPacketService::TDynamicCapsFlags dynCaps; + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(packetContext2, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + + // Activate primary context 2 with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(packetContext2, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext2.Activate(contextActivateStatus); + CHECK_EQUALS_L(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Activate timed-out")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketContext::NotifyStatusChange for primary context 2 completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext2, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not.")); + packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext2, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for primary context 2 returns EStatusActive + ASSERT_EQUALS(packetContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange for primary context 2 completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer. + // Check RPacketService::NotifyDynamicCapsChange for primary context 2 completes with caps NOT in set of RPacketService::KCapsManualAttach + TInt wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer; + TInt unWantedDynCapBits = RPacketService::KCapsManualAttach; + iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( + packetService, + notifyServiceDynCapsStatus, + dynCaps, + wantedDynCapBits, + unWantedDynCapBits, + KErrNone); + + // Check RPacketService::GetDynamicCaps for primary context 2 returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer + // Check RPacketService::GetDynamicCaps for primary context 2 returns caps NOT in set of RPacketService::KCapsManualAttach + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set")); + + // === Get context information === + + // Check RPacketContext::GetConfig for primary context 2 returns same config as that set + TExtEtelRequestStatus contextConfigStatus(packetContext2, EPacketContextGetConfig); + CleanupStack::PushL(contextConfigStatus); + RPacketContext::TContextConfigGPRS getConfig; + TPckg getConfigPk(getConfig); + packetContext2.GetConfig(contextConfigStatus, getConfigPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, + _L("RPacketContext::GetConfig timed out.")); + ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, + _L("RPacketContext::GetConfig returned an error.")); + ASSERT_EQUALS_DES8(getConfig.iAccessPointName, contextConfig.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, contextConfig.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, contextConfig.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data.")); + + // Check RPacketContext::GetDnsInfo for primary context 2 returns valid primary and secondary DNS ip addresses + RPacketContext::TDnsInfoV2 dnsInfo; + RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo); + TExtEtelRequestStatus dnsInfoStatus(packetContext2, EPacketContextGetDNSInfo); + CleanupStack::PushL(dnsInfoStatus); + packetContext2.GetDnsInfo(dnsInfoStatus, dnsInfoPkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, + _L("RPacketContext::GetDnsInfo timed out.")); + ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetDnsInfo returned an error.")); + ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, + _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns.")); + ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, + _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns.")); + + // === Check that there is one NIF with one primary context belonging to it === + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = name of primary context 2 returns aCount = 1 + TExtEtelRequestStatus enumContextsInfStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(enumContextsInfStatus); + TInt count=-1; + packetService.EnumerateContextsInNif(enumContextsInfStatus,contextId,count); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsInfStatus, ETimeMedium), KErrNone, + _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(enumContextsInfStatus.Int(), KErrNone, + _L("RPacketService::EnumerateContextsInNif failed.")); + ASSERT_EQUALS(count,1,_L("RPacketService::EnumerateContextsInNif did not return correct number of NIFs.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = name of primary context 2 and aIndex = 0 returns context name which is same as the name of primary context 2 + TBuf<200> contextName; + TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(getContextNameInNifStatus); + packetService.GetContextNameInNif(getContextNameInNifStatus,contextId,0,contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, + _L("RPacketService::GetContextNameInNif failed.")); + ASSERT_EQUALS_DES16(contextName,contextId,_L("RPacketService::GetContextNameInNif did not returned the expected value.")); + + // Check RPacketService::EnumerateNifs returns aCount = 2 + TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(enumerateNifsStatus); + count=-1; + packetService.EnumerateNifs(enumerateNifsStatus,count); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeMedium), KErrNone, + _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(enumerateNifsStatus.Int(), KErrNone, + _L("RPacketService::EnumerateNifs failed.")); + ASSERT_EQUALS(count,2,_L("RPacketService::EnumerateNifs did not return correct number of NIFs.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + TExtEtelRequestStatus getNifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(getNifInfoStatus); + RPacketService::TNifInfoV2 nifInfo; + RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo); + packetService.GetNifInfo(getNifInfoStatus,0,nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(getNifInfoStatus.Int(), KErrNone, + _L("RPacketService::GetNifInfo failed.")); + ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo invlaid context name")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1 + ASSERT_EQUALS(nifInfo.iNumberOfContexts,1,_L("RPacketService::GetNifInfo wrong number of contexts")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfo.iNifStatus,RPacketContext::EStatusActive,_L("RPacketService::GetNifInfo wrong status")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfo.iPdpAddress.Length()>0,_L("RPacketService::GetNifInfo invlaid PDP address")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext + ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext,_L("RPacketService::GetNifInfo wrong type")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns valid name in iContextName + packetService.GetNifInfo(getNifInfoStatus,1,nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(getNifInfoStatus.Int(), KErrNone, + _L("RPacketService::GetNifInfo failed.")); + ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo invlaid context name")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns iNumberOfContexts = 1 + ASSERT_EQUALS(nifInfo.iNumberOfContexts,1,_L("RPacketService::GetNifInfo wrong number of contexts")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfo.iNifStatus,RPacketContext::EStatusActive,_L("RPacketService::GetNifInfo wrong status")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfo.iPdpAddress.Length()>0,_L("RPacketService::GetNifInfo invlaid PDP address")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns EExternalContext + ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext,_L("RPacketService::GetNifInfo wrong type")); + + // Post notification for context's status change + packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Deactivate primary context 2 with RPacketContext::Deactivate + TExtEtelRequestStatus contextDeactivateStatus(packetContext2, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + packetContext2.Deactivate(contextDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for primary context 2 completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext2, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("Packet Context's status expected to be EStatusActivating but is not.")); + packetContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext2, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("Packet Context's status expected to be EStatusActivating but is not.")); + + // Check RPacketContext::GetStatus returns for primary context 2 EStatusInactive + ASSERT_EQUALS(packetContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::GetStatus returns EStatusActive + ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketService::GetDynamicCaps returns caps in set of RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq + wantedDynCapBits=RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall; + unWantedDynCapBits=RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq; + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + //ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("Packet service's KCapsActivate flag not set")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop: + // contextDeactivateStatus + // getNifInfoStatus + // enumerateNifsStatus + // getContextNameInNifStatus + // enumContextsInfStatus + // dnsInfoStatus + // contextConfigStatus + // contextActivateStatus + // notifyContextStChStatus + // notifyServiceDynCapsStatus + // notifyServiceStChStatus + // setConfigStatus + // getNetworkStatus + // notifyContextStatus + CleanupStack::PopAndDestroy(14,¬ifyContextStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0013::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0013"); + } + + + +CCTSYIntegrationTestPacketContext0014::CCTSYIntegrationTestPacketContext0014(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0014::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0014::~CCTSYIntegrationTestPacketContext0014() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0014::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0014 + * @SYMFssID BA/CTSY/PKTC-0014 + * @SYMTestCaseDesc Deactivate a primary context when there is a secondary context active. + * @SYMTestPriority High + * @SYMTestActions RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps, RPacketService::EnumerateNifs, RPacketContext::Deactivate + * @SYMTestExpectedResults Pass - Primary and secondary contexts deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify secondary is also deactivated. + +Verify packet service status, packet context status, context info, NIF info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + //Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Set the attach mode to EAttachWhenPossible. + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Ensure there is a primary context active and a secondary context active. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + RPacketContext& secondaryPacketContext2 = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext); + + // Activate the secondary context. + ActivateSecondaryPacketContextL(secondaryPacketContext2); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + + + + // Post notification for primary context status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for secondary context status change + TExtEtelRequestStatus notifyContext2StChStatus(secondaryPacketContext2, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContext2StChStatus); + RPacketContext::TContextStatus packetContextStatus2; + secondaryPacketContext2.NotifyStatusChange(notifyContextStChStatus, packetContextStatus2); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for service's dynamic caps change + RPacketService::TDynamicCapsFlags dynCaps; + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Deactivate the primary context. + TExtEtelRequestStatus contextDeactivateStatus(primaryPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + primaryPacketContext.Deactivate(contextDeactivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for primary context completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for primary context returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 10061 ); + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifyContext2StChStatus, + packetContextStatus2, + expectedPacketContextStatus, + KErrNone); + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 10062 ); + // Leaving since the cancellation did not work, so ETEL will panic if another notification will be send + CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentionally - CTSY doesn't have support for Cancelation of NotifyStatusChange")); + secondaryPacketContext2.NotifyStatusChange(notifyContext2StChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifyContext2StChStatus, + packetContextStatus2, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for secondary context returns EStatusInactive + ASSERT_EQUALS(secondaryPacketContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyStatusChange for primary context completes with EStatusAttached + RPacketService::TStatus expectedPacketStatus = RPacketService::EStatusAttached; + + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketStatus, + KErrNone ); + + // Check RPacketService::GetStatus for primary context returns EStatusAttached + + ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyDynamicCapsChange returns caps in set of RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq + // Check RPacketService::NotifyDynamicCapsChange returns caps NOT in set of RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall + TInt wantedDynCapBits = RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq; + TInt unWantedDynCapBits = RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall; + + iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( + packetService, + notifyServiceDynCapsStatus, + dynCaps, + wantedDynCapBits, + unWantedDynCapBits, + KErrNone); + + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach | RPacketService::KCapsRxCSCall + // Check RPacketService::GetDynamicCaps returns caps in set of RPacketService::KCapsSMSTransfer | RPacketService::KCapsManualDetach | RPacketService::KCapsRxContextActivationReq + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps did not return correct dynamic caps")); + + + // Check RPacketService::EnumerateNifs returns aCount = 0 + TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(enumerateNifsStatus); + TInt nifCount = 0; + const TInt wantedCount = 0; + packetService.EnumerateNifs(enumerateNifsStatus, nifCount); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out")); + ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned wrong NIF count.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // PopAndDestroy + // notifyContextStChStatus + // notifyContext2StChStatus + // notifyServiceStChStatus + // notifyServiceDynCapsStatus + // contextDeactivateStatus + // enumerateNifsStatus + CleanupStack::PopAndDestroy(6, ¬ifyContextStChStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0014::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0014"); + } + + + +CCTSYIntegrationTestPacketContext0015::CCTSYIntegrationTestPacketContext0015(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0015::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0015::~CCTSYIntegrationTestPacketContext0015() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0015::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0015 + * @SYMFssID BA/CTSY/PKTC-0015 + * @SYMTestCaseDesc Deactivate a secondary context and check that primary context is kept active. + * @SYMTestPriority High + * @SYMTestActions RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::GetContextInfo, RPacketService::EnumerateContexts + * @SYMTestExpectedResults Pass - First context remains active. Second context is deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify packet service status, packet context status, context info, NIF info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Set the attach mode to EAttachWhenPossible. + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + TExtEtelRequestStatus notifyContextAddedStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextAddedStatus); + TName primaryCntxtId; + + //post notifier for RPacketService::NotifyContextAdded + packetService.NotifyContextAdded(notifyContextAddedStatus, primaryCntxtId); + + // Ensure there is a primary context active and a secondary context active. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out")); + CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error")); + + TName secondaryCntxtId; + + //post notifier for RPacketService::NotifyContextAdded + packetService.NotifyContextAdded(notifyContextAddedStatus, secondaryCntxtId); + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out")); + CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error")); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext); + + // Activate the secondary context. + ActivateSecondaryPacketContextL(secondaryPacketContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Post notification for secondary context status change + TExtEtelRequestStatus notifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus secondaryPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, secondaryPacketContextStatus); + + // Deactivate the secondary context. + TExtEtelRequestStatus contextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + secondaryPacketContext.Deactivate(contextDeactivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifyContextStChStatus, + secondaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + //repost notifier + secondaryPacketContext.NotifyStatusChange(contextDeactivateStatus, secondaryPacketContextStatus); + + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifyContextStChStatus, + secondaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for secondary context returns EStatusInactive + RPacketContext::TContextStatus getPacketContextStatus; + CHECK_EQUALS_L(secondaryPacketContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + CHECK_EQUALS_L(getPacketContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus did not return RPacketContext::EStatusInactive.")); + + // Check RPacketService::GetStatus for primary context returns EStatusActive + RPacketService::TStatus packetServiceStatus; + ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketService::EnumerateContexts returns aCount = 2 + TExtEtelRequestStatus enumContextsStatus(packetService, EPacketEnumerateContexts); + CleanupStack::PushL(enumContextsStatus); + TInt count = 0; + TInt max = 0; + const TInt wantedCount = 2; + packetService.EnumerateContexts(enumContextsStatus, count, max); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsStatus, ETimeMedium), KErrNone, + _L("RPacketService::EnumerateContexts timed out.")); + ASSERT_EQUALS(enumContextsStatus.Int(), KErrNone, + _L("RPacketService::EnumerateContexts returned with an error.")); + ASSERT_EQUALS(count, wantedCount,_L("RPacketService::EnumerateContexts did not return correct number of open contexts.")); + + // Check RPacketService::GetContextInfo for aIndex = 0 and 1 return the correct context name and status for the primary and secondary context. + TExtEtelRequestStatus getContextsInfoStatus(packetService, EPacketGetContextInfo); + CleanupStack::PushL(getContextsInfoStatus); + RPacketService::TContextInfo primaryContextInfo; + RPacketService::TContextInfo secondaryContextInfo; + packetService.GetContextInfo(getContextsInfoStatus, 0, primaryContextInfo); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextsInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextInfo timed out.")); + ASSERT_EQUALS(getContextsInfoStatus.Int(), KErrNone, _L("RPacketService::GetContextInfo returned with an error.")); + + ASSERT_EQUALS_DES16(primaryContextInfo.iName, primaryCntxtId, _L("RPacketService::GetContextInfo did not return correct iName")); + ASSERT_EQUALS(primaryContextInfo.iStatus, RPacketContext::EStatusActive, _L("RPacketService::GetContextInfo did not return iStatus EStatusActive")); + + packetService.GetContextInfo(getContextsInfoStatus, 1, secondaryContextInfo); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextsInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextInfo timed out.")); + ASSERT_EQUALS(getContextsInfoStatus.Int(), KErrNone, _L("RPacketService::GetContextInfo returned with an error.")); + + ASSERT_EQUALS_DES16(secondaryContextInfo.iName, secondaryCntxtId, _L("RPacketService::GetContextInfo did not return correct iName")); + ASSERT_EQUALS(secondaryContextInfo.iStatus, RPacketContext::EStatusInactive, _L("RPacketService::GetContextInfo did not return iStatus EStatusInactive")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + //--PopAndDestroy-- + //notifyContextAddedStatus + //notifyContextStChStatus + //contextDeactivateStatus + //enumContextsStatus + //getContextsInfoStatus + CleanupStack::PopAndDestroy(5, ¬ifyContextAddedStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0015::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0015"); + } + + + +CCTSYIntegrationTestPacketContext0016::CCTSYIntegrationTestPacketContext0016(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0016::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0016::~CCTSYIntegrationTestPacketContext0016() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0016::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0016 + * @SYMFssID BA/CTSY/PKTC-0016 + * @SYMTestCaseDesc Handle network initiated deactivation. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::GetContextInfo, RPacketService::EnumerateContexts + * @SYMTestExpectedResults Pass - Context 1 is deactivated. Other context is unaffected. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/manual + * + * Reason for test: Verify packet service status, packet context status and context info. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // == Ensure there are two PDP contexts active. == + + //Check if we are on a simulated network + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL( phone ), KErrNone, _L("Network is unavailable")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure phone is attached to the packet service. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + //post notifier for RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextAddedStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextAddedStatus); + TName contextId1; + packetService.NotifyContextAdded(notifyContextAddedStatus, contextId1); + + // Open primary context 1 + RPacketContext& primaryPacketContext1 = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Check RPacketService::NotifyContextAdded completes + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out")); + CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error")); + + // Activate primary packet context 1 + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext1); + TName contextId2; + + //post notifier for RPacketService::NotifyContextAdded + packetService.NotifyContextAdded(notifyContextAddedStatus, contextId2); + + // Open primary context 2 + RPacketContext& primaryPacketContext2 = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext2); + + // Check RPacketService::NotifyContextAdded completes + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextAddedStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded timed out")); + CHECK_EQUALS_L(notifyContextAddedStatus.Int(),KErrNone, _L("RPacketService::NotifyContextAdded returned an error")); + + // Activate primary packet context 2 + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext2,2); + + // Check that both primary contexts are active + RPacketContext::TContextStatus packetContextStatus; + CHECK_EQUALS_L(primaryPacketContext1.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + CHECK_EQUALS_L(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + CHECK_EQUALS_L(primaryPacketContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + CHECK_EQUALS_L(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Post notification for the first context's status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext1, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + primaryPacketContext1.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // The simulator sends a PDP context deactivation message saying that context 1 has been deactivated. + DisplayUserInteractionPromptL(_L("Please send me a deactivation of a packet context request."), ETimeMedium); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for context 1 completes with EStatusDeactivating + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 10067 ); + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext1, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeactivating, _L("RPacketContext::NotifyStatusChange did not return EStatusDeactivating")); + + // -> EStatusInactive + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 10067 ); + primaryPacketContext1.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext1, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::NotifyStatusChange did not return EStatusInactive")); + + // Check RPacketContext::GetStatus for context 1 returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext1.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::GetStatus for context 2 returns EStatusActive + ASSERT_EQUALS(primaryPacketContext2.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketService::EnumerateContexts returns aCount = 2 + TExtEtelRequestStatus enumContextsStatus(packetService, EPacketEnumerateContexts); + CleanupStack::PushL(enumContextsStatus); + TInt count=-1; + TInt max=-1; + packetService.EnumerateContexts(enumContextsStatus,count,max); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsStatus, ETimeMedium), KErrNone, + _L("RPacketService::EnumerateContexts timed out.")); + ASSERT_EQUALS(enumContextsStatus.Int(), KErrNone, + _L("RPacketService::EnumerateContexts failed.")); + ASSERT_EQUALS(count,2,_L("RPacketService::EnumerateContexts returned with an error")); + + // Check RPacketService::GetContextInfo for aIndex = 0 and 1 return the correct context name and status for the two contexts. + RPacketService::TContextInfo contextInfo; + TExtEtelRequestStatus getContextInfoStatus(packetService, EPacketGetContextInfo); + CleanupStack::PushL(enumContextsStatus); + packetService.GetContextInfo(getContextInfoStatus,0,contextInfo); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfoStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetContextInfo timed out.")); + ASSERT_EQUALS(getContextInfoStatus.Int(), KErrNone, + _L("RPacketService::GetContextInfo returned with an error")); + ASSERT_EQUALS_DES16(contextInfo.iName,contextId1,_L("RPacketService::GetContextInfo return wrong value in iName")); + ASSERT_EQUALS(contextInfo.iStatus,RPacketContext::EStatusInactive,_L("RPacketService::GetContextInfo return wrong value in iStatus")); + packetService.GetContextInfo(getContextInfoStatus,1,contextInfo); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfoStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetContextInfo timed out.")); + ASSERT_EQUALS(getContextInfoStatus.Int(), KErrNone, + _L("RPacketService::GetContextInfo returned with an error.")); + ASSERT_EQUALS_DES16(contextInfo.iName,contextId2,_L("RPacketService::GetContextInfo return wrong value in iName")); + ASSERT_EQUALS(contextInfo.iStatus,RPacketContext::EStatusActive,_L("RPacketService::GetContextInfo return wrong value in iStatus")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop: + // enumContextsStatus + // enumContextsStatus + // notifyContextStChStatus + // notifyContextAddedStatus + CleanupStack::PopAndDestroy(4,¬ifyContextAddedStatus); + + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0016::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0016"); + } + + + +CCTSYIntegrationTestPacketContext0017::CCTSYIntegrationTestPacketContext0017(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0017::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0017::~CCTSYIntegrationTestPacketContext0017() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0017::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0017 + * @SYMFssID BA/CTSY/PKTC-0017 + * @SYMTestCaseDesc Deactivate a packet context when it is already inactive. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetStatus, RPacketService::GetStatus + * @SYMTestExpectedResults Pass - Error returned on deactivation. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verfiy error is returned and context stays inactive. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Get the attach mode so that it can be restored at the end of the test + RPacketService::TAttachMode attachMode; + CHECK_EQUALS_L(packetService.GetAttachMode(attachMode), KErrNone, _L("RPacketService::GetAttachMode returned with an error.")); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext); + + // Post notification for primary context status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Deactivate the primary context. + TExtEtelRequestStatus contextDeactivateStatus(primaryPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + primaryPacketContext.Deactivate(contextDeactivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + // === Check context status=== + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusInactive; + + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Deactivate the context. + primaryPacketContext.Deactivate(contextDeactivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status.")); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // notifyContextStChStatus + // contextDeactivateStatus + CleanupStack::PopAndDestroy(2,¬ifyContextStChStatus); + + return TestStepResult(); + } + + +TPtrC CCTSYIntegrationTestPacketContext0017::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0017"); + } + + + +CCTSYIntegrationTestPacketContext0018::CCTSYIntegrationTestPacketContext0018(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0018::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0018::~CCTSYIntegrationTestPacketContext0018() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0018::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0018 + * @SYMFssID BA/CTSY/PKTC-0018 + * @SYMTestCaseDesc Activate a PDP context with an unknown APN. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetLastErrorCause, RPacketService::GetStatus + * @SYMTestExpectedResults Pass - It is not possible to activate a context with an incorrect APN. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify activation fails and last error cause returned correctly. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + RMobilePhone &phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Set attach mode to 'when possible'. + TExtEtelRequestStatus setAttachModeStatus(packetService, EPacketSetAttachMode); + CleanupStack::PushL(setAttachModeStatus); + packetService.SetAttachMode(setAttachModeStatus, RPacketService::EAttachWhenPossible); + + // Ensure automatic attach completes successfully. + CHECK_EQUALS_L(WaitForRequestWithTimeOut(setAttachModeStatus, ETimeLong), KErrNone, + _L("RPacketService::SetAttachMode timed-out")); + CHECK_EQUALS_L(setAttachModeStatus.Int(), KErrNone, + _L("RPacketService::SetAttachMode returned with an error")); + + //Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsActivate. + + //$CTSYProblem. + //GetDynamicCaps does not return 0x1(KCapsActivate), because KCapsActivate flag is not set yet. + //CTSY sets KCapsActivate flag during context initialisation. + + //Check for the CAPS being returned + RPacketService::TDynamicCapsFlags dynCaps; + CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + + //RPacketService::TDynamicCapsFlags wantedDynCapBits = RPacketService::KCapsActivate; + //CHECK_BITS_SET_L(dynCaps, wantedDynCapBits, KNoUnwantedBits, _L("Packet service's KCapsActivate flag not set")); + + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Open a new primary context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + RPacketService::TStatus pckSrvcStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Set an incorrect APN when setting the config with RPacketContext::SetConfig + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RPacketContext::TContextConfigGPRS config; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + _LIT(KFaultApnName, "IncorrectAPNname"); + config.iAccessPointName.Copy(KFaultApnName); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TPckg configPk(config); + + TExtEtelRequestStatus setConfigStatus (primaryPacketContext,EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + primaryPacketContext.SetConfig(setConfigStatus,configPk); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("PacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("PacketContext::SetConfig returned an error.")); + + // Activate the context + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("PacketContext::Activate timed out")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("PacketContext::Activate did not return KErrNone")) + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusInactive. + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + + // === Check the status of context is EStatusInactive and that a valid error is returned === + + // Check RPacketContext::GetLastErrorCause returns error != KErrNone + TInt error; + ASSERT_EQUALS(primaryPacketContext.GetLastErrorCause(error), KErrNone, _L("RPacketContext::GetLastErrorCause returned with an error.")); + ASSERT_TRUE(error != KErrNone, _L("RPacketContext::GetLastErrorCause returns incorrectly KErrNone.")); + + // Check RPacketContext::GetStatus returns EStatusInactive. + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::GetStatus returns EStatusAttached. + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // setAttachModeStatus + // notifyContextStChStatus + // setConfigStatus + // contextActivateStatus + CleanupStack::PopAndDestroy(4, &setAttachModeStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0018::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0018"); + } + + + +CCTSYIntegrationTestPacketContext0019::CCTSYIntegrationTestPacketContext0019(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0019::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0019::~CCTSYIntegrationTestPacketContext0019() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0019::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0019 + * @SYMFssID BA/CTSY/PKTC-0019 + * @SYMTestCaseDesc Activate a PDP context with an incorrect password. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetLastErrorCause, RPacketService::GetStatus + * @SYMTestExpectedResults Pass - Activation fails and error returned. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify activation fails and last error cause returned correctly. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, + _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Set attach mode to 'when possible'. + TExtEtelRequestStatus setAttachModeStatus(packetService, EPacketSetAttachMode); + CleanupStack::PushL(setAttachModeStatus); + packetService.SetAttachMode(setAttachModeStatus, RPacketService::EAttachWhenPossible); + + // Ensure automatic attach completes successfully. + CHECK_EQUALS_L(WaitForRequestWithTimeOut(setAttachModeStatus, ETimeLong), KErrNone, + _L("RPacketService::SetAttachMode timed-out")); + CHECK_EQUALS_L(setAttachModeStatus.Int(), KErrNone, + _L("RPacketService::SetAttachMode returned with an error")); + + // Ensure phone has KCapsActivate capability. + + //Check for the CAPS being returned + RPacketService::TDynamicCapsFlags dynCaps; + CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + + //$CTSYProblem. + //GetDynamicCaps does not return 0x1(KCapsActivate) as it should, because KCapsActivate flag is not set yet. + //CTSY sets KCapsActivate flag during context initialisation. + RPacketService::TDynamicCapsFlags wantedDynCapBits = 0x00000000; + CHECK_BITS_SET_L(dynCaps, wantedDynCapBits, KNoUnwantedBits, _L("Packet service's KCapsActivate flag not set")); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Open a new primary context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Set an incorrect password when setting the config with RPacketContext::SetConfig + RPacketContext::TContextConfigGPRS config; + _LIT(KFaultPwd, "IncorrectPwd"); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(KFaultPwd); + TPckg configPk(config); + TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + primaryPacketContext.SetConfig(setConfigStatus, configPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, + _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, + _L("RPacketContext::SetConfig returned with error status.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + RPacketService::TStatus pckSrvcStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate the context + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("PacketContext::Activate timed out")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("PacketContext::Activate did not return KErrNone")); + + // Check RPacketContext::NotifyStatusChange completes wtih EStatusActivating -> EStatusInactive. + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check that the activation fails and error is returned. + // Check RPacketContext::GetLastErrorCause returns error != KErrNone + TInt error; + ASSERT_EQUALS(primaryPacketContext.GetLastErrorCause(error), KErrNone, _L("RPacketContext::GetLastErrorCause returned with an error.")); + ASSERT_TRUE(error != KErrNone, _L("RPacketContext::GetLastErrorCause returns incorrectly KErrNone.")); + + // Check RPacketContext::GetStatus returns EStatusInactive. + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::GetStatus returns EStatusAttached. + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // setAttachModeStatus + // setConfigStatus + // notifyContextStChStatus + // contextActivateStatus + CleanupStack::PopAndDestroy(4, &setAttachModeStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0019::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0019"); + } + + + +CCTSYIntegrationTestPacketContext0020::CCTSYIntegrationTestPacketContext0020(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0020::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0020::~CCTSYIntegrationTestPacketContext0020() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0020::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0020 + * @SYMFssID BA/CTSY/PKTC-0020 + * @SYMTestCaseDesc Activate a context when phone is in class C operation and preferred bearer is RPacketService::EBearerPacketSwitched + * @SYMTestPriority High + * @SYMTestActions RPacketService::GetPreferredBearer, RPacketContext::OpenNewContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::Deactivate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus + * @SYMTestExpectedResults Pass - Context activated and deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context status and packet service status. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure attach mode to RPacketService::EAttachWhenPossible. + + // Ensure MS class is class RPacketService::EMSClassAlternateMode. + + // Ensure preferred bearer to + + // RPacketService::EBearerPacketSwitched + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Check RPacketService::GetPreferredBearer returns RPacketService::EBearerPacketSwitched + + // Set a valid context config using RPacketContext::SetConfig + + // Activate packet context with RPacketContext::Activate + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // Deactivate the context + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + + // Check RPacketContext::GetStatus returns EStatusInactive + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + + // Check RPacketService::GetStatus returns EStatusAttached + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0020::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0020"); + } + + + +CCTSYIntegrationTestPacketContext0021::CCTSYIntegrationTestPacketContext0021(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0021::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0021::~CCTSYIntegrationTestPacketContext0021() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0021::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0021 + * @SYMFssID BA/CTSY/PKTC-0021 + * @SYMTestCaseDesc Cancel activation before activation is complete. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus + * @SYMTestExpectedResults Pass - Activation cancelled. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context is not activated and activation cancelled successfully. + +Verify subsequent attempt to activate succeeds and therefore roll back from cancelling worked correctly. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + // Get the context config using network info + RPacketContext::TContextConfigGPRS config; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TPckg configPk(config); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Open a new context + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Set a valid context config using RPacketContext::SetConfig + TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + packetContext.SetConfig(setConfigStatus, configPk); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status.")); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, _L("RPacketService::NotifyContextAdded completed with invalid context name.")); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Activate a context (don't wait for completion) + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Cancel activate with RTelSubSessionBase::CancelAsyncRequest(EPacketContextActivate) + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 50003 ); + // When packet context is requested to be activated, there is nothing CTSY can do to cancel activation, + // because activation has already been sent to the network. + // CancelAsyncRequest(EPacketContextActivate) returns faulty with KErrNone instead of KErrNotSupported. + packetContext.CancelAsyncRequest(EPacketContextActivate); + + // Check RTelSubSessionBase::CancelAsyncRequest(EPacketContextActivate) returns with KErrNotSupported + TInt error; + ASSERT_EQUALS(packetContext.GetLastErrorCause(error), KErrNone, _L("RPacketContext::GetLastErrorCause returned with an error.")); + ASSERT_EQUALS(error, KErrNotSupported, _L("RPacketContext::GetLastErrorCause does not return KErrNotSupported.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // pop + // getNetworkStatus + // notifyContextStatus + // setConfigStatus + // notifyServicetStChStatus + // contextActivateStatus + CleanupStack::PopAndDestroy(5, &getNetworkStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0021::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0021"); + } + + + +CCTSYIntegrationTestPacketContext0022::CCTSYIntegrationTestPacketContext0022(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0022::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0022::~CCTSYIntegrationTestPacketContext0022() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0022::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0022 + * @SYMFssID BA/CTSY/PKTC-0022 + * @SYMTestCaseDesc Activate context when request received from network. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketService::NotifyContextAdded, RPacketService::EnumerateContexts, RPacketContext::Activate, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketService::NotifyDynamicCapsChange, RPacketService::GetDynamicCaps + * @SYMTestExpectedResults Pass - Context activated on request from network. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/manual + * + * Reason for test: Verify context parameters in TPacketDataConfigBase derived class received correctly. + +Verify context added notification produced, number of contexts, dynamic caps, packet service status are all correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to the packet service. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsRxContextActivationReq + RPacketService::TDynamicCapsFlags dynCaps; + RPacketService::TDynamicCapsFlags wantedDynCapBits = RPacketService::KCapsRxContextActivationReq; + CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + CHECK_BITS_SET_L(dynCaps, wantedDynCapBits , KNoUnwantedBits, _L("RPacketService::GetDynamicCaps KCapsRxContextActivationReq flag not set")); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Post notifications for the RPacketService::NotifyContextActivationRequested + TExtEtelRequestStatus notifyContextActivationRequestedStatus(packetService, EPacketNotifyContextActivationRequested); + CleanupStack::PushL(notifyContextActivationRequestedStatus); + RPacketContext::TContextConfigGPRS requestedConfig; + TPckg requestedConfigPckg(requestedConfig); + packetService.NotifyContextActivationRequested(notifyContextActivationRequestedStatus,requestedConfigPckg); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for service's dynamic caps change + TExtEtelRequestStatus notifyServiceDynCapsStatus(packetService, EPacketNotifyDynamicCapsChange); + CleanupStack::PushL(notifyServiceDynCapsStatus); + packetService.NotifyDynamicCapsChange(notifyServiceDynCapsStatus, dynCaps); + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), + KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), + KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + // Simulator sends a context activation request to the phone. + RPacketContext::TContextConfigGPRS config; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + config.iAccessPointName.Copy(apn); + config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + DisplayUserInteractionPromptL(_L("Please send me a context activation request."), ETimeLong); + + + // $CTSYProblem The LTSY does nothing with the context activation request. + ERR_PRINTF1(_L("$CTSYProblem: The LTSY does nothing with the context activation request.")); + // Check RPacketService::NotifyContextActivationRequested completes. + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextActivationRequestedStatus, ETimeLong), KErrNone, + _L("RPacketService::NotifyContextActivationRequested did not complete.")); + ASSERT_EQUALS(notifyContextActivationRequestedStatus.Int(), KErrNone, + _L("RPacketService::NotifyContextActivationRequested returned with error status.")); + + // Open a primary context. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(packetContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Extract the context parameters received and check they are the same as that sent by the simulator. + ASSERT_EQUALS_DES8(requestedConfig.iAccessPointName, config.iAccessPointName, _L("RPacketService::NotifyContextActivationRequested gave incorrect config data.")); + ASSERT_EQUALS_DES8(requestedConfig.iProtocolConfigOption.iAuthInfo.iUsername, config.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketService::NotifyContextActivationRequested gave incorrect config data.")); + ASSERT_EQUALS_DES8(requestedConfig.iProtocolConfigOption.iAuthInfo.iPassword, config.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketService::NotifyContextActivationRequested gave incorrect config data.")); + + // Use them to set a context config with RPacketContext::SetConfig + TPckg configPckg(requestedConfig); + TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + packetContext.SetConfig(setConfigStatus, configPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, + _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, + _L("RPacketContext::SetConfig returned with error status.")); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, + _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, + _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, + _L("Packet context config has zero length contextId.")); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not.")); + + // -> EStatusActive + packetContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + packetContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(packetContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Check dynamic caps === + + // Check RPacketService::NotifyDynamicCapsChange completes with caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer. + // Check RPacketService::NotifyDynamicCapsChange completes with caps NOT in set of RPacketService::KCapsManualAttach + wantedDynCapBits = RPacketService::KCapsRxCSCall | RPacketService::KCapsRxContextActivationReq | RPacketService::KCapsSMSTransfer; + TInt unWantedDynCapBits = RPacketService::KCapsManualAttach; + iPacketServiceTestHelper.WaitForPacketServiceNotifyDynamicCapsChange( + packetService, + notifyServiceDynCapsStatus, + dynCaps, + wantedDynCapBits, + unWantedDynCapBits, + KErrNone); + + // Check RPacketService::GetDynamicCaps returns caps in set of KCapsRxCSCall | KCapsRxContextActivationReq | KCapsSMSTransfer + // Check RPacketService::GetDynamicCaps returns caps NOT in set of RPacketService::KCapsManualAttach + ASSERT_EQUALS(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + ASSERT_BITS_SET(dynCaps, wantedDynCapBits, unWantedDynCapBits, _L("RPacketService::GetDynamicCaps Packet service's KCapsActivate flag not set")); + + // Check RPacketService::EnumerateContexts returns 1. + TExtEtelRequestStatus enumContextsStatus(packetService, EPacketEnumerateContexts); + CleanupStack::PushL(enumContextsStatus); + TInt count=-1; + TInt max=-1; + packetService.EnumerateContexts(enumContextsStatus,count,max); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsStatus, ETimeMedium), KErrNone, + _L("RPacketService::EnumerateContexts timed out.")); + ASSERT_EQUALS(enumContextsStatus.Int(), KErrNone, + _L("RPacketService::EnumerateContexts failed.")); + ASSERT_EQUALS(count,1,_L("RPacketService::EnumerateContexts did not returned one.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop: + // enumContextsStatus + // contextActivateStatus + // setConfigStatus + // notifyContextStChStatus + // getNetworkStatus + // notifyServiceDynCapsStatus + // notifyServiceStChStatus + // notifyContextStatus + // notifyContextActivationRequestedStatus + CleanupStack::PopAndDestroy(9,¬ifyContextActivationRequestedStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0022::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0022"); + } + + + +CCTSYIntegrationTestPacketContext0023::CCTSYIntegrationTestPacketContext0023(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0023::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0023::~CCTSYIntegrationTestPacketContext0023() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0023::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0023 + * @SYMFssID BA/CTSY/PKTC-0023 + * @SYMTestCaseDesc Activate context when request received from network. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::Activate, RPacketService::NotifyContextAdded, RPacketContext::GetStatus, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketService::EnumerateNifs, RPacketContext::NotifyStatusChange, RPacketContext::SetConfig, RPacketService::EnumerateContextsInNif, RPacketService::NotifyContextActivationRequested, RPacketContext::GetDnsInfo + * @SYMTestExpectedResults Pass - Context activated on request from network. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/manual + * + * Reason for test: Verify NIF related info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + ERR_PRINTF2(_L("$CTSYProblem: defect id = %d"), 10085); + User::Leave(KErrNone); + + // Ensure phone is attached to the packet service. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsRxContextActivationReq + RPacketService::TDynamicCapsFlags dynCaps; + CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + CHECK_BITS_SET_L(dynCaps, RPacketService::KCapsRxContextActivationReq, KNoUnwantedBits, _L("RPacketService::GetStaticCaps did not return correct dynamic caps")); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // post notifier for RPacketService::NotifyContextActivationRequested + RPacketContext::TContextConfigGPRS configGPRS; + TPckg configPkg(configGPRS); + TExtEtelRequestStatus notifyContextActivationRequested(packetService , EPacketNotifyContextActivationRequestedCancel); + CleanupStack::PushL(notifyContextActivationRequested); + packetService.NotifyContextActivationRequested(notifyContextActivationRequested, configPkg); + + // Ask the simulator to send a context activation request + RPacketContext::TContextConfigGPRS configSimulator; + TPckg configSimulatorPkg(configSimulator); + DisplayUserInteractionPromptL(_L("Simulator needs to send context activation request to this phone."), ETimeMedium); + + // Check RPacketService::NotifyContextActivationRequested completes with valid context configuration. + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextActivationRequested, ETimeLong), KErrNone, _L("RPacketService::NotifyContextActivationRequested timed out.")); + ASSERT_EQUALS(notifyContextActivationRequested.Int(), KErrNone, _L("RPacketService::NotifyContextActivationRequested returned with error status.")); + ASSERT_TRUE(configGPRS.iAccessPointName.Length() > 0,_L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iAccessPointName.")); + ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iUsername.")); + ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iPassword.")); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + + // Open a primary context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Extract the context parameters received and check they are the same as that sent by the simulator. + // ETEL PACKET API says that nw may send PDP type requested, PDP address, Access Point Name (APN) + ASSERT_EQUALS_DES8(configSimulator.iAccessPointName, configGPRS.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS(configSimulator.iPdpType, configGPRS.iPdpType, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(configSimulator.iPdpAddress, configGPRS.iPdpAddress, _L("RPacketContext::GetConfig returns incorrect config data.")); + + + // Use them to set a context config with RPacketContext::SetConfig + TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + primaryPacketContext.SetConfig(setConfigStatus, configPkg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status.")); + + // Check RPacketService::NotifyContextAdded completes with a valid context name + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyContextStatus, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + ASSERT_EQUALS(notifyContextStatus.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + ASSERT_TRUE(contextId.Length() > 0, _L("RPacketService::NotifyContextAdded completed with invalid context name")); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // === Check context statuses === + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not.")); + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Get context information === + + // Check RPacketContext::GetConfig returns same config as that set + TExtEtelRequestStatus contextGetConfigStatus(primaryPacketContext, EPacketContextGetConfig); + CleanupStack::PushL(contextGetConfigStatus); + RPacketContext::TContextConfigGPRS getConfig; + TPckg getConfigPkg(getConfig); + primaryPacketContext.GetConfig(contextGetConfigStatus, getConfigPkg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextGetConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out.")) + ASSERT_EQUALS(contextGetConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error.")); + + ASSERT_EQUALS_DES8(getConfig.iAccessPointName, configGPRS.iAccessPointName, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iUsername, configGPRS.iProtocolConfigOption.iAuthInfo.iUsername, _L("RPacketContext::GetConfig returns incorrect config data.")); + ASSERT_EQUALS_DES8(getConfig.iProtocolConfigOption.iAuthInfo.iPassword, configGPRS.iProtocolConfigOption.iAuthInfo.iPassword, _L("RPacketContext::GetConfig returns incorrect config data.")); + + // Check RPacketContext::GetDnsInfo returns valid primary and secondary DNS ip addresses + RPacketContext::TDnsInfoV2 dnsInfo; + RPacketContext::TTDnsInfoV2Pckg dnsInfoPkg(dnsInfo); + TExtEtelRequestStatus dnsInfoStatus(primaryPacketContext, EPacketContextGetDNSInfo); + CleanupStack::PushL(dnsInfoStatus); + primaryPacketContext.GetDnsInfo(dnsInfoStatus, dnsInfoPkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(dnsInfoStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetDnsInfo timed out.")); + + ASSERT_EQUALS(dnsInfoStatus.Int(), KErrNone, _L("RPacketContext::GetDnsInfo returned an error.")); + ASSERT_TRUE(dnsInfo.iPrimaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length PrimaryDns.")); + ASSERT_TRUE(dnsInfo.iSecondaryDns.Length() > 0, _L("RPacketContext::GetDnsInfo returned with zero length SecondaryDns.")); + + // === Check that there is one NIF with one primary context belonging to it === + + // Check RPacketService::EnumerateNifs returns aCount = 1 + + TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(enumerateNifsStatus); + TInt nifCount; + const TInt wantedCount = 1; + packetService.EnumerateNifs(enumerateNifsStatus, nifCount); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out")); + ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned wrong NIF count.")); + + + // Get context info + TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo); + CleanupStack::PushL(getContextInfo); + RPacketService::TContextInfo contextInfo; + const TInt index = 0; + packetService.GetContextInfo(getContextInfo, index, contextInfo); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out")); + ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing context name returns aCount = 1 + TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(enumerateContextsInNifStatus); + TInt contextsInNifCount; + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, contextInfo.iName, contextsInNifCount); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out")); + ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif returned wrong number of contexts sharing a NIF")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing context name and aIndex = 0 returns aContextName which is same as aExistingContextName + TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(getContextNameInNifStatus); + TName contextName; + packetService.GetContextNameInNif(getContextNameInNifStatus, contextInfo.iName, index, contextName); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out")); + ASSERT_EQUALS_DES16(contextInfo.iName, contextName, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + TExtEtelRequestStatus getNifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(getNifInfoStatus); + const TInt nifInfoCount = 0; + RPacketService::TNifInfoV2 nifInfo; + RPacketService::TNifInfoV2Pckg nifInfoPkg(nifInfo); + packetService.GetNifInfo(getNifInfoStatus, nifInfoCount, nifInfoPkg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo timed out")); + ASSERT_TRUE(nifInfo.iContextName.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid context name")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 1 + ASSERT_EQUALS(nifInfo.iNumberOfContexts, wantedCount, _L("RPacketService::GetNifInfo returned wrong count of contexts")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfo.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo returned wrong NIF status")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfo.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext in iContextType + ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo returned wrong context type")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // notifyContextActivationRequested + // setConfigStatus + // notifyContextStatus + // notifyContextStChStatus + // contextActivateStatus + // contextGetConfigStatus + // dnsInfoStatus + // enumerateNifStatus + // getContextInfo + // enumerateContextsInNifStatus + // getContextNameInNifStatus + // getNifInfoStatus + + CleanupStack::PopAndDestroy(12, ¬ifyContextActivationRequested); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0023::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0023"); + } + + + +CCTSYIntegrationTestPacketContext0024::CCTSYIntegrationTestPacketContext0024(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0024::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0024::~CCTSYIntegrationTestPacketContext0024() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0024::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0024 + * @SYMFssID BA/CTSY/PKTC-0024 + * @SYMTestCaseDesc Reject network requested context activation. + * @SYMTestPriority High + * @SYMTestActions RPacketService::RejectActivationRequest, RPacketService::EnumerateContexts + * @SYMTestExpectedResults Pass - Context activation request rejected. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/manual + * + * Reason for test: Verify context parameters in TPacketDataConfigBase derive class received correctly. Verify when network repeated requests for a context activation (up to 5 times), it can be rejected. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + ERR_PRINTF2(_L("$CTSYProblem: defect id = %d"), 10086); + User::Leave(KErrNone); + + // Check that the phone is registered with the network simulator. + RMobilePhone &mobilePhone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(mobilePhone); + + // Ensure phone is attached to the packet service. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Ensure RPacketService::GetDynamicCaps returns caps in set of KCapsRxContextActivationReq + RPacketService::TDynamicCapsFlags dynCaps; + CHECK_EQUALS_L(packetService.GetDynamicCaps(dynCaps), KErrNone, _L("RPacketService::GetDynamicCaps returned with an error")); + CHECK_BITS_SET_L(dynCaps, RPacketService::KCapsRxContextActivationReq, KNoUnwantedBits, _L("RPacketService::GetDynamicCaps returned with incorrect caps")); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // post notifier for RPacketService::NotifyContextActivationRequested + RPacketContext::TContextConfigGPRS configGPRS; + TPckg configPkg(configGPRS); + TExtEtelRequestStatus notifyContextActivationRequested(packetService , EPacketNotifyContextActivationRequested); + CleanupStack::PushL(notifyContextActivationRequested); + packetService.NotifyContextActivationRequested(notifyContextActivationRequested, configPkg); + + // Ask the simulator to send a context activation request + DisplayUserInteractionPromptL(_L("Simulator needs to send context activation request to this phone."), ETimeMedium); + + // Check RPacketService::NotifyContextActivationRequested completes with valid context configuration. + iPacketServiceTestHelper.WaitForPacketServiceNotifyContextActivationRequested( + packetService, + notifyContextActivationRequested, + configPkg, + KErrNone ); + + ASSERT_EQUALS(notifyContextActivationRequested.Int(), KErrNone, _L("RPacketService::NotifyContextActivationRequested returned with error status.")); + ASSERT_TRUE(configGPRS.iAccessPointName.Length() > 0,_L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iAccessPointName.")); + ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iUsername.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iUsername.")); + ASSERT_TRUE(configGPRS.iProtocolConfigOption.iAuthInfo.iPassword.Length() > 0, _L("RPacketService::NotifyContextActivationRequested returned from Simulator with incorrect or zero length iPassword.")); + + // Check RPacketService::RejectActivationRequest completes with KErrNone + TExtEtelRequestStatus rejectActivationRequestStatus(packetService, EPacketRejectActivationRequest); + CleanupStack::PushL(rejectActivationRequestStatus); + packetService.RejectActivationRequest(rejectActivationRequestStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(rejectActivationRequestStatus, ETimeLong), KErrNone, _L("RPacketService::RejectActivationRequest timed out")); + ASSERT_EQUALS(rejectActivationRequestStatus.Int(), KErrNone, _L("RPacketService::RejectActivationRequest returned with error status.")); + + // Check RPacketService::EnumerateContexts returns 0 + TExtEtelRequestStatus enumerateContextsStatus(packetService, EPacketEnumerateContexts); + CleanupStack::PushL(enumerateContextsStatus); + TInt count(0); + TInt maxAllowed(0); + const TInt wantedCount = 0; + packetService.EnumerateContexts(enumerateContextsStatus, count, maxAllowed); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContexts timed out")); + ASSERT_EQUALS(enumerateContextsStatus.Int(), KErrNone, _L("RPacketService::EnumerateContexts returned with error status.")); + ASSERT_EQUALS(count, wantedCount, _L("RPacketService::EnumerateContexts did not return context count 0 as expected")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // notifyContextActivationRequested + // rejectActivationRequestStatus + // enumerateContextsStatus + CleanupStack::PopAndDestroy(3, ¬ifyContextActivationRequested); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0024::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0024"); + } + + + +CCTSYIntegrationTestPacketContext0025::CCTSYIntegrationTestPacketContext0025(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0025::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0025::~CCTSYIntegrationTestPacketContext0025() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0025::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0025 + * @SYMFssID BA/CTSY/PKTC-0025 + * @SYMTestCaseDesc Delete a context when it is active. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::Delete, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus + * @SYMTestExpectedResults Pass - Context is deleted and the status of the contexts reflects this status.. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context status is correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // === Ensure there is an active PDP context. === + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service. + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Open a new context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Delete the context with RPacketContext::Delete + TExtEtelRequestStatus deleteStatus(packetService, EPacketContextDelete); + CleanupStack::PushL(deleteStatus); + primaryPacketContext.Delete(deleteStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(deleteStatus, ETimeLong), KErrNone, _L("RPacketContext::Delete timed out")); + + // Check an error is returned. + // $CTSYProblem Adaptation deletes context always if it's status is else than RPacketContext::EStatusUnknown. + // Checking is changed from NOT KErrNone to KErrNone and GetStatus() checking is changed from EStatusActive to EStatusDeleted + ASSERT_EQUALS(deleteStatus.Int(), KErrNone, _L("RPacketContext::Delete returned with an error")); + + // Check RPacketContext::GetStatus returns EStatusDeleted + RPacketContext::TContextStatus packetContextStatus; + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeleted, _L("RPacketContext::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // deleteStatus + CleanupStack::PopAndDestroy(1, &deleteStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0025::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0025"); + } + + + +CCTSYIntegrationTestPacketContext0026::CCTSYIntegrationTestPacketContext0026(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0026::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0026::~CCTSYIntegrationTestPacketContext0026() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0026::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0026 + * @SYMFssID BA/CTSY/PKTC-0026 + * @SYMTestCaseDesc Delete a context when it has been deactivated. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::Delete + * @SYMTestExpectedResults Pass - Context deleted. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context status is deleted. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is an active PDP context. + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Open a new context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Activate primary context + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext); + + // Check RPacketContext::GetStatus returns EStatusActive + RPacketContext::TContextStatus packetContextStatus; + CHECK_EQUALS_L(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error.")); + CHECK_EQUALS_L(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + //Post notifier for packet context status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Deactivate the context. + TExtEtelRequestStatus contextDeactivateStatus(primaryPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + primaryPacketContext.Deactivate(contextDeactivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Delete the context with RPacketContext::Delete + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + TExtEtelRequestStatus contextDeleteStatus(primaryPacketContext, EPacketContextDelete); + CleanupStack::PushL(contextDeleteStatus); + primaryPacketContext.Delete(contextDeleteStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeleteStatus, ETimeLong), KErrNone, _L("RPacketContext::Delete timed out")); + ASSERT_EQUALS(contextDeleteStatus.Int(), KErrNone, _L("RPacketContext::Delete returned an error")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusDeleted + expectedPacketContextStatus = RPacketContext::EStatusDeleted; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusDeleted + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusDeleted, _L("RPacketContext::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // notifyContextStChStatus + // contextDeactivateStatus + // contextDeleteStatus + CleanupStack::PopAndDestroy(3, ¬ifyContextStChStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0026::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0026"); + } + + + +CCTSYIntegrationTestPacketContext0027::CCTSYIntegrationTestPacketContext0027(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0027::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0027::~CCTSYIntegrationTestPacketContext0027() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0027::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0027 + * @SYMFssID BA/CTSY/PKTC-0027 + * @SYMTestCaseDesc Dial a voice call while context is active in class B operation. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RCall::Dial, RCall::HangUp, RCall::GetStatus, RCall::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus + * @SYMTestExpectedResults Pass - Packet service suspends when CS call is made. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context and packet service are suspended when voice call is initiated whilst context is activated + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure MS class is EMSClassSuspensionRequired + + // Ensure there is an active PDP context. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Check RPacketService::GetMSClass returns EMSClassSuspensionRequired + + // Dial a number that answers. + + // === Check call status === + + // Check RCall::NotifyStatusChange completes with EStatusConnected. + + // Check RCall::GetStatus returns EStatusConnected. + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusSuspended + + // Check RPacketService::GetStatus returns EStatusSuspended + + // Check RPacketContext::NotifyStatusChange completes with EStatusSuspended + + // Check RPacketContext::GetStatus returns EStatusSuspended + + // Hang up call. + + // Check RCall::NotifyStatusChange completes with EStatusHangingUp -> EStatusIdle. + + // Check RCall::GetStatus returns EStatusIdle. + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + // Check RPacketContext::NotifyStatusChange completes with EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0027::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0027"); + } + + + +CCTSYIntegrationTestPacketContext0028::CCTSYIntegrationTestPacketContext0028(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0028::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0028::~CCTSYIntegrationTestPacketContext0028() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0028::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0028 + * @SYMFssID BA/CTSY/PKTC-0028 + * @SYMTestCaseDesc Get default context params. + * @SYMTestPriority High + * @SYMTestActions RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetConfig, RPacketService::SetDefaultContextParams, RPacketService::GetContextInfo + * @SYMTestExpectedResults Pass - Context activated with default params. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context activated without specific config has default context params. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + const TInt gprs = 1; + const TInt r99 = 2; + const TInt r5 = 3; + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + + // Activate context using RPacketContext::TContextConfigGPRS + DoTest0028L(packetService, apn, user, pwd, gprs); + + // Repeat test with RPacketContext::TContextConfigR99_R4 + DoTest0028L(packetService, apn, user, pwd, r99); + + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 50004 ); + // Test case is made to leave because CTSY doesn't have support for TContextConfig_R5. + CHECK_TRUE_L(EFalse, _L("This test has been made to leave intentionally - CTSY doesn't have support for TContextConfig_R5")); + + // Repeat test with RPacketContext::TContextConfig_R5 + DoTest0028L(packetService, apn, user, pwd, r5); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // getNetworkStatus + CleanupStack::PopAndDestroy(1, &getNetworkStatus); + + return TestStepResult(); + } + + +void CCTSYIntegrationTestPacketContext0028::DoTest0028L(RPacketService& aPacketService, TPtrC aApn, TPtrC aUser, TPtrC aPwd, TInt aNWType) +/** + * Activates primary packet context with default context parameters. + * @param aPacketService Reference to packet service. + * @param aNWType Gprs / R99_R4 / R5. + */ + { + TExtEtelRequestStatus reqSetDefaultContextParams(aPacketService, EPacketSetDefaultContextParams); + CleanupStack::PushL(reqSetDefaultContextParams); + RPacketContext::TContextConfigGPRS setConfigGprs; + TPckg setConfigPkgGprs(setConfigGprs); + RPacketContext::TContextConfigR99_R4 setConfigR99; + TPckg setConfigPkgR99(setConfigR99); + RPacketContext::TContextConfig_R5 setConfigR5; + TPckg setConfigPkgR5(setConfigR5); + + switch(aNWType) + { + case 1: // GPRS + // Set valid context params with RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfigGPRS + setConfigGprs.iAccessPointName.Copy(aApn); + setConfigGprs.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigGprs.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + aPacketService.SetDefaultContextParams(reqSetDefaultContextParams, setConfigPkgGprs); + break; + + case 2: // R99_R4 + // Set valid context params with RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfigR99_R4 + setConfigR99.iAccessPointName.Copy(aApn); + setConfigR99.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigR99.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + aPacketService.SetDefaultContextParams(reqSetDefaultContextParams, setConfigPkgR99); + break; + + case 3: // R5 + // Set valid context params with RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfig_R5 + setConfigR5.iAccessPointName.Copy(aApn); + setConfigR5.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigR5.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + aPacketService.SetDefaultContextParams(reqSetDefaultContextParams, setConfigPkgR5); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqSetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::SetDefaultContextParams timed out")); + ASSERT_EQUALS(reqSetDefaultContextParams.Int(), KErrNone, _L("RPacketService::SetDefaultContextParams returned with an error")); + + // Check RPacketService::GetDefaultContextParams returns same params as that set + TExtEtelRequestStatus reqGetDefaultContextParams(aPacketService, EPacketGetDefaultContextParams); + CleanupStack::PushL(reqGetDefaultContextParams); + RPacketContext::TContextConfigGPRS getConfigGprs; + TPckg getConfigPkgGprs(getConfigGprs); + RPacketContext::TContextConfigR99_R4 getConfigR99; + TPckg getConfigPkgR99(getConfigR99); + RPacketContext::TContextConfig_R5 getConfigR5; + TPckg getConfigPkgR5(getConfigR5); + + switch(aNWType) + { + case 1: // GPRS + aPacketService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgGprs); + break; + + case 2: // R99_R4 + aPacketService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgR99); + break; + + case 3: // R5 + aPacketService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgR5); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqGetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::GetDefaultContextParams timed out")); + ASSERT_EQUALS(reqGetDefaultContextParams.Int(), KErrNone, _L("RPacketService::GetDefaultContextParams returned with an error")); + + TCmpRPacketContextTContextConfigGPRS contextConfigGPRSCmp(getConfigGprs, setConfigGprs, *this); + TCmpRPacketContextTContextConfigR99_R4 contextConfigR99Cmp(getConfigR99, setConfigR99, *this); + TCmpRPacketContextTContextConfig_R5 contextConfigR5Cmp(getConfigR5, setConfigR5, *this); + + switch(aNWType) + { + case 1: // GPRS + ASSERT_TRUE(contextConfigGPRSCmp.IsEqual(ELogError), _L("RPacketService.GetDefaultContextParams did not return same params as that set")); + break; + + case 2: // R99_R4 + ASSERT_TRUE(contextConfigR99Cmp.IsEqual(ELogError), _L("RPacketService.GetDefaultContextParams did not return same params as that set")); + break; + + case 3: // R5 + ASSERT_TRUE(contextConfigR5Cmp.IsEqual(ELogError), _L("RPacketService.GetDefaultContextParams did not return same params as that set")); + break; + } + + // Open a new context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(aPacketService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + aPacketService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for primary context status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate a context with RPacketContext::Activate + //$CTSYProblem SetConfig is required before activation of the context. + //If SetConfig is not called, Activate returns KErrTimedOut(-33). + //SetDefaultContextParams sends context parameters common to all contexts to adaptation/LTSY layer. + //However,for some reason, adaptation does not use these params when Activate is called + //and requires setting of context specific parameters with SetConfig + TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + switch(aNWType) + { + case 1: // GPRS + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgGprs); + break; + + case 2: // R99_R4 + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR99); + break; + + case 3: // R5 + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR5); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status.")); + + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + aPacketService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(aPacketService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Get context information === + + // Check RPacketContext::GetConfig returns same config as the default set in RPacketService::SetDefaultContextParams + TExtEtelRequestStatus contextConfigStatus(primaryPacketContext, EPacketContextGetConfig); + CleanupStack::PushL(contextConfigStatus); + + switch(aNWType) + { + case 1: // GPRS + primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgGprs); + break; + + case 2: // R99_R4 + primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgR99); + break; + + case 3: // R5 + primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgR5); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out.")) + ASSERT_EQUALS(contextConfigStatus.Int(), KErrNone, _L("RPacketContext::GetConfig returned an error.")); + + TCmpRPacketContextTContextConfigGPRS contextConfigGPRSCmp2(getConfigGprs, setConfigGprs, *this); + TCmpRPacketContextTContextConfigR99_R4 contextConfigR99Cmp2(getConfigR99, setConfigR99, *this); + TCmpRPacketContextTContextConfig_R5 contextConfigR5Cmp2(getConfigR5, setConfigR5, *this); + + switch(aNWType) + { + case 1: // GPRS + ASSERT_TRUE(contextConfigGPRSCmp2.IsEqual(ELogError), _L("RPacketService.GetConfig did not return same params as the default set in RPacketService::SetDefaultContextParams")); + break; + + case 2: // R99_R4 + ASSERT_TRUE(contextConfigR99Cmp2.IsEqual(ELogError), _L("RPacketService.GetConfig did not return same params as the default set in RPacketService::SetDefaultContextParams")); + break; + + case 3: // R5 + ASSERT_TRUE(contextConfigR5Cmp2.IsEqual(ELogError), _L("RPacketService.GetConfig did not return same params as the default set in RPacketService::SetDefaultContextParams")); + break; + } + + // Check RPacketService::EnumerateContexts returns 1. + TExtEtelRequestStatus enumerateContextsStatus(aPacketService, EPacketEnumerateContexts); + CleanupStack::PushL(enumerateContextsStatus); + TInt count(0); + TInt maxAllowed(0); + const TInt wantedCount = 1; + aPacketService.EnumerateContexts(enumerateContextsStatus, count, maxAllowed); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContexts timed out")); + ASSERT_EQUALS(enumerateContextsStatus.Int(), KErrNone, _L("RPacketService::EnumerateContexts returned with error status.")); + ASSERT_EQUALS(count, wantedCount, _L("RPacketService::EnumerateContexts did not return context count 1 as expected")); + + // Check RPacketService::GetContextInfo with aIndex = 0 returns correct name in iName + TExtEtelRequestStatus getContextInfo(aPacketService, EPacketGetContextInfo); + CleanupStack::PushL(getContextInfo); + RPacketService::TContextInfo contextInfo; + const TInt index = 0; + aPacketService.GetContextInfo(getContextInfo, index, contextInfo); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out")); + ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name")); + + // Check RPacketService::GetContextInfo with aIndex = 0 returns EStatusActive in iStatus + ASSERT_EQUALS(contextInfo.iStatus, RPacketContext::EStatusActive, _L("RPacketService::GetContextInfo did not return iStatus RPacketContext::EStatusActive as expected")); + + // Release packet context + iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Pop + // reqSetDefaultContextParams + // reqGetDefaultContextParams + // notifyServiceStChStatus + // notifyContextStChStatus + // setConfigStatus + // contextActivateStatus + // contextConfigStatus + // enumerateContextsStatus + // getContextInfo + CleanupStack::PopAndDestroy(9, &reqSetDefaultContextParams); + + } + + +TPtrC CCTSYIntegrationTestPacketContext0028::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0028"); + } + + + +CCTSYIntegrationTestPacketContext0029::CCTSYIntegrationTestPacketContext0029(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0029::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0029::~CCTSYIntegrationTestPacketContext0029() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0029::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0029 + * @SYMFssID BA/CTSY/PKTC-0029 + * @SYMTestCaseDesc Set default context params to unsupported type. + * @SYMTestPriority High + * @SYMTestActions RPacketService::SetDefaultContextParams, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::GetConfig, RPacketService::SetDefaultContextParams, RPacketService::Open + * @SYMTestExpectedResults Pass - Context activated with original default params. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context activated without specific config has original default context params (not ones set). + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Get the default context params with RPacketService::GetDefaultContextParams + RPacketContext::TContextConfigGPRS dummyConfig; + TPckg dummyConfigPkgGprs(dummyConfig); + + TExtEtelRequestStatus reqGetDummyContextParams(packetService, EPacketGetDefaultContextParams); + CleanupStack::PushL(reqGetDummyContextParams); + packetService.GetDefaultContextParams(reqGetDummyContextParams, dummyConfigPkgGprs); + + //Check RPacketService::GetDefaultContextParams returns with KErrNotReady + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqGetDummyContextParams, ETimeLong), KErrNone, _L("RPacketService::GetDefaultContextParams timed out")); + ASSERT_EQUALS(reqGetDummyContextParams.Int(), KErrNotReady, _L("RPacketService::GetDefaultContextParams did not return KErrNotReady")); + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), + KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), + KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + // Get the context config using network info + RPacketContext::TContextConfigGPRS defaultConfig; + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + defaultConfig.iAccessPointName.Copy(apn); + defaultConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + defaultConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + TPckg defaultConfigPkgGprs(defaultConfig); + + // Set the default context params with RPacketService::SetDefaultContextParams + DEBUG_PRINTF1(_L("Setting Default Context Params")); + TExtEtelRequestStatus regSetInitParams(packetService,EPacketSetDefaultContextParams); + CleanupStack::PushL(regSetInitParams); + packetService.SetDefaultContextParams(regSetInitParams, defaultConfigPkgGprs); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(regSetInitParams, ETimeLong), KErrNone, _L("RPacketService::SetDefaultContextParams timed out")); + ASSERT_EQUALS(regSetInitParams.Int(), KErrNone, _L("RPacketService::SetDefaultContextParams returned with an error")); + + // Get the default context params with RPacketService::GetDefaultContextParams check they are the same as what was set + DEBUG_PRINTF1(_L("Getting Default Context Params")); + RPacketContext::TContextConfigGPRS getConfig; + TPckg getConfigPkgGprs(getConfig); + + TExtEtelRequestStatus reqGetDefaultContextParams(packetService, EPacketGetDefaultContextParams); + CleanupStack::PushL(reqGetDefaultContextParams); + packetService.GetDefaultContextParams(reqGetDefaultContextParams, getConfigPkgGprs); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqGetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::GetDefaultContextParams timed out")); + ASSERT_EQUALS(reqGetDefaultContextParams.Int(), KErrNone, _L("RPacketService::GetDefaultContextParams returned with an error")); + + DEBUG_PRINTF1(_L("Comparing default Context Params")); + TCmpRPacketContextTContextConfigGPRS contextParamsComparator(defaultConfig, getConfig, *this); + ASSERT_TRUE(contextParamsComparator.IsEqual(ELogError), _L("RPacketService::GetDefaultContextParams did not return set parameters")); + + // Set invalid context parameters using RPacketService::SetDefaultContextParams and using RPacketContext::TContextConfigGPRS + RPacketContext::TContextConfigGPRS invalidConfig; + invalidConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(user); + invalidConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(pwd); + _LIT(KFaultyAPN, "Incorrect APN name"); + invalidConfig.iAccessPointName.Copy(KFaultyAPN); + TPckg invalidConfigPkgGprs(invalidConfig); + + TExtEtelRequestStatus reqSetDefaultContextParams(packetService, EPacketSetDefaultContextParams); + CleanupStack::PushL(reqSetDefaultContextParams); + packetService.SetDefaultContextParams(reqSetDefaultContextParams, invalidConfigPkgGprs); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqSetDefaultContextParams, ETimeLong), KErrNone, _L("RPacketService::SetDefaultContextParams timed out")); + ASSERT_EQUALS(reqSetDefaultContextParams.Int(), KErrNone, _L("RPacketService::SetDefaultContextParams returned with an error")); + + + // Open a new context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for primary context status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + //$CTSYProblem + //SetConfig is required before activation of the context. + //If SetConfig is not called, Activate returns KErrTimedOut(-33). + //SetDefaultContextParams sends context parameters common to all contexts to adaptation/LTSY layer. + //However,for some reason, adaptation does not use these params when Activate is called + //and requires setting of context specific parameters with SetConfig + + TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + primaryPacketContext.SetConfig(setConfigStatus, defaultConfigPkgGprs); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, + _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, + _L("RPacketContext::SetConfig returned with error status.")); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, + _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::GetConfig returns same config as the default returned by RPacketService::GetDefaultContextParams + TExtEtelRequestStatus contextConfigStatus(primaryPacketContext, EPacketContextGetConfig); + CleanupStack::PushL(contextConfigStatus); + + RPacketContext::TContextConfigGPRS getConfigGprs2; + TPckg getConfigPkgGprs2(getConfigGprs2); + primaryPacketContext.GetConfig(contextConfigStatus, getConfigPkgGprs2); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextConfigStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConfig timed out.")); + + TCmpRPacketContextTContextConfigGPRS contextParamsComparatorNumberTwo(defaultConfig, getConfigGprs2, *this); + ASSERT_TRUE(contextParamsComparatorNumberTwo.IsEqual(ELogError), _L("RPacketService::GetConfig did not return same config as the default returned by RPacketService::GetDefaultContextParams")); + + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // reqGetDummyContextParams + // getNetworkStatus + // regSetInitParams + // reqGetDefaultContextParams + // reqSetDefaultContextParams + // notifyServiceStChStatus + // notifyContextStChStatus + // setConfigStatus + // contextActivateStatus + // contextConfigStatus + CleanupStack::PopAndDestroy(10,&reqGetDummyContextParams); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0029::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0029"); + } + + + +CCTSYIntegrationTestPacketContext0030::CCTSYIntegrationTestPacketContext0030(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0030::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0030::~CCTSYIntegrationTestPacketContext0030() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0030::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0030 + * @SYMFssID BA/CTSY/PKTC-0030 + * @SYMTestCaseDesc Deactivate NIF when there is only one NIF. + * @SYMTestPriority High + * @SYMTestActions RPacketService::GetStatus, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateContexts, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF + * @SYMTestExpectedResults Pass - All contexts in NIF deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify primary and secondary contexts in NIF are deactivated when primary context name specified. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is an active primary and secondary context. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + + // Check if we are on a simulated network + CHECK_EQUALS_L( iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL( phone ), KErrNone, + _L("Network is unavailable") ); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + TExtEtelRequestStatus notifyContextStatus(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatus); + TName contextId; + packetService.NotifyContextAdded(notifyContextStatus, contextId); + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + TName secondaryContextId; + packetService.NotifyContextAdded(notifyContextStatus, secondaryContextId); + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext),_L("Can't activate the secondary context")); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Check RPacketService::EnumerateNifs returns aCount = 1 + TExtEtelRequestStatus enumerateNifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(enumerateNifsStatus); + TInt count=-1; + packetService.EnumerateNifs(enumerateNifsStatus,count); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateNifsStatus, ETimeMedium), KErrNone, + _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(enumerateNifsStatus.Int(), KErrNone, + _L("RPacketService::EnumerateNifs failed.")); + ASSERT_EQUALS(count,1,_L("RPacketService::EnumerateNifs did not return correct number of NIFs.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + TExtEtelRequestStatus getNifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(getNifInfoStatus); + RPacketService::TNifInfoV2 nifInfo; + RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo); + packetService.GetNifInfo(getNifInfoStatus,0,nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(getNifInfoStatus.Int(), KErrNone, + _L("RPacketService::GetNifInfo failed.")); + ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo invlaid context name")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2 + ASSERT_EQUALS(nifInfo.iNumberOfContexts,2,_L("RPacketService::GetNifInfo wrong number of contexts")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfo.iNifStatus,RPacketContext::EStatusActive,_L("RPacketService::GetNifInfo wrong status")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfo.iPdpAddress.Length()>0,_L("RPacketService::GetNifInfo invlaid PDP address")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns EInternalContext + ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext,_L("RPacketService::GetNifInfo wrong type")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns KErrArgument + packetService.GetNifInfo(getNifInfoStatus,1,nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNifInfoStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(getNifInfoStatus.Int(), KErrArgument, + _L("RPacketService::GetNifInfo did not failed.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2 + TExtEtelRequestStatus enumContextsInfStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(enumContextsInfStatus); + count=-1; + packetService.EnumerateContextsInNif(enumContextsInfStatus,contextId,count); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumContextsInfStatus, ETimeMedium), KErrNone, + _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(enumContextsInfStatus.Int(), KErrNone, + _L("RPacketService::EnumerateContextsInNif failed.")); + ASSERT_EQUALS(count,2,_L("RPacketService::EnumerateContextsInNif did not return correct number of NIFs.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns aContextName = name of primary context + TBuf<200> contextName; + TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(getContextNameInNifStatus); + packetService.GetContextNameInNif(getContextNameInNifStatus,contextId,0,contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, + _L("RPacketService::GetContextNameInNif failed.")); + ASSERT_EQUALS_DES16(contextName,contextId,_L("RPacketService::GetContextNameInNif did not returned the expected value.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns aContextName = name of secondary context + packetService.GetContextNameInNif(getContextNameInNifStatus,contextId,1,contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, + _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, + _L("RPacketService::GetContextNameInNif failed.")); + ASSERT_EQUALS_DES16(contextName,secondaryContextId,_L("RPacketService::GetContextNameInNif did not returned the expected value.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for secondary context's status change + TExtEtelRequestStatus secondaryNotifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(secondaryNotifyContextStChStatus); + RPacketContext::TContextStatus secondaryPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(secondaryNotifyContextStChStatus, secondaryPacketContextStatus); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of primary context + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 10047); + ASSERT_EQUALS(1,0, _L("Test leaving because it will cause TSY crash, remove this when defect is fixed")); + TEST_CHECK_POINT_L(_L("test leaving...")); + TExtEtelRequestStatus deactivateNifStatus(packetService, EPacketDeactivateNIF); + CleanupStack::PushL(deactivateNifStatus); + packetService.DeactivateNIF(deactivateNifStatus,contextId); + ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNifStatus, ETimeMedium), KErrNone, + _L("RPacketService::DeactivateNIF timed out.")); + ASSERT_EQUALS(deactivateNifStatus.Int(), KErrNone, + _L("RPacketService::DeactivateNIF failed.")); + + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for primary context completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for primary context returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + secondaryNotifyContextStChStatus, + secondaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + // -> EStatusInactive + secondaryPacketContext.NotifyStatusChange(secondaryNotifyContextStChStatus, secondaryPacketContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + secondaryNotifyContextStChStatus, + secondaryPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for secondary context returns EStatusInactive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusAttached; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusAttached + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + StartCleanup(); + + // Pop: + // deactivateNifStatus + // notifyServiceStChStatus + // secondaryNotifyContextStChStatus + // notifyContextStChStatus + // getContextNameInNifStatus + // enumContextsInfStatus + // getNifInfoStatus + // enumerateNifsStatus + // notifyContextStatus + CleanupStack::PopAndDestroy(9,¬ifyContextStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0030::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0030"); + } + + + +CCTSYIntegrationTestPacketContext0031::CCTSYIntegrationTestPacketContext0031(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0031::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0031::~CCTSYIntegrationTestPacketContext0031() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0031::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0031 + * @SYMFssID BA/CTSY/PKTC-0031 + * @SYMTestCaseDesc Deactivate NIF when there is only one NIF. + * @SYMTestPriority High + * @SYMTestActions RPacketService::GetStatus, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateContexts, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF, RPacketService::GetNifInfo, RPacketService::DeactivateNIF + * @SYMTestExpectedResults Pass - All contexts in NIF deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify primary and secondary contexts in NIF are deactivated when secondary context name specified. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + //Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // === Ensure there is an active primary and secondary context. === + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Open a primary PDP context + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Open a secondary PDP context + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + // Activate the secondary context 1. + ActivateSecondaryPacketContextL(secondaryPacketContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Get context info + TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo); + CleanupStack::PushL(getContextInfo); + RPacketService::TContextInfo contextInfo; + TInt index = 0; + packetService.GetContextInfo(getContextInfo, index, contextInfo); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out")); + ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name")); + index = 1; + RPacketService::TContextInfo contextInfo2; + packetService.GetContextInfo(getContextInfo, index, contextInfo2); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out")); + ASSERT_TRUE(contextInfo2.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name")); + + // Check RPacketService::EnumerateNifs returns aCount = 1 + TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(nifsStatus); + TInt nifCount = 0; + const TInt wantedCount = 1; + packetService.EnumerateNifs(nifsStatus, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned with an error.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(nifInfoStatus); + TInt nifInfoCount = 0; + RPacketService::TNifInfoV2 nifInfoV2; + RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2); + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error")); + ASSERT_TRUE(nifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with valid name returned with an error")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2 + ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo returned with incorrect number of contexts")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo returned with incorrect NIF status")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext + // $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext + // Changed test procedure to check for EInternalContext instead of EExternalContext + ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type.")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns KErrArgument + nifInfoCount = 1; + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrArgument, _L("RPacketService::GetNifInfo did not failed.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = existing primary context name returns aCount = 2 + TExtEtelRequestStatus reqContextNifStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(reqContextNifStatus); + packetService.EnumerateContextsInNif(reqContextNifStatus, contextInfo.iName, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqContextNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(nifCount, 2, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 0 returns aContextName = name of primary context + TName contextName; + TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(getContextNameInNifStatus); + packetService.GetContextNameInNif(getContextNameInNifStatus, contextInfo.iName, 0, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned with an error.")); + ASSERT_EQUALS_DES16(contextName,contextInfo.iName,_L("RPacketService::GetContextNameInNif did not returned the expected value.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = existing primary context name and aIndex = 1 returns aContextName = name of secondary context + packetService.GetContextNameInNif(getContextNameInNifStatus,contextInfo.iName, 1, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeMedium), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS(getContextNameInNifStatus.Int(), KErrNone, _L("RPacketService::GetContextNameInNif returned with an error.")); + ASSERT_EQUALS_DES16(contextName, contextInfo2.iName,_L("RPacketService::GetContextNameInNif did not returned the expected value.")); + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // Post notification for primary context status change + TExtEtelRequestStatus notifyContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Post notification for secondary context status change + TExtEtelRequestStatus notifySecondaryContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecondaryContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifySecondaryContextStChStatus, secPacketContextStatus); + + // Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of secondary context + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 10047); + ASSERT_EQUALS(1,0, _L("Test leaving because it will cause TSY crash, remove this when defect is fixed")); + TEST_CHECK_POINT_L(_L("test leaving...")); + TExtEtelRequestStatus deactivateNifStatus(packetService, EPacketDeactivateNIF); + CleanupStack::PushL(deactivateNifStatus); + packetService.DeactivateNIF(deactivateNifStatus,contextInfo2.iName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNifStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out.")); + ASSERT_EQUALS(deactivateNifStatus.Int(), KErrNone, _L("RPacketService::DeactivateNIF returned with an error.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for primary context completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for primary context returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange for secondary context completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedSecondaryPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecondaryContextStChStatus, + secPacketContextStatus, + expectedSecondaryPacketContextStatus, + KErrNone); + + secondaryPacketContext.NotifyStatusChange(notifySecondaryContextStChStatus, secPacketContextStatus); + expectedSecondaryPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecondaryContextStChStatus, + secPacketContextStatus, + expectedSecondaryPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for secondary context returns EStatusInactive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::NotifyStatusChange completes with EStatusAttached + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusAttached; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusAttached + ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus return error.")); + ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusAttached, _L("RPacketService::GetStatus returns incorrect status.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop: + // notifyServiceStChStatus + // notifyContextStChStatus + // notifySecondaryContextStChStatus + // getContextInfo + // nifsStatus + // nifInfoStatus + // reqContextNifStatus + // getContextNameInNifStatus + // deactivateNifStatus + CleanupStack::PopAndDestroy(9,¬ifyServiceStChStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0031::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0031"); + } + + + +CCTSYIntegrationTestPacketContext0032::CCTSYIntegrationTestPacketContext0032(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0032::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0032::~CCTSYIntegrationTestPacketContext0032() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0032::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0032 + * @SYMFssID BA/CTSY/PKTC-0032 + * @SYMTestCaseDesc Deactivate NIF when there is more than one NIF. + * @SYMTestPriority High + * @SYMTestActions RPacketService::EnumerateNifs, RPacketService::GetNifInfo, RPacketService::GetContextNameInNif, RPacketContext::NotifyStatusChange, RPacketService::DeactivateNIF, RPacketService::GetStatus, RPacketService::EnumerateContextsInNif + * @SYMTestExpectedResults Pass - All contexts in NIF deactivated. Other contexts unaffected. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify primary and secondary contexts in NIF are deactivated when primary context name specified + +Verify contexts in another NIF are not affected. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // === Ensure there is an 2 primary contexts active. Each of these must have an active secondary context opened from it. (Primary 1 and secondary 1 in one NIF and primary 2 and secondary 2 in the second NIF.) === + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + //Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextPrimary1Status(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextPrimary1Status); + + // Open a primary PDP context 1 + TName primaryContextId1; + packetService.NotifyContextAdded(notifyContextPrimary1Status, primaryContextId1); + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextPrimary1Status, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextPrimary1Status.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextPrimary2Status(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextPrimary2Status); + + // Open a primary PDP context 2 + TName primaryContextId2; + packetService.NotifyContextAdded(notifyContextPrimary2Status, primaryContextId2); + RPacketContext& primaryPacketContext2 = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext2); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextPrimary2Status, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextPrimary2Status.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + + // Activate primary context 1. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + // Activate primary context 2. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext2, 2); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextSecondary1Status(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextSecondary1Status); + + // Open a secondary PDP context 1. + TName secondaryContextId1; + packetService.NotifyContextAdded(notifyContextSecondary1Status, secondaryContextId1); + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextSecondary1Status, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextSecondary1Status.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + + // Post notification for the RPacketService::NotifyContextAdded + TExtEtelRequestStatus notifyContextSecondary2Status(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextSecondary2Status); + + // Open a secondary PDP context 2. + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + + // Activate the secondary context 1. + CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext, KPrimaryPacketContext1, KSecondaryPacketContext1),_L("Can't activate the secondary context")); + + // Activate the secondary context 2. + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Check RPacketService::EnumerateNifs returns aCount = 2 + TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(nifsStatus); + TInt nifCount = 0; + const TInt wantedCount = 2; + packetService.EnumerateNifs(nifsStatus, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(nifCount, wantedCount, _L("RPacketService::EnumerateNifs returned with an error.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2 + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + // Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext + // Check RPacketService::GetNifInfo with aCount = 1 returns valid name in iContextName + // Check RPacketService::GetNifInfo with aCount = 1 returns iNumberOfContexts = 2 + // Check RPacketService::GetNifInfo with aCount = 1 returns iNifStatus = EStatusActive + // Check RPacketService::GetNifInfo with aCount = 1 returns valid address in iPdpAddress + // Check RPacketService::GetNifInfo with aCount = 1 returns EExternalContext + // Check RPacketService::GetNifInfo with aCount = 2 returns KErrArgument + TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(nifInfoStatus); + TInt nifInfoCount = 0; + RPacketService::TNifInfoV2 nifInfoV2; + RPacketService::TNifInfoV2Pckg nifInfoV2Pkg(nifInfoV2); + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoV2Pkg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeLong), KErrNone, _L("RPacketService::GetNifInfo returned an error")); + ASSERT_TRUE(nifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with aCount = 0 returned with invalid iContextName")); + ASSERT_EQUALS(nifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error")); + ASSERT_EQUALS(nifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo with iNifStatus returned with an error")); + ASSERT_TRUE(nifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address")); + ASSERT_EQUALS(nifInfoV2.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo with iContextType returned with an error")); + + nifInfoCount = 1; + RPacketService::TNifInfoV2 secondNifInfoV2; + RPacketService::TNifInfoV2Pckg secondNifInfoV2V2Pkg(secondNifInfoV2); + packetService.GetNifInfo(nifInfoStatus,nifInfoCount,secondNifInfoV2V2Pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with error.")); + ASSERT_TRUE(secondNifInfoV2.iContextName.Length() > 0, _L("RPacketService::GetNifInfo with aCount = 0 returned with invalid iContextName")); + ASSERT_EQUALS(secondNifInfoV2.iNumberOfContexts, 2, _L("RPacketService::GetNifInfo with iNumberOfContexts returned with an error")); + ASSERT_EQUALS(secondNifInfoV2.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo with iNifStatus returned with an error")); + ASSERT_TRUE(secondNifInfoV2.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address")); + ASSERT_EQUALS(secondNifInfoV2.iContextType, RPacketService::EExternalContext, _L("RPacketService::GetNifInfo with iContextType returned with an error")); + + nifInfoCount = 2; + packetService.GetNifInfo(nifInfoStatus,nifInfoCount,nifInfoV2Pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrArgument, _L("RPacketService::GetNifInfo did not returned with error.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 1 returns aCount = 2 + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 2 returns aCount = 2 + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 1 returns aCount = 2 + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 2 returns aCount = 2 + TInt wantedNifCount = 2; + TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(enumerateContextsInNifStatus); + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId1, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected.")); + + nifCount = 0; + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId2, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected.")); + + nifCount = 0; + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, secondaryContextId1, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketContext::EnumerateContextsInNif did not return 2 as expected.")); + + nifCount = 0; + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 0 returns aContextName = name of primary context 1 + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 1 returns aContextName = name of secondary context 1 + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 0 returns aContextName = name of primary context 1 + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 1 returns aContextName = name of secondary context 1 + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 0 returns aContextName = name of primary context 2 + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 1 returns aContextName = name of secondary context 2 + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 0 returns aContextName = name of primary context 2 + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 1 returns aContextName = name of secondary context 2 + TExtEtelRequestStatus contextNameNifsStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(contextNameNifsStatus); + TInt index = 0; + TName returnedContextName; + packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId1, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error")); + ASSERT_EQUALS_DES16(returnedContextName, primaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + index = 1; + packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId1, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error")); + ASSERT_EQUALS_DES16(returnedContextName, secondaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + index = 0; + packetService.GetContextNameInNif(contextNameNifsStatus, secondaryContextId1, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error")); + ASSERT_EQUALS_DES16(returnedContextName, primaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + index = 1; + packetService.GetContextNameInNif(contextNameNifsStatus, secondaryContextId1, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error")); + ASSERT_EQUALS_DES16(returnedContextName, secondaryContextId1, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + index = 0; + packetService.GetContextNameInNif(contextNameNifsStatus, primaryContextId2, index, returnedContextName ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextNameNifsStatus, ETimeLong), KErrNone, _L("RPacketContext::GetContextNameInNif timed out.")); + ASSERT_EQUALS(contextNameNifsStatus.Int(), KErrNone, _L("RPacketContext::GetContextNameInNif returned error")); + ASSERT_EQUALS_DES16(returnedContextName, primaryContextId2, _L("RPacketContext::GetContextNameInNif with aExistingContextName = existing context name returned with an error")); + + index = 1; + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + + index = 0; + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + + index = 1; + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + + // Post notifications for primary & secondary context status changes + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + TExtEtelRequestStatus notifyprimaryContextStChStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyprimaryContextStChStatus); + RPacketContext::TContextStatus primaryPacketContextStatus; + primaryPacketContext.NotifyStatusChange(notifyprimaryContextStChStatus, primaryPacketContextStatus); + + TExtEtelRequestStatus notifyprimary2ContextStChStatus(primaryPacketContext2, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyprimary2ContextStChStatus); + RPacketContext::TContextStatus primaryPacketContext2Status; + primaryPacketContext2.NotifyStatusChange(notifyprimary2ContextStChStatus, primaryPacketContext2Status); + + TExtEtelRequestStatus notifySecondaryContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecondaryContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifySecondaryContextStChStatus, secPacketContextStatus); + + + // Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of primary 2 + TExtEtelRequestStatus deactivateNifStatus(packetService, EPacketDeactivateNIF); + CleanupStack::PushL(deactivateNifStatus); + packetService.DeactivateNIF(deactivateNifStatus,primaryContextId2); + ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNifStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out.")); + ASSERT_EQUALS(deactivateNifStatus.Int(), KErrNone, _L("RPacketService::DeactivateNIF returned with error.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for primary 2 completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext2, + notifyprimary2ContextStChStatus, + primaryPacketContext2Status, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext2.NotifyStatusChange(notifyprimary2ContextStChStatus, primaryPacketContext2Status); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext2, + notifyprimary2ContextStChStatus, + primaryPacketContext2Status, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for primary 2 returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext2.GetStatus(primaryPacketContext2Status), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(primaryPacketContext2Status, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange for secondary 2 completes with EStatusDeactivating -> EStatusInactive + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + + // Check RPacketContext::GetStatus for secondary 2 returns EStatusInactive + // Check RPacketContext::GetStatus for primary 1 returns EStatusActive + // Check RPacketContext::GetStatus for secondary 1 returns EStatusActive + // $CTSYProblem LTSY dose not allow us to initialise 4 packets contexts + ASSERT_EQUALS(primaryPacketContext.GetStatus(primaryPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(primaryPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop: + // deactivateNifStatus + // notifySecondaryContextStChStatus + // notifyprimary2ContextStChStatus + // notifyprimaryContextStChStatus + // contextNameNifsStatus + // enumerateContextsInNifStatus + // nifInfoStatus + // nifsStatus + // notifyContextSecondary2Status + // notifyContextSecondary1Status + // notifyContextPrimary2Status + // notifyContextPrimary1Status + CleanupStack::PopAndDestroy(12,¬ifyContextPrimary1Status); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0032::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0032"); + } + + + +CCTSYIntegrationTestPacketContext0033::CCTSYIntegrationTestPacketContext0033(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0033::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0033::~CCTSYIntegrationTestPacketContext0033() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0033::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0033 + * @SYMFssID BA/CTSY/PKTC-0033 + * @SYMTestCaseDesc Deactivate NIF specifying unknown context name. + * @SYMTestPriority High + * @SYMTestActions RPacketService::DeactivateNIF, RPacketContext::GetStatus + * @SYMTestExpectedResults Pass - No NIFs deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context status unaffected. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is an active primary context. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL(KMainServer, KMainPhone, KMainPacketService, KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckServiceStatus; + ASSERT_EQUALS(packetService.GetStatus(pckServiceStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus did not return EStatusActive as expected.")); + + // Check RPacketContext::GetStatus returns EStatusActive + RPacketContext::TContextStatus pckContextStatus; + ASSERT_EQUALS(primaryPacketContext.GetStatus(pckContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(pckContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return EStatusActive as expected.")); + + // Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = unknown context name + TExtEtelRequestStatus deactiveNIFStatus(packetService, EPacketDeactivateNIF); + CleanupStack::PushL(deactiveNIFStatus); + RPacketService::TContextInfo unknownContextInfo; + unknownContextInfo.iName = _L("unknown123abc"); + packetService.DeactivateNIF(deactiveNIFStatus, unknownContextInfo.iName); + + // Check error is returned. + ASSERT_EQUALS(WaitForRequestWithTimeOut(deactiveNIFStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out.")); + ASSERT_TRUE(deactiveNIFStatus.Int() != KErrNone, _L("RPacketService::DeactivateNIF did not return error as expected.")); + + // Check RPacketService::GetStatus returns EStatusActive + ASSERT_EQUALS(packetService.GetStatus(pckServiceStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus did not return EStatusActive as expected.")); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(primaryPacketContext.GetStatus(pckContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(pckContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus did not return EStatusActive as expected.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // deactiveNIFStatus + CleanupStack::PopAndDestroy(1, &deactiveNIFStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0033::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0033"); + } + + + +CCTSYIntegrationTestPacketContext0034::CCTSYIntegrationTestPacketContext0034(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0034::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0034::~CCTSYIntegrationTestPacketContext0034() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0034::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0034 + * @SYMFssID BA/CTSY/PKTC-0034 + * @SYMTestCaseDesc Deactivate NIF when there is more than one NIF. + * @SYMTestPriority High + * @SYMTestActions RPacketService::NotifyAttachModeChange, RPacketService::GetAttachMode, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::SetConfig, RPacketContext::Activate, RPacketService::EnumerateContextsInNif, RPacketService::EnumerateContexts, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::DeactivateNIF, RPacketService::GetNifInfo + * @SYMTestExpectedResults Pass - All contexts in NIF deactivated. Other contexts unaffected. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify primary and secondary contexts in NIF are deactivated when secondary context name specified + +Verify contexts in another NIF are not affected. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + //Check if we are on a simulated network + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error.")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure there is an 2 primary contexts active. Each of these must have an active secondary context opened from it. (Primary 1 and secondary 1 in one NIF and primary 2 and secondary 2 in the second NIF.) + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + TName primaryContextId1; + TName primaryContextId2; + + TExtEtelRequestStatus notifyContextStatusPrimary1(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatusPrimary1); + + packetService.NotifyContextAdded(notifyContextStatusPrimary1, primaryContextId1); + RPacketContext& primaryPacketContext1 = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusPrimary1, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextStatusPrimary1.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + CHECK_TRUE_L(primaryContextId1.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name.")); + + TExtEtelRequestStatus notifyContextStatusPrimary2(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatusPrimary2); + + packetService.NotifyContextAdded(notifyContextStatusPrimary2, primaryContextId2); + RPacketContext& primaryPacketContext2 = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext2); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusPrimary2, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextStatusPrimary2.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + CHECK_TRUE_L(primaryContextId2.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name.")); + + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext2, 2); + + TName secondaryContextId1; + TName secondaryContextId2; + TExtEtelRequestStatus notifyContextStatusSecondary1(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatusSecondary1); + + packetService.NotifyContextAdded(notifyContextStatusSecondary1, secondaryContextId1); + RPacketContext& secondaryPacketContext1 = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusSecondary1, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextStatusSecondary1.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + CHECK_TRUE_L(secondaryContextId1.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name.")); + + TExtEtelRequestStatus notifyContextStatusSecondary2(packetService, EPacketNotifyContextAdded); + CleanupStack::PushL(notifyContextStatusSecondary2); + + packetService.NotifyContextAdded(notifyContextStatusSecondary2, secondaryContextId2); + // $CTSYProblem This test cannot be run since LTSY does not allow us to initialise 4 packets contexts + CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY does not allow us to initialise 4 packets contexts")); + RPacketContext& secondaryPacketContext2 = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext2, + KSecondaryPacketContext2); + + CHECK_EQUALS_L(WaitForRequestWithTimeOut(notifyContextStatusSecondary2, ETimeMedium), KErrNone, _L("RPacketService::NotifyContextAdded did not complete.")); + CHECK_EQUALS_L(notifyContextStatusSecondary2.Int(), KErrNone, _L("RPacketService::NotifyContextAdded returned with error status.")); + CHECK_TRUE_L(secondaryContextId2.Length() > 0, _L("RPacketService::NotifyContextAdded returned with invalid context name.")); + + CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext1), _L("Can't activate the secondary context")); + CHECK_TRUE_L(ActivateSecondaryPacketContextL(secondaryPacketContext2), _L("Can't activate the secondary context")); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Check RPacketService::EnumerateNifs returns aCount = 2 + TExtEtelRequestStatus nifsStatus(packetService, EPacketEnumerateNifs); + CleanupStack::PushL(nifsStatus); + TInt nifCount = 0; + TInt wantedNifCount = 2; + packetService.EnumerateNifs(nifsStatus, nifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifsStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateNifs timed out.")); + ASSERT_EQUALS(nifsStatus.Int(), KErrNone, _L("RPacketService::EnumerateNifs returned with error.")); + ASSERT_EQUALS(nifCount, wantedNifCount, _L("RPacketService::EnumerateNifs returned wrong NIF count.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + TInt nifInfoCount = 0; + TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(nifInfoStatus); + RPacketService::TNifInfoV2 nifInfo; + RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo); + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with error.")); + ASSERT_EQUALS_DES16(nifInfo.iContextName, primaryContextId1, _L("RPacketService::GetNifInfo returned with invalid context name.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNumberOfContexts = 2 + TInt wantedNumberOfContexts = 2; + ASSERT_EQUALS(nifInfo.iNumberOfContexts, wantedNumberOfContexts, _L("RPacketService::GetNifInfo returned wrong number of contexts.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfo.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo did not return EStatusActive as expected.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfo.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address.")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns EExternalContext + // $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext + // Changed test procedure to check for EInternalContext instead of EExternalContext + ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type.")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns valid name in iContextName + nifInfoCount = 1; + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with error.")); + ASSERT_EQUALS_DES16(nifInfo.iContextName, primaryContextId2, _L("RPacketService::GetNifInfo returned with invalid context name.")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns iNumberOfContexts = 2 + ASSERT_EQUALS(nifInfo.iNumberOfContexts,2,_L("RPacketService::GetNifInfo wrong number of contexts.")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns iNifStatus = EStatusActive + ASSERT_EQUALS(nifInfo.iNifStatus, RPacketContext::EStatusActive, _L("RPacketService::GetNifInfo did not return EStatusActive as expected.")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns valid address in iPdpAddress + ASSERT_TRUE(nifInfo.iPdpAddress.Length() > 0, _L("RPacketService::GetNifInfo returned with invalid pdp address.")); + + // Check RPacketService::GetNifInfo with aCount = 1 returns EExternalContext + // $CTSYProblem:RPacketService::GetNifInfo always returns EInternalContext + // Changed test procedure to check for EInternalContext instead of EExternalContext + ASSERT_EQUALS(nifInfo.iContextType, RPacketService::EInternalContext, _L("RPacketService::GetNifInfo returned wrong context type.")); + + // Check RPacketService::GetNifInfo with aCount = 2 returns KErrArgument + nifInfoCount = 2; + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrArgument, _L("RPacketService::GetNifInfo did not returned an error.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 1 returns aCount = 2 + TInt wantedCount = 2; + TInt contextsInNifCount = 0; + TExtEtelRequestStatus enumerateContextsInNifStatus(packetService, EPacketEnumerateContextsInNif); + CleanupStack::PushL(enumerateContextsInNifStatus); + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId1, contextsInNifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error.")); + ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = primary 2 returns aCount = 2 + contextsInNifCount = 0; + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, primaryContextId2, contextsInNifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error.")); + ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 1 returns aCount = 2 + contextsInNifCount = 0; + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, secondaryContextId1, contextsInNifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error.")); + ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected.")); + + // Check RPacketService::EnumerateContextsInNif with aExistingContextName = secondary 2 returns aCount = 2 + contextsInNifCount = 0; + packetService.EnumerateContextsInNif(enumerateContextsInNifStatus, secondaryContextId2, contextsInNifCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumerateContextsInNifStatus, ETimeLong), KErrNone, _L("RPacketService::EnumerateContextsInNif timed out.")); + ASSERT_EQUALS(enumerateContextsInNifStatus.Int(), KErrNone, _L("RPacketService::EnumerateContextsInNif returned with error.")); + ASSERT_EQUALS(contextsInNifCount, wantedCount, _L("RPacketService::EnumerateContextsInNif did not return 2 as expected.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 0 returns aContextName = name of primary context 1 + const TInt index0 = 0; + const TInt index1 = 1; + TName contextName; + TExtEtelRequestStatus getContextNameInNifStatus(packetService, EPacketGetContextNameInNif); + CleanupStack::PushL(getContextNameInNifStatus); + packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId1, index0, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, primaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 1 and aIndex = 1 returns aContextName = name of secondary context 1 + packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId1, index1, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, secondaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 0 returns aContextName = name of primary context 1 + packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId1, index0, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, primaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 1 and aIndex = 1 returns aContextName = name of secondary context 1 + packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId1, index1, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, secondaryContextId1, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 0 returns aContextName = name of primary context 2 + packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId2, index0, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, primaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = primary 2 and aIndex = 1 returns aContextName = name of secondary context 2 + packetService.GetContextNameInNif(getContextNameInNifStatus, primaryContextId2, index1, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, secondaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 0 returns aContextName = name of primary context 2 + packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId2, index0, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, primaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Check RPacketService::GetContextNameInNif with aExistingContextName = secondary 2 and aIndex = 1 returns aContextName = name of secondary context 2 + packetService.GetContextNameInNif(getContextNameInNifStatus, secondaryContextId2, index1, contextName); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextNameInNifStatus, ETimeLong), KErrNone, _L("RPacketService::GetContextNameInNif timed out.")); + ASSERT_EQUALS_DES16(contextName, secondaryContextId2, _L("RPacketService::GetContextNameInNif returned context name which doesn't match with the existing context name.")); + + // Post notifications for primary2 and secondary2 context's status change + TExtEtelRequestStatus notifyPrimaryContext2StChStatus(primaryPacketContext2, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyPrimaryContext2StChStatus); + RPacketContext::TContextStatus primaryPacketContext2Status; + primaryPacketContext2.NotifyStatusChange(notifyPrimaryContext2StChStatus, primaryPacketContext2Status); + + TExtEtelRequestStatus notifySecondaryContext2StChStatus(secondaryPacketContext2, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecondaryContext2StChStatus); + RPacketContext::TContextStatus secondaryPacketContext2Status; + secondaryPacketContext2.NotifyStatusChange(notifySecondaryContext2StChStatus, secondaryPacketContext2Status); + + // Post notifications for primary1 context status change + TExtEtelRequestStatus notifyPrimaryContext1StChStatus(primaryPacketContext1, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyPrimaryContext1StChStatus); + RPacketContext::TContextStatus primaryPacketContext1Status; + primaryPacketContext1.NotifyStatusChange(notifyPrimaryContext1StChStatus, primaryPacketContext1Status); + + // Deactivate the NIF with RPacketService::DeactivateNIF and aContextName = name of secondary 2 + TExtEtelRequestStatus deactivateNIFStatus(packetService, EPacketDeactivateNIF); + CleanupStack::PushL(deactivateNIFStatus); + packetService.DeactivateNIF(deactivateNIFStatus, secondaryContextId2); + ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateNIFStatus, ETimeMedium), KErrNone, _L("RPacketService::DeactivateNIF timed out.")); + ASSERT_EQUALS(deactivateNIFStatus.Int(), KErrNone, _L("RPacketService::DeactivateNIF returned with error..")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for primary 2 completes with EStatusDeactivating -> EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext2, + notifyPrimaryContext2StChStatus, + primaryPacketContext2Status, + expectedPacketContextStatus, + KErrNone); + + primaryPacketContext2.NotifyStatusChange(notifyPrimaryContext2StChStatus, primaryPacketContext2Status); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + primaryPacketContext2, + notifyPrimaryContext2StChStatus, + primaryPacketContext2Status, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for primary 2 returns EStatusInactive + ASSERT_EQUALS(primaryPacketContext2.GetStatus(primaryPacketContext2Status), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(primaryPacketContext2Status, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::NotifyStatusChange for secondary 2 completes with EStatusDeactivating -> EStatusInactive + expectedPacketContextStatus = RPacketContext::EStatusDeactivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifySecondaryContext2StChStatus, + secondaryPacketContext2Status, + expectedPacketContextStatus, + KErrNone); + + secondaryPacketContext2.NotifyStatusChange(notifySecondaryContext2StChStatus, secondaryPacketContext2Status); + expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext2, + notifySecondaryContext2StChStatus, + secondaryPacketContext2Status, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for secondary 2 returns EStatusInactive + ASSERT_EQUALS(secondaryPacketContext2.GetStatus(secondaryPacketContext2Status), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secondaryPacketContext2Status, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::GetStatus for primary 1 returns EStatusActive + ASSERT_EQUALS(primaryPacketContext1.GetStatus(primaryPacketContext1Status), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(primaryPacketContext1Status, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::GetStatus for secondary 1 returns EStatusActive + RPacketContext::TContextStatus secondaryPacketContext1Status; + ASSERT_EQUALS(secondaryPacketContext1.GetStatus(secondaryPacketContext1Status), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secondaryPacketContext1Status, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // pop + // notifyContextStatusPrimary1 + // notifyContextStatusPrimary1 + // notifyContextStatusSecondary1 + // notifyContextStatusSecondary2 + // nifsStatus + // nifInfoStatus + // enumerateContextsInNifStatus + // getContextNameInNifStatus + // notifyPrimaryContext1StChStatus + // notifySecondaryContext2StChStatus + // notifyPrimaryContext1StChStatus + // deactivateNIFStatus + CleanupStack::PopAndDestroy(12,¬ifyContextStatusPrimary1); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0034::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0034"); + } + + + +CCTSYIntegrationTestPacketContext0035::CCTSYIntegrationTestPacketContext0035(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0035::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0035::~CCTSYIntegrationTestPacketContext0035() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0035::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0035 + * @SYMFssID BA/CTSY/PKTC-0035 + * @SYMTestCaseDesc Enumerate NIFs. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketService::EnumerateNifs, RPacketContext::NotifyStatusChange, RPacketContext::SetConfig, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Number of NIFs correct. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify number of NIFs and NIF info correct as contexts are activated. Verify that for each primary context that is activated, number of NIFs increases by 1, if a secondary context is activated number of NIFs does not change. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure packet service is attached, + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new primary context (context 1). + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + + // === Add QoS === + + // Open a new QoS from the secondary context + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // Set a valid context config using RPacketContext::SetConfig + + // Activate packet context with RPacketContext::Activate + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // Check RPacketService::EnumerateNifs returns aCount = 1 + + // Open a new primary context (context 2) + + // Add a TPacketFilterV3 packet filter to context 2 using RPacketContext::AddPacketFilter + + // Open a new QoS from context 2 + + // Get R5 QoS profile capabilities with RPacketQoS::GetProfileCapabilities + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSR5Requested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // Set a valid context config for context 2 using RPacketContext::SetConfig + + // Activate packet context for context 2 with RPacketContext::Activate + + // Check RPacketContext::NotifyStatusChange for context 2 completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for context 2 returns EStatusActive + + // Check RPacketService::EnumerateNifs returns aCount = 2 + + // Open a new secondary context from context 1 (this is context 3) + + // Set a valid context config for context 3 using RPacketContext::SetConfig + + // Activate packet context for context 3 with RPacketContext::Activate + + // Check RPacketContext::NotifyStatusChange for context 3 completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for context 3 returns EStatusActive + + // Check RPacketService::EnumerateNifs returns aCount = 2 + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0035::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0035"); + } + + + +CCTSYIntegrationTestPacketContext0036::CCTSYIntegrationTestPacketContext0036(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0036::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0036::~CCTSYIntegrationTestPacketContext0036() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0036::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0036 + * @SYMFssID BA/CTSY/PKTC-0036 + * @SYMTestCaseDesc Activate a primary context with packet filter and QoS set up. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketQoS::OpenNewQoS, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileParameters, RPacketQoS::GetProfileCapabilities, RPacketContext::GetProfileName + * @SYMTestExpectedResults Pass - Packet filter added to context and context activated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify packet filter info and QoS profile info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to the packet service + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new primary context + + // Add a TPacketFilterV2 packet filter to the primary context using RPacketContext::AddPacketFilter + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns same packet filter info added to the context + + // Open a new QoS from the primary context + + // Get profile capabilities with RPacketCotnext::GetProfileCapabilities with aProfileCaps as a packaged RPacketContext::TQoSCapsGPRS + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSR5Requested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + + // Set a valid context config using RPacketContext::SetConfig + + // Activate packet context with RPacketContext::Activate + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns same packet filter info added to the context + + // Repeat test with RPacketContext::TQoSCapsR99_R4 and RPacketContext::TQoSCapsR5 instead of RPacketContext::TQoSCapsGPRS + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0036::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0036"); + } + + + +CCTSYIntegrationTestPacketContext0037::CCTSYIntegrationTestPacketContext0037(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0037::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0037::~CCTSYIntegrationTestPacketContext0037() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0037::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0037 + * @SYMFssID BA/CTSY/PKTC-0037 + * @SYMTestCaseDesc Modify a primary context with packet filter and QoS. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::ModifyActiveContext, RPacketContext::GetProfileParameters, RPacketContext::GetProfileName, RPacketContext::RemovePacketFilter, RPacketContext::EnumeratePacketFilters, RPacketQoS::SetProfileParameters, RPacketQoS::OpenNewQoS, RPacketContext::AddPacketFilter + * @SYMTestExpectedResults Pass - Context is modified. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify packet filter info and QoS profile info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is an active primary context. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Add a TPacketFilterV2packet filter to the primary context using RPacketContext::AddPacketFilter + + // Open a new QoS from the primary context + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + + // Modify the active context with RPacketContext::ModifyActiveContext + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns same packet filter info added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns KErrArgument + + // Check RPacketContext::GetProfileParameters returns TQoSGPRSNegotiated parameters. + + // Remove packet filter with RPacketContext::RemovePacketFilter. + + // Modify the active context with RPacketContext::ModifyActiveContext + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns KErrArgument + + // Repeat test with TQoSR99_R4Requested and TQoSR5Requested types in RPacketQoS::SetProfileParameters and checking for TQoSR99_R4Negotiated and TQoSR5Negotiated in RPacketContext::GetProfileParameters respectively. + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0037::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0037"); + } + + + +CCTSYIntegrationTestPacketContext0038::CCTSYIntegrationTestPacketContext0038(CEtelSessionMgr& aEtelSessionMgr, const TDesC& aName) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(aName); + if(aName.Find(_L("GRPS")) != KErrNotFound) + { + iTestType = EQoSGPRS; + } + else if(aName.Find(_L("R4")) != KErrNotFound) + { + iTestType = EQoSR4; + } + else if(aName.Find(_L("R5")) != KErrNotFound) + { + iTestType = EQoSR5; + } + } + +CCTSYIntegrationTestPacketContext0038::~CCTSYIntegrationTestPacketContext0038() +/** + * Destructor. + */ + { + } + + +template + TBool CCTSYIntegrationTestPacketContext0038::ActiveContextL(RPacketContext &aPacketContext, + RPacketQoS &aPacketQoS, + PARAMETERS &aParameters, + CAPABILITIES &aCapabilities, + NEGOTIATED &aNegotiated) + +/** + * Activate a secondary context. This is actually a single context activation method, + * the test activate the context three times, each with diffrent type of parameters, capabilities and negotiation objects + * + * @param aPacketContext Reference to the secondary context session. + * @param aPacketQoS Reference to the packet Quality of Service session. + * @param aParameters Reference to the QoS parameters. Must be TQoSGPRSRequested, TQoSR99_R4Requested or TQoSR5Requested. + * @param aCapabilities Reference to the QoS capabilities. Must be a TQoSCapsGPRS, TQoSCapsR99_R4 or TQoSCapsR5 respectivley. + * @param aNegotiated Reference to the QoS nagotiated. Must be a TQoSGPRSNegotiated, t99_r4Negotiated or r5Negotiated respectivley. + * + * @return ETrue if the activation went well + */ + { + TBool ret = ETrue; + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,1), KErrNone, + _L("RPacketContext::AddPacketFilter returned with error status")); + + // Get profile capabilities with RPacketCotnext::GetProfileCapabilities with aProfileCaps as a packaged CAPABILITIES + TExtEtelRequestStatus getProfileCapStatus(aPacketQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + TPckg qosCapsPckg(aCapabilities); + aPacketQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::GetProfileCapabilities timed out.")); + LOCAL_ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, + _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and PARAMETERS with parameters within range returned by RPacketQoS::GetProfileCapabilities + TPckg qosReqPckg(aParameters); + FillParametersFromCapabilities(aParameters,aCapabilities); + TExtEtelRequestStatus setProfileParamStatus(aPacketQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + aPacketQoS.SetProfileParameters(setProfileParamStatus, qosReqPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::SetProfileParameters timed out.")); + LOCAL_ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, + _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + TName profileName; + LOCAL_ASSERT_EQUALS(aPacketContext.GetProfileName(profileName),KErrNone, + _L("RPacketContext::GetProfileName returned with error status.")); + LOCAL_ASSERT_TRUE(profileName.Length()>0, + _L("RPacketContext::GetProfileName name length is 0.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(aPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate the secondary context. + TExtEtelRequestStatus contextActivateStatus(aPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + aPacketContext.Activate(contextActivateStatus); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeMedium), KErrNone, + _L("RPacketContext::Activate timed out.")); + LOCAL_ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + aPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not.")); + aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + aPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + LOCAL_ASSERT_EQUALS(aPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + TInt count=-1; + TExtEtelRequestStatus enumeratePacketFiltersChStatus(aPacketContext, EPacketContextEnumeratePacketFilters); + CleanupStack::PushL(enumeratePacketFiltersChStatus); + aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersChStatus,count); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersChStatus, ETimeShort), KErrNone, + _L("RPacketContext::EnumeratePacketFilters timed out")); + LOCAL_ASSERT_EQUALS(enumeratePacketFiltersChStatus.Int(), KErrNone, + _L("RPacketContext::EnumeratePacketFilters returned an error")); + LOCAL_ASSERT_EQUALS(count, 1, + _L("RPacketContext::EnumeratePacketFilters returned wrong number")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter added to the context + TExtEtelRequestStatus getPacketFilterInfoStatus(aPacketContext, EPacketContextGetPacketFilterInfo); + CleanupStack::PushL(getPacketFilterInfoStatus); + RPacketContext::TPacketFilterV2 packetFilter; + RPacketContext::TPacketFilterV2Pckg packetFilterPkg(packetFilter); + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + RPacketContext::TPacketFilterV2 defaultPacketFilterInfo; + FillPacketFilter(defaultPacketFilterInfo,1); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns KErrArgument + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, + _L("RPacketContext::GetPacketFilterInfo did not returned an error")); + + // Check RPacketContext::GetProfileParameters returns NEGOTIATED parameters. + TExtEtelRequestStatus getProfileParametersStatus(aPacketQoS, EPacketQoSGetProfileParams); + CleanupStack::PushL(getProfileParametersStatus); + TPckg negotiatedPckg(aNegotiated); + aPacketQoS.GetProfileParameters(getProfileParametersStatus,negotiatedPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeShort), KErrNone, + _L("RPacketQoS::GetProfileParameters timed out")); + LOCAL_ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, + _L("RPacketQoS::GetProfileParameters returned an error")); + + // Deactivate context. + TExtEtelRequestStatus deactivateContextStatus(aPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(getProfileParametersStatus); + aPacketContext.Deactivate(deactivateContextStatus); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(deactivateContextStatus, ETimeMedium), KErrNone, + _L("RPacketContext::Deactivate timed out.")); + LOCAL_ASSERT_EQUALS(deactivateContextStatus.Int(), KErrNone, + _L("RPacketContext::Deactivate returned with error status.")); + + + iEtelSessionMgr.ReleaseSecondaryPacketContext( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext3); + + // Pop: + // deactivateContextStatus + // getProfileParametersStatus + // getPacketFilterInfoStatus + // enumeratePacketFiltersChStatus + // contextActivateStatus + // notifyContextStChStatus + // setProfileParamStatus + // getProfileCapStatus + CleanupStack::PopAndDestroy(8,&getProfileCapStatus); + + return ret; + } +TVerdict CCTSYIntegrationTestPacketContext0038::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0038 + * @SYMFssID BA/CTSY/PKTC-0038 + * @SYMTestCaseDesc Activate a secondary context with packet filter and QoS set up. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetProfileName, RPacketContext::GetStatus, RPacketContext::EnumeratePacketFilters, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext, RPacketQoS::OpenNewQoS, RPacketQoS::SetProfileParameters, RPacketContext::RemovePacketFilter + * @SYMTestExpectedResults Pass - Packet filter added and removed successfully.Context active. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify packet filter info and QoS profile info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + DEBUG_PRINTF2(_L("Starting with type %d"),iTestType); + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure there is an active primary context. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new secondary context. + RPacketContext& secondaryPacketContext1 = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS1 = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + RPacketQoS::TQoSGPRSRequested gprsRequested; + RPacketQoS::TQoSCapsGPRS capsGPRS; + RPacketQoS::TQoSGPRSNegotiated gprsNegotiated; + + RPacketQoS::TQoSR99_R4Requested r99_r4Requested; + RPacketQoS::TQoSCapsR99_R4 capsR99_R4; + RPacketQoS::TQoSR99_R4Negotiated t99_r4Negotiated; + t99_r4Negotiated.iTrafficClass = RPacketQoS::ETrafficClassUnspecified; + t99_r4Negotiated.iDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified; + t99_r4Negotiated.iDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified; + //t99_r4Negotiated.iMaxSDUSize = 500; //not sure + //t99_r4Negotiated.iMaxRate.iUplinkRate = 5000; //not sure + //t99_r4Negotiated.iMaxRate.iDownlinkRate = 5000; //not sure + t99_r4Negotiated.iBER = RPacketQoS::EBERUnspecified; + t99_r4Negotiated.iSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + t99_r4Negotiated.iTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + //t99_r4Negotiated.iTransferDelay = 110; //not sure + //t99_r4Negotiated.iGuaranteedRate.iUplinkRate = 5000; //not sure + //t99_r4Negotiated.iGuaranteedRate.iDownlinkRate = 5000; //not sure + + RPacketQoS::TQoSR5Requested r5Requested; + RPacketQoS::TQoSCapsR5 capsr5; + RPacketQoS::TQoSR5Negotiated r5Negotiated; + + switch(iTestType) + { + case EQoSGPRS: + //Activate The Context using TQoSGPRSRequested, TQoSCapsGPRS and TQoSGPRSNegotiated + ASSERT_TRUE(ActiveContextL(secondaryPacketContext1,packetQoS1,gprsRequested,capsGPRS,gprsNegotiated), + _L("CCTSYIntegrationTestPacketContext0038::ActiveContextL failed")); + break; + case EQoSR4: + ASSERT_TRUE(ActiveContextL(secondaryPacketContext1,packetQoS1,r99_r4Requested,capsR99_R4,t99_r4Negotiated), + _L("CCTSYIntegrationTestPacketContext0038::ActiveContextL failed")); + break; + case EQoSR5: + ASSERT_TRUE(ActiveContextL(secondaryPacketContext1,packetQoS1,r5Requested,capsr5,r5Negotiated), + _L("CCTSYIntegrationTestPacketContext0038::ActiveContextL failed")); + break; + default: + CHECK_TRUE_L(EFalse, _L("Wrong test type!")); + + } + + + // Repeat test with TQoSR99_R4Requested and TQoSR5Requested types in RPacketQoS::SetProfileParameters and checking for TQoSR99_R4Negotiated and TQoSR5Negotiated in RPacketContext::GetProfileParameters respectively. + + + //Activate The Context using TQoSR99_R4Requested, TQoSCapsR99_R4 and TQoSR99_R4Negotiated + + + //Activate The Context using TQoSR5Requested, TQoSCapsR5 and TQoSR5Negotiated + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0038::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0038"); + } + + + +CCTSYIntegrationTestPacketContext0039::CCTSYIntegrationTestPacketContext0039(CEtelSessionMgr& aEtelSessionMgr, const TDesC& aName) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(aName); + if(aName.Find(_L("GRPS")) != KErrNotFound) + { + iTestType = EQoSGPRS; + } + else if(aName.Find(_L("R4")) != KErrNotFound) + { + iTestType = EQoSR4; + } + else if(aName.Find(_L("R5")) != KErrNotFound) + { + iTestType = EQoSR5; + } + } + +CCTSYIntegrationTestPacketContext0039::~CCTSYIntegrationTestPacketContext0039() +/** + * Destructor. + */ + { + } + +template + TBool CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL(RPacketContext &aPacketContext, + RPacketQoS &aPacketQoS, + PARAMETERS &aParameters, + CAPABILITIES &aCapabilities, + NEGOTIATED &aNegotiated) +/** + * Activate and modify a secondary context. This is actually a single context activation and modification method, + * the test activate and modify the context three times, each with diffrent type of parameters, capabilities and negotiation objects + * + * @param aPacketContext Reference to the secondary context session. + * @param aPacketQoS Reference to the packet Quality of Service session. + * @param aParameters Reference to the QoS parameters. Must be TQoSGPRSRequested, TQoSR99_R4Requested or TQoSR5Requested. + * @param aCapabilities Reference to the QoS capabilities. Must be a TQoSCapsGPRS, TQoSCapsR99_R4 or TQoSCapsR5 respectivley. + * @param aNegotiated Reference to the QoS nagotiated. Must be a TQoSGPRSNegotiated, t99_r4Negotiated or r5Negotiated respectivley. + * + * @return ETrue if the activation went well + */ + { + TBool ret=ETrue; + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,1), KErrNone, + _L("RPacketContext::AddPacketFilter returned with error status")); + + // Add a second TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,2), KErrNone, + _L("RPacketContext::AddPacketFilter returned with error status")); + + // Get profile capabilities with RPacketCotnext::GetProfileCapabilities with aProfileCaps as a packaged CAPABILITIES + TExtEtelRequestStatus getProfileCapStatus(aPacketQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + TPckg qosCapsPckg(aCapabilities); + aPacketQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::GetProfileCapabilities timed out.")); + LOCAL_ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, + _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and PARAMETERS with parameters within range returned by RPacketQoS::GetProfileCapabilities + TPckg qosReqPckg(aParameters); + FillParametersFromCapabilities(aParameters,aCapabilities); + TExtEtelRequestStatus setProfileParamStatus(aPacketQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + aPacketQoS.SetProfileParameters(setProfileParamStatus, qosReqPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, + _L("RPacketQoS::SetProfileParameters timed out.")); + LOCAL_ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, + _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + TName profileName; + LOCAL_ASSERT_EQUALS(aPacketContext.GetProfileName(profileName),KErrNone, + _L("RPacketContext::GetProfileName returned with error status.")); + LOCAL_ASSERT_TRUE(profileName.Length()>0, + _L("RPacketContext::GetProfileName name length is 0.")); + + // === Activate a context with two packet filters and QoS === + + // Post notification for context's status change + TExtEtelRequestStatus notifyContextStChStatus(aPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate the secondary context. + TExtEtelRequestStatus contextActivateStatus(aPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + aPacketContext.Activate(contextActivateStatus); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeMedium), KErrNone, + _L("RPacketContext::Activate timed out.")); + LOCAL_ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, + _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + aPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActivating, _L("Packet Context's status expected to be EStatusActivating but is not.")); + aPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + aPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + LOCAL_ASSERT_EQUALS(aPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + LOCAL_ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 2 + TInt count=-1; + TExtEtelRequestStatus enumeratePacketFiltersChStatus(aPacketContext, EPacketContextEnumeratePacketFilters); + CleanupStack::PushL(enumeratePacketFiltersChStatus); + aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersChStatus,count); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersChStatus, ETimeShort), KErrNone, + _L("RPacketContext::EnumeratePacketFilters timed out")); + LOCAL_ASSERT_EQUALS(enumeratePacketFiltersChStatus.Int(), KErrNone, + _L("RPacketContext::EnumeratePacketFilters returned an error")); + LOCAL_ASSERT_EQUALS(count, 2, + _L("RPacketContext::EnumeratePacketFilters returned wrong number")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + TExtEtelRequestStatus getPacketFilterInfoStatus(aPacketContext, EPacketContextGetPacketFilterInfo); + CleanupStack::PushL(getPacketFilterInfoStatus); + RPacketContext::TPacketFilterV2 packetFilter; + RPacketContext::TPacketFilterV2Pckg packetFilterPkg(packetFilter); + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + RPacketContext::TPacketFilterV2 defaultPacketFilterInfo; + FillPacketFilter(defaultPacketFilterInfo,1); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo,2); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns KErrArgument + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,2,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, + _L("RPacketContext::GetPacketFilterInfo did not returned an error")); + + // Check RPacketContext::GetProfileParameters returns NEGOTIATED parameters. + TExtEtelRequestStatus getProfileParametersStatus(aPacketQoS, EPacketQoSGetProfileParams); + CleanupStack::PushL(getProfileParametersStatus); + TPckg negotiatedPckg(aNegotiated); + aPacketQoS.GetProfileParameters(getProfileParametersStatus,negotiatedPckg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeShort), KErrNone, + _L("RPacketQoS::GetProfileParameters timed out")); + LOCAL_ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, + _L("RPacketQoS::GetProfileParameters returned an error")); + + // === Add another packet filter and modify the context === + + // Add a third TPacketFilterV3 packet filter to the secondary context using RPacketContext::AddPacketFilter + LOCAL_ASSERT_EQUALS(AddPacketFilterV2ToContextL(aPacketContext,3), KErrNone, + _L("RPacketContext::AddPacketFilter returned with error status")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + // $CTSYProblem The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext + ERR_PRINTF1(_L("$CTSYProblem: The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext.")); + TExtEtelRequestStatus modifyActiveContextStatus(aPacketContext, EPacketContextModifyActiveContext); + CleanupStack::PushL(modifyActiveContextStatus); + aPacketContext.ModifyActiveContext(modifyActiveContextStatus); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, + _L("RPacketContext::ModifyActiveContext timed out.")); + LOCAL_ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, + _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 3 + aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersChStatus,count); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersChStatus, ETimeShort), KErrNone, + _L("RPacketContext::EnumeratePacketFilters timed out")); + LOCAL_ASSERT_EQUALS(enumeratePacketFiltersChStatus.Int(), KErrNone, + _L("RPacketContext::EnumeratePacketFilters returned an error")); + LOCAL_ASSERT_EQUALS(count, 3, + _L("RPacketContext::EnumeratePacketFilters returned wrong number")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo,1); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo,2); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,2,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo,3); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns KErrArgument + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,3,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, + _L("RPacketContext::GetPacketFilterInfo did not returned an error")); + + // === Remove a packet filter and modify the context === + + // Remove the third packet filter from the secondary context with RPacketContext::RemovePacketFilter + TExtEtelRequestStatus removePacketFilterStatus(aPacketContext, EPacketContextRemovePacketFilter); + CleanupStack::PushL(removePacketFilterStatus); + aPacketContext.RemovePacketFilter(removePacketFilterStatus,2); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone, + _L("RPacketContext::RemovePacketFilter timed out")); + LOCAL_ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone, + _L("RPacketContext::RemovePacketFilter returned an error")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + aPacketContext.ModifyActiveContext(modifyActiveContextStatus); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, + _L("RPacketContext::ModifyActiveContext timed out.")); + LOCAL_ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, + _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 2 + count=-1; + TExtEtelRequestStatus enumeratePacketFiltersStatus(aPacketContext, EPacketContextEnumeratePacketFilters); + CleanupStack::PushL(enumeratePacketFiltersStatus); + aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus,count); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeShort), KErrNone, + _L("RPacketContext::EnumeratePacketFilters timed out")); + LOCAL_ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, + _L("RPacketContext::EnumeratePacketFilters returned an error")); + LOCAL_ASSERT_EQUALS(count, 2, + _L("RPacketContext::EnumeratePacketFilters returned wrong number")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo,1); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo,2); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns KErrArgument + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,2,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, + _L("RPacketContext::GetPacketFilterInfo did not returned an error")); + + // === Remove another packet filter and modify the context === + + // Remove the first packet filter from the secondary context with RPacketContext::RemovePacketFilter + aPacketContext.RemovePacketFilter(removePacketFilterStatus,0); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone, + _L("RPacketContext::RemovePacketFilter timed out")); + LOCAL_ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone, + _L("RPacketContext::RemovePacketFilter returned an error")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + aPacketContext.ModifyActiveContext(modifyActiveContextStatus); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, + _L("RPacketContext::ModifyActiveContext timed out.")); + LOCAL_ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, + _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + count=-1; + aPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus,count); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeShort), KErrNone, + _L("RPacketContext::EnumeratePacketFilters timed out")); + LOCAL_ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, + _L("RPacketContext::EnumeratePacketFilters returned an error")); + LOCAL_ASSERT_EQUALS(count, 1, + _L("RPacketContext::EnumeratePacketFilters returned wrong number")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns second packet filter added to the context + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,0,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, + _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo,2); + LOCAL_ASSERT_TRUE(CompareFilters(packetFilter,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns KErrArgument + aPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus,1,packetFilterPkg); + LOCAL_ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, + _L("RPacketContext::GetPacketFilterInfo timed out")); + LOCAL_ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, + _L("RPacketContext::GetPacketFilterInfo did not returned an error")); + + // Pop: + // enumeratePacketFiltersStatus + // removePacketFilterStatus + // modifyActiveContextStatus + // getProfileParametersStatus + // getPacketFilterInfoStatus + // enumeratePacketFiltersChStatus + // contextActivateStatus + // notifyContextStChStatus + // setProfileParamStatus + // getProfileCapStatus + CleanupStack::PopAndDestroy(10,&getProfileCapStatus); + + return ret; + } + + +TVerdict CCTSYIntegrationTestPacketContext0039::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0039 + * @SYMFssID BA/CTSY/PKTC-0039 + * @SYMTestCaseDesc Modify a secondary context with packet filter and QoS. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetProfileName, RPacketContext::GetStatus, RPacketContext::EnumeratePacketFilters, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext, RPacketContext::RemovePacketFilter, RPacketQoS::OpenNewQoS, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Packet filter added and removed successfully.Context modified successfully. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify packet filter info and QoS profile info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + DEBUG_PRINTF2(_L("Starting with type %d"),iTestType); + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure there is an active primary context. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,packetContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new secondary context. + RPacketContext& secondaryPacketContext1 = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Open a new QoS from the secodnary context + RPacketQoS& packetQoS1 = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Activate and modify the context with TQoSGPRSRequested, TQoSCapsGPRS and TQoSGPRSNegotiated + RPacketQoS::TQoSGPRSRequested gprsRequested; + RPacketQoS::TQoSCapsGPRS capsGPRS; + RPacketQoS::TQoSGPRSNegotiated gprsNegotiated; + RPacketQoS::TQoSR99_R4Requested r99_r4Requested; + RPacketQoS::TQoSCapsR99_R4 capsR99_R4; + RPacketQoS::TQoSR99_R4Negotiated t99_r4Negotiated; + RPacketQoS::TQoSR5Requested r5Requested; + RPacketQoS::TQoSCapsR5 capsr5; + RPacketQoS::TQoSR5Negotiated r5Negotiated; + switch (iTestType) + { + case EQoSGPRS: + ASSERT_TRUE(ActivateAndModifyContextL(secondaryPacketContext1,packetQoS1,gprsRequested,capsGPRS,gprsNegotiated), + _L("CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL failed")); + break; + case EQoSR4: + ASSERT_TRUE(ActivateAndModifyContextL(secondaryPacketContext1,packetQoS1,r99_r4Requested,capsR99_R4,t99_r4Negotiated), + _L("CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL failed")); + break; + case EQoSR5: + ASSERT_TRUE(ActivateAndModifyContextL(secondaryPacketContext1,packetQoS1,r5Requested,capsr5,r5Negotiated), + _L("CCTSYIntegrationTestPacketContext0039::ActivateAndModifyContextL failed")); + break; + + default: + CHECK_TRUE_L(EFalse, _L("Wrong test type!")); + break; + } + + // Repeat test with TQoSR99_R4Requested and TQoSR5Requested types in RPacketQoS::SetProfileParameters and checking for TQoSR99_R4Negotiated and TQoSR5Negotiated in RPacketContext::GetProfileParameters respectively. + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0039::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0039"); + } + + + +CCTSYIntegrationTestPacketContext0040::CCTSYIntegrationTestPacketContext0040(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0040::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0040::~CCTSYIntegrationTestPacketContext0040() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0040::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0040 + * @SYMFssID BA/CTSY/PKTC-0040 + * @SYMTestCaseDesc Activate a secondary context with the maximum number of packet filters allowed by default TFT. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::Activate + * @SYMTestExpectedResults Pass - 8 packet filters added. Unable to add 9th packet filter. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify packet filter info and QoS profile info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Check that the phone is registered with the network simulator. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure there is an active primary context. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new secondary context. + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Add 8 TPacketFilterV2 packet filters to the secondary context using RPacketContext::AddPacketFilter each with a different iId. + // $CTSYProblem Adding 7 filters wil cause the LTSY to crash the board + for(TInt index = 1; index < 7; index++) + { + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + } + + // === Attempt to add a 9th filter === + + // Check RPacketContext::AddPacketFilter returns KErrArgument + // $CTSYProblem Adding 7 filters wil cause the LTSY to crash the board + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + TName profileName; + profileName.Zero(); + ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status.")); + ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Activate the secondary context. + TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(secContextActivateStatus); + secondaryPacketContext.Activate(secContextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + expectedSecContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 8 + TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters); + CleanupStack::PushL(enumeratePacketFiltersStatus); + TInt packetFiltersCount(0); + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 8, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns sixth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns seventh packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns eighth packet filter added to the context + // $CTSYProblem Adding 7 filters wil cause the LTSY to crash the board + RPacketContext::TPacketFilterV2 getPacketFilterV2; + RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2); + TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo); + CleanupStack::PushL(getPacketFilterInfoStatus); + RPacketContext::TPacketFilterV2 defaultPacketFilterInfo; + + for (TInt index = 0; index < 6; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo, index + 1); + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 8 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 7, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // getProfileCapStatus + // setProfileParamStatus + // notifySecContextStChStatus + // secContextActivateStatus + // enumeratePacketFiltersStatus + // getPacketFilterInfoStatus + CleanupStack::PopAndDestroy(6, &getProfileCapStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0040::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0040"); + } + + + +CCTSYIntegrationTestPacketContext0041::CCTSYIntegrationTestPacketContext0041(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0041::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0041::~CCTSYIntegrationTestPacketContext0041() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0041::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0041 + * @SYMFssID BA/CTSY/PKTC-0041 + * @SYMTestCaseDesc Modify a secondary context with the maximum number of packet filters allowed by default TFT. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::GetPacketFilterInfo, RPacketContext::NotifyStatusChange, RPacketContext::ModifyActiveContext, RPacketContext::GetProfileParameters, RPacketContext::GetProfileName, RPacketContext::GetStatus, RPacketContext::RemovePacketFilter, RPacketContext::EnumeratePacketFilters, RPacketQoS::SetProfileParameters, RPacketQoS::OpenNewQoS, RPacketContext::AddPacketFilter + * @SYMTestExpectedResults Pass - 8 packet filters added. Unable to add 9th packet filter. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify packet filter info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + //Check if we are on a simulated network to run emergency call tests + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure there is an active primary context. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new secondary context. + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Add a TPacketFilterV2 packet filter with iId = 1 to the secondary context using RPacketContext::AddPacketFilter + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + TName profileName; + profileName.Zero(); + ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status.")); + ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Activate the secondary context. + TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(secContextActivateStatus); + secondaryPacketContext.Activate(secContextActivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + expectedSecContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not.")); + + // Add 7 more TPacketFilterV2 packet filters (with iId = 2 to 8) to the secondary context using RPacketContext::AddPacketFilter + for(TInt index = 2; index < 9; index++) + { + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + } + + // === Attempt to add a 9th filter to the context === + + // Check RPacketContext::AddPacketFilter with iId = 9 returns KErrArgument + // $CTSYProblem. + // PacketContext::AddPacketFilter return KErrGeneral instead of KErrArgument for wrong argument. + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 9,KErrGeneral), KErrGeneral, _L("RPacketContext::AddPacketFilter did not return with an error as expected.")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + // $CTSYProblem The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext + ERR_PRINTF1(_L("$CTSYProblem: The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext.")); + TExtEtelRequestStatus modifyActiveContextStatus(secondaryPacketContext, EPacketContextModifyActiveContext); + CleanupStack::PushL(modifyActiveContextStatus); + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 8 + TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters); + CleanupStack::PushL(enumeratePacketFiltersStatus); + TInt packetFiltersCount(0); + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 8, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns sixth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns seventh packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns eighth packet filter added to the context + RPacketContext::TPacketFilterV2 getPacketFilterV2; + RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2); + TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo); + CleanupStack::PushL(getPacketFilterInfoStatus); + RPacketContext::TPacketFilterV2 defaultPacketFilterInfo; + + for (TInt index = 0; index < 8; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo, index + 1); + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 8 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 8, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // Remove the filter with iId = 3 using RPacketContext::RemovePacketFilter + TExtEtelRequestStatus removePacketFilterStatus(secondaryPacketContext, EPacketContextRemovePacketFilter); + CleanupStack::PushL(removePacketFilterStatus); + TInt wantedId = 3; + secondaryPacketContext.RemovePacketFilter(removePacketFilterStatus, wantedId); + ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone, _L("RPacketContext::RemovePacketFilter timed out")); + ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone, _L("RPacketContext::RemovePacketFilter returned an error")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 7 + packetFiltersCount = 0; + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 7, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns sixth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns seventh packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns eighth packet filter added to the context + for (TInt index = 0; index < 7; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + + if(index >= 2) + { + FillPacketFilter(defaultPacketFilterInfo, index + 2); + } + else + { + FillPacketFilter(defaultPacketFilterInfo, index + 1); + } + + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 7, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // === Add a packet filter with the same Id as an existing one (modification of a packet filter) === + + // Add another filter packet filter to the context with iId = 1 + RPacketContext::TPacketFilterV2 packetFilterV2; + FillPacketFilter(packetFilterV2, 3); + RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2); + TExtEtelRequestStatus addFilterStatus(primaryPacketContext, EPacketContextAddPacketFilter); + CleanupStack::PushL(addFilterStatus); + packetFilterV2.iId = 1; + secondaryPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddPacketFilter timed out")); + ASSERT_EQUALS(addFilterStatus.Int(), KErrNone, _L("RPacketContext::AddPacketFilter returned an error")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 7 + packetFiltersCount = 0; + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 7, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns newly added packet filter + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns sixth packet filter added to the tcontext + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns seventh packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns eighth packet filter added to the context + for (TInt index = 0; index < 7; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + + if(index == 0) + { + FillPacketFilter(defaultPacketFilterInfo, 3); + defaultPacketFilterInfo.iId = 1; + } + else if(index >= 2) + { + FillPacketFilter(defaultPacketFilterInfo, index + 2); + } + else + { + FillPacketFilter(defaultPacketFilterInfo, index + 1); + } + + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 7, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // === Add a packet filter with iId = 3 (add new one that was removed) === + + // Add another filter packet filter to the context with iId = 3 + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 3), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 8 + packetFiltersCount = 0; + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 8, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns sixth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 6 returns seventh packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 7 returns eighth packet filter added to the context + for (TInt index = 0; index < 8; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + + if(index == 0) + { + FillPacketFilter(defaultPacketFilterInfo, 3); + defaultPacketFilterInfo.iId = 1; + } + else + { + FillPacketFilter(defaultPacketFilterInfo, index + 1); + } + + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 8 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 8, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // getProfileCapStatus + // setProfileParamStatus + // notifySecContextStChStatus + // secContextActivateStatus + // addFilterStatus + // modifyActiveContextStatus + // enumeratePacketFiltersStatus + // getPacketFilterInfoStatus + // removePacketFilterStatus + CleanupStack::PopAndDestroy(9, &getProfileCapStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0041::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0041"); + } + + + +CCTSYIntegrationTestPacketContext0042::CCTSYIntegrationTestPacketContext0042(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0042::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0042::~CCTSYIntegrationTestPacketContext0042() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0042::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0042 + * @SYMFssID BA/CTSY/PKTC-0042 + * @SYMTestCaseDesc Activate a secondary context creating a TFT for the packet filters. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::CreateNewTFT, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::Activate, RPacketContext::DeleteTFT + * @SYMTestExpectedResults Pass - TFT created and deleted. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify packet filter info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // ==== Ensure there is an active primary context === + + //Check if we are on a simulated network + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Set the attach mode to EAttachWhenPossible. + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Open primary context + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new secondary context. + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Create a new TFT with RPacketContext::CreateNewTFT and aSize = 5 + TExtEtelRequestStatus createNewTFTStatus(secondaryPacketContext, EPacketContextCreateNewTFT); + CleanupStack::PushL(createNewTFTStatus); + const TInt size(5); + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 50005); + secondaryPacketContext.CreateNewTFT(createNewTFTStatus, size); + ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::CreateNewTFT timed out")); + ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::CreateNewTFT returned an error")); + + // Add a TPacketFilterV2 packet filter with iId = 1 to the secondary context using RPacketContext::AddPacketFilter + // Add a TPacketFilterV2 packet filter with iId = 2 to the secondary context using RPacketContext::AddPacketFilter + // Add a TPacketFilterV2 packet filter with iId = 3 to the secondary context using RPacketContext::AddPacketFilter + // Add a TPacketFilterV2 packet filter with iId = 4 to the secondary context using RPacketContext::AddPacketFilter + // Add a TPacketFilterV2 packet filter with iId = 5 to the secondary context using RPacketContext::AddPacketFilter + for (TInt index = 1; index < 6; index++) + { + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + } + + // Add a TPacketFilterV2 packet filter with iId = 6 to the secondary context returns KErrArgument + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 6), KErrArgument, _L("RPacketContext::AddPacketFilter did not return with an error as expected.")); + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + TName profileName; + ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status.")); + ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Activate the secondary context. + TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(secContextActivateStatus); + secondaryPacketContext.Activate(secContextActivateStatus); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + expectedSecContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 5 + TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters); + CleanupStack::PushL(enumeratePacketFiltersStatus); + TInt packetFiltersCount(0); + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 5, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context + RPacketContext::TPacketFilterV2 getPacketFilterV2; + RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2); + TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo); + CleanupStack::PushL(getPacketFilterInfoStatus); + RPacketContext::TPacketFilterV2 defaultPacketFilterInfo; + + for (TInt index = 0; index < 5; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo, index + 1); + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns KErrArgument + TInt index = 5; + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // Repost notification for context's status change + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Deactivate the secondary context. + TExtEtelRequestStatus contextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + secondaryPacketContext.Deactivate(contextDeactivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusInactive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusInactive, _L("RPacketContext::GetStatus status did not return EStatusInactive.")); + + // Delete the TFT with RPacketContext::DeleteTFT + TExtEtelRequestStatus deleteTFTStatus(secondaryPacketContext, EPacketContextDeleteTFT); + CleanupStack::PushL(deleteTFTStatus); + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 50006); + secondaryPacketContext.DeleteTFT(deleteTFTStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::DeleteTFT timed out")); + ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::DeleteTFT returned an error")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // createNewTFTStatus + // getProfileCapStatus + // setProfileParamStatus + // notifySecContextStChStatus + // secContextActivateStatus + // enumeratePacketFiltersStatus + // getPacketFilterInfoStatus + // contextDeactivateStatus + // deleteTFTStatus + CleanupStack::PopAndDestroy(9, &createNewTFTStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0042::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0042"); + } + + + +CCTSYIntegrationTestPacketContext0043::CCTSYIntegrationTestPacketContext0043(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0043::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0043::~CCTSYIntegrationTestPacketContext0043() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0043::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0043 + * @SYMFssID BA/CTSY/PKTC-0043 + * @SYMTestCaseDesc Modify a secondary context creating a TFT for the packet filters. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::Activate, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext, RPacketContext::DeleteTFT + * @SYMTestExpectedResults Pass - TFT created and deleted. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify packet filter info correct. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + //Check if we are on a simulated network to run emergency call tests + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Ensure there is an active primary context. + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new secondary context. + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Create a new TFT with RPacketContext::CreateNewTFT and aSize = 5 + TExtEtelRequestStatus createNewTFTStatus(secondaryPacketContext, EPacketContextCreateNewTFT); + CleanupStack::PushL(createNewTFTStatus); + const TInt size(5); + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 50005); + secondaryPacketContext.CreateNewTFT(createNewTFTStatus, size); + ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::CreateNewTFT timed out")); + ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::CreateNewTFT returned an error")); + + // Add a TPacketFilterV2 packet filter with iId = 1 to the secondary context using RPacketContext::AddPacketFilter + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + + // Open a new QoS from the secondary context with + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Check RPacketContext::GetProfileName returns QoS profile name with length > 0 + TName profileName; + ASSERT_EQUALS(secondaryPacketContext.GetProfileName(profileName),KErrNone, _L("RPacketContext::GetProfileName returned with error status.")); + ASSERT_TRUE(profileName.Length()>0, _L("RPacketContext::GetProfileName name length is 0.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Activate the secondary context. + TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(secContextActivateStatus); + secondaryPacketContext.Activate(secContextActivateStatus); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + expectedSecContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus status expected to be EStatusActive but is not.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + TExtEtelRequestStatus enumeratePacketFiltersStatus(secondaryPacketContext, EPacketContextEnumeratePacketFilters); + CleanupStack::PushL(enumeratePacketFiltersStatus); + TInt packetFiltersCount(0); + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 1, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter with iId = 1 + RPacketContext::TPacketFilterV2 getPacketFilterV2; + RPacketContext::TPacketFilterV2Pckg getPacketFilterV2pkg(getPacketFilterV2); + TExtEtelRequestStatus getPacketFilterInfoStatus(secondaryPacketContext, EPacketContextGetPacketFilterInfo); + CleanupStack::PushL(getPacketFilterInfoStatus); + RPacketContext::TPacketFilterV2 defaultPacketFilterInfo; + FillPacketFilter(defaultPacketFilterInfo, 1); + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 0, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + + // Add 4 more TPacketFilterV2 packet filters (with iId = 2 to 5) to the secondary context using RPacketContext::AddPacketFilter + for(TInt index = 2; index < 6; index++) + { + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, index), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + } + + // === Attempt to add a 6th filter to the context === + + // Check RPacketContext::AddPacketFilter with iId = 6 returns KErrArgument + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 6), KErrArgument, _L("RPacketContext::AddPacketFilter did not return with an error as expected.")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + TExtEtelRequestStatus modifyActiveContextStatus(secondaryPacketContext, EPacketContextModifyActiveContext); + CleanupStack::PushL(modifyActiveContextStatus); + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 5 + packetFiltersCount = 0; + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 5, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context + for (TInt index = 0; index < 5; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + FillPacketFilter(defaultPacketFilterInfo, index + 1); + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 5, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // Remove the filter with iId = 3 using RPacketContext::RemovePacketFilter + TExtEtelRequestStatus removePacketFilterStatus(secondaryPacketContext, EPacketContextRemovePacketFilter); + CleanupStack::PushL(removePacketFilterStatus); + TInt wantedId = 3; + secondaryPacketContext.RemovePacketFilter(removePacketFilterStatus, wantedId); + ASSERT_EQUALS(WaitForRequestWithTimeOut(removePacketFilterStatus, ETimeShort), KErrNone, _L("RPacketContext::RemovePacketFilter timed out")); + ASSERT_EQUALS(removePacketFilterStatus.Int(), KErrNone, _L("RPacketContext::RemovePacketFilter returned an error")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 4 + packetFiltersCount = 0; + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 4, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context + for (TInt index = 0; index < 4; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + + if (index >= 2) // Third filter removed earlier in this test + { + FillPacketFilter(defaultPacketFilterInfo, index + 2); + } + else + { + FillPacketFilter(defaultPacketFilterInfo, index + 1); + } + + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 4, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // === Add a packet filter with the same Id as an existing one (modification of a packet filter) === + + // Add another packet filter to the context with iId = 1 + RPacketContext::TPacketFilterV2 packetFilterV2; + RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2); + TExtEtelRequestStatus addFilterStatus(primaryPacketContext, EPacketContextAddPacketFilter); + CleanupStack::PushL(addFilterStatus); + FillPacketFilter(packetFilterV2, 2); + packetFilterV2.iId = 1; + secondaryPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddPacketFilter timed out")); + ASSERT_EQUALS(addFilterStatus.Int(), KErrNone, _L("RPacketContext::AddPacketFilter returned an error")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 4 + packetFiltersCount = 0; + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 4, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter that has just been added + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fifth packet filter added to the context + for (TInt index = 0; index < 4; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + + if (index == 0) + { + FillPacketFilter(defaultPacketFilterInfo, 2); + packetFilterV2.iId = 1; + } + else if (index >= 2) // Third filter removed earlier in this test + { + FillPacketFilter(defaultPacketFilterInfo, index + 2); + } + else + { + FillPacketFilter(defaultPacketFilterInfo, index + 1); + } + + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 4, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // === Add a packet filter with iId = 3 (add new one that was removed) === + + // Add another filter packet filter to the context with iId = 3 + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 3), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + ASSERT_EQUALS(modifyActiveContextStatus.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned with error status.")); + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 5 + packetFiltersCount = 0; + secondaryPacketContext.EnumeratePacketFilters(enumeratePacketFiltersStatus, packetFiltersCount); + ASSERT_EQUALS(WaitForRequestWithTimeOut(enumeratePacketFiltersStatus, ETimeLong), KErrNone, _L("RPacketContext::EnumeratePacketFilters timed out.")); + ASSERT_EQUALS(enumeratePacketFiltersStatus.Int(), KErrNone, _L("RPacketContext::EnumeratePacketFilters returned with error status.")); + ASSERT_EQUALS(packetFiltersCount, 5, _L("RPacketContext::EnumeratePacketFilters returned wrong number of packet filters.")); + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns first packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 1 returns second packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 2 returns third packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 3 returns fourth packet filter added to the context + // Check RPacketContext::GetPacketFilterInfo with aIndex = 4 returns fifth packet filter added to the context + for (TInt index = 1; index < 4; index++) + { + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, index, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrNone, _L("RPacketContext::GetPacketFilterInfo returned an error")); + + if (index == 0) + { + FillPacketFilter(defaultPacketFilterInfo, 2); + packetFilterV2.iId = 1; + } + else + { + FillPacketFilter(defaultPacketFilterInfo, index + 1); + } + + ASSERT_TRUE(CompareFilters(getPacketFilterV2,defaultPacketFilterInfo),_L("RPacketContext::GetPacketFilterInfo returned wrong filter")); + } + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 5 returns KErrArgument + secondaryPacketContext.GetPacketFilterInfo(getPacketFilterInfoStatus, 5, getPacketFilterV2pkg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getPacketFilterInfoStatus, ETimeShort), KErrNone, _L("RPacketContext::GetPacketFilterInfo timed out")); + ASSERT_EQUALS(getPacketFilterInfoStatus.Int(), KErrArgument, _L("RPacketContext::GetPacketFilterInfo did not return correct error")); + + // Repost notification for context's status change + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Deactivate the secondary context. + TExtEtelRequestStatus contextDeactivateStatus(secondaryPacketContext, EPacketContextDeactivate); + CleanupStack::PushL(contextDeactivateStatus); + secondaryPacketContext.Deactivate(contextDeactivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextDeactivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Deactivate timed out.")); + ASSERT_EQUALS(contextDeactivateStatus.Int(), KErrNone, _L("RPacketContext::Deactivate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusInactive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusInactive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusInactive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusInactive, _L("Packet Context's status expected to be EStatusActive but is not.")); + + // Delete the TFT with RPacketContext::DeleteTFT + TExtEtelRequestStatus deleteTFTStatus(secondaryPacketContext, EPacketContextDeleteTFT); + CleanupStack::PushL(deleteTFTStatus); + ERR_PRINTF2(_L("$CTSYKnownFailure: defect id = %d"), 50006); + secondaryPacketContext.DeleteTFT(deleteTFTStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(createNewTFTStatus, ETimeMedium), KErrNone, _L("RPacketContext::DeleteTFT timed out")); + ASSERT_EQUALS(createNewTFTStatus.Int(), KErrNone, _L("RPacketContext::DeleteTFT returned an error")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // createNewTFTStatus + // getProfileCapStatus + // setProfileParamStatus + // notifySecContextStChStatus + // secContextActivateStatus + // enumeratePacketFiltersStatus + // getPacketFilterInfoStatus + // modifyActiveContextStatus + // removePacketFilterStatus + // addFilterStatus + // contextDeactivateStatus + // deleteTFTStatus + CleanupStack::PopAndDestroy(12, &createNewTFTStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0043::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0043"); + } + + + +CCTSYIntegrationTestPacketContext0044::CCTSYIntegrationTestPacketContext0044(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0044::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0044::~CCTSYIntegrationTestPacketContext0044() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0044::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0044 + * @SYMFssID BA/CTSY/PKTC-0044 + * @SYMTestCaseDesc Modify a context when it is not active. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext + * @SYMTestExpectedResults Pass - Error returned on attempt to modify a context that is not active. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context status and packet service status and error returned for modify. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new primary context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Modify the context with RPacketContext::ModifyActiveContext + TExtEtelRequestStatus modifyActiveContextStatus(primaryPacketContext, EPacketContextModifyActiveContext); + CleanupStack::PushL(modifyActiveContextStatus); + primaryPacketContext.ModifyActiveContext(modifyActiveContextStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + + // Check error is returned. + ASSERT_TRUE(modifyActiveContextStatus.Int() != KErrNone, _L("RPacketContext::ModifyActiveContext did not return with an error as expected.")); + + // Open a new secondary context from the primary + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Modify the secondary context with RPacketContext::ModifyActiveContext + TExtEtelRequestStatus modifyActiveContextStatus2(secondaryPacketContext, EPacketContextModifyActiveContext); + CleanupStack::PushL(modifyActiveContextStatus2); + secondaryPacketContext.ModifyActiveContext(modifyActiveContextStatus2); + ASSERT_EQUALS(WaitForRequestWithTimeOut(modifyActiveContextStatus2, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out.")); + + // Check error is returned. + ASSERT_TRUE(modifyActiveContextStatus2.Int() != KErrNone, _L("RPacketContext::ModifyActiveContext did not return with an error as expected.")); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // modifyActiveContextStatus + // modifyActiveContextStatus2 + CleanupStack::PopAndDestroy(2, &modifyActiveContextStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0044::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0044"); + } + + + +CCTSYIntegrationTestPacketContext0045::CCTSYIntegrationTestPacketContext0045(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0045::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0045::~CCTSYIntegrationTestPacketContext0045() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0045::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0045 + * @SYMFssID BA/CTSY/PKTC-0045 + * @SYMTestCaseDesc Add packet filter with same ID as previous packet filter. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketContext::Activate, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::ModifyActiveContext + * @SYMTestExpectedResults Pass - Old filter replaced. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify existing packet filter is replaced. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is an active primary context. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new primary context. + + // Add a TPacketFilterV2 packet filter with iId = 1 to the context using RPacketContext::AddPacketFilter + + // Add a TPacketFilterV2 packet filter with iId = 1 but with different values for the other field to the context using RPacketContext::AddPacketFilter + + // Set a valid config for the primary context. + + // Activate the context. + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter with details equal to those used in second call to RPacketContext::AddPacketFilter + + // Add a TPacketFilterV2 packet filter with iId = 1 but with different values for the other field to the context using RPacketContext::AddPacketFilter + + // Modify the context + + // Check RPacketContext::EnumeratePacketFilters returns aCount = 1 + + // Check RPacketContext::GetPacketFilterInfo with aIndex = 0 returns packet filter with details equal to those used in third call to RPacketContext::AddPacketFilter + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0045::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0045"); + } + + + +CCTSYIntegrationTestPacketContext0046::CCTSYIntegrationTestPacketContext0046(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0046::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0046::~CCTSYIntegrationTestPacketContext0046() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0046::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0046 + * @SYMFssID BA/CTSY/PKTC-0046 + * @SYMTestCaseDesc Remove packet filter specifying invalid ID. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::RemovePacketFilter + * @SYMTestExpectedResults Pass - Error returned. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify error is returned. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is an active primary context. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Add a TPacketFilterV2 packet filter with iId = 1 to the context using RPacketContext::AddPacketFilter + + // Modify the context. + + // Remove a packet filter with RPacketContext::RemovePacketFilter and aId = 2 + + // Check KErrArgument is returned + + // Remove a packet filter with RPacketContext::RemovePacketFilter and aId = -1 + + // Check KErrArgument is returned + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0046::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0046"); + } + + + +CCTSYIntegrationTestPacketContext0047::CCTSYIntegrationTestPacketContext0047(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0047::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0047::~CCTSYIntegrationTestPacketContext0047() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0047::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0047 + * @SYMFssID BA/CTSY/PKTC-0047 + * @SYMTestCaseDesc Activate a primary context with media auth tokens added but no QoS or packet filters. + * @SYMTestPriority High + * @SYMTestActions RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddMediaAuthorizationL, RPacketContext::GetStatus, RPacketContext::SetConfig + * @SYMTestExpectedResults Pass - Context activated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context is activated. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to the packet service. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a primary context + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + + // Set a valid context config using RPacketContext::SetConfig + + // Activate the context. + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0047::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0047"); + } + + + +CCTSYIntegrationTestPacketContext0048::CCTSYIntegrationTestPacketContext0048(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0048::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0048::~CCTSYIntegrationTestPacketContext0048() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0048::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0048 + * @SYMFssID BA/CTSY/PKTC-0048 + * @SYMTestCaseDesc Modify a primary context with media auth tokens added but no QoS or packet filters. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddMediaAuthorizationL, RPacketContext::GetStatus, RPacketContext::SetConfig + * @SYMTestExpectedResults Pass - Context modified. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context is modified. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to the packet service. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a primary context + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + + // Set a valid context config using RPacketContext::SetConfig + + // Activate the context. + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // Remove media auth token using RPacketContext::RemoveMediaAuthorization and aAuthorizationToken = identifier used in RPacketContext::AddMediaAuthorizationL + + // Check RPacketContext::GetStatus returns EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0048::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0048"); + } + + + +CCTSYIntegrationTestPacketContext0049::CCTSYIntegrationTestPacketContext0049(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0049::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0049::~CCTSYIntegrationTestPacketContext0049() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0049::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0049 + * @SYMFssID BA/CTSY/PKTC-0049 + * @SYMTestCaseDesc Activate a secondary context with media auth tokens added but no QoS or packet filters. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::AddMediaAuthorizationL, RPacketContext::RemoveMediaAuthorization + * @SYMTestExpectedResults Pass - Context activated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify context is activated. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is a primary context active which has been activated with QoS and has a packet filter added to it. + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Open a new primary context. + RPacketContext& primaryContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + // Open a new QoS for primary context + RPacketQoS& contextQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // $CTSYProblem Can't add filters to primary context + //CHECK_EQUALS_L(AddPacketFilterV2ToContextL(primaryContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error")); + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryContext); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Open a new secondary context from the primary. + RPacketContext& secondaryContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL(); + CleanupStack::PushL(mediaAuth); + TExtEtelRequestStatus requestAddMediaAuthStatus(secondaryContext, EPacketAddMediaAuthorization); + CleanupStack::PushL(requestAddMediaAuthStatus); + // $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him + CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him")); + secondaryContext.AddMediaAuthorizationL(requestAddMediaAuthStatus, *mediaAuth); + ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out")); + ASSERT_EQUALS(requestAddMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error")); + + // Post notifier for RPacketContext::NotifyStatusChange + TExtEtelRequestStatus notifyContextStChStatus(secondaryContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate packet context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(secondaryContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + secondaryContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + RPacketContext::TContextStatus getPacketContextStatus; + ASSERT_EQUALS(secondaryContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for Secondary context returned with an error.")); + ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // mediaAuth + // requestAddMediaAuthStatus + // notifyContextStChStatus + // contextActivateStatus + CleanupStack::PopAndDestroy(4, mediaAuth); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0049::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0049"); + } + + + +CCTSYIntegrationTestPacketContext0050::CCTSYIntegrationTestPacketContext0050(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0050::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0050::~CCTSYIntegrationTestPacketContext0050() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0050::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0050 + * @SYMFssID BA/CTSY/PKTC-0050 + * @SYMTestCaseDesc Modify a secondary context with media auth tokens added but no QoS or packet filters. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::Activate, RPacketContext::AddMediaAuthorizationL, RPacketContext::RemoveMediaAuthorization, RPacketContext::ModifyActiveContext + * @SYMTestExpectedResults Pass - Context modified. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify context is modified. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Ensure there is a primary context active which has been activated with QoS and has a packet filter added to it. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + //Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + RPacketContext& primaryContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + RPacketQoS& primaryQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryContext); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Open a new secondary context from the primary. + RPacketContext& secondaryContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL(); + CleanupStack::PushL(mediaAuth); + TExtEtelRequestStatus requestAddMediaAuthStatus(secondaryContext, EPacketAddMediaAuthorization); + CleanupStack::PushL(requestAddMediaAuthStatus); + // $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him + CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him")); + secondaryContext.AddMediaAuthorizationL(requestAddMediaAuthStatus, *mediaAuth); + ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out")); + ASSERT_EQUALS(requestAddMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error")); + + // Post notifier for RPacketContext::NotifyStatusChange + TExtEtelRequestStatus notifyContextStChStatus(secondaryContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate the context. + TExtEtelRequestStatus contextActivateStatus(secondaryContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + secondaryContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + secondaryContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus returns EStatusActive + RPacketContext::TContextStatus getPacketContextStatus; + ASSERT_EQUALS(secondaryContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error.")); + ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Remove media auth token using RPacketContext::RemoveMediaAuthorization and aAuthorizationToken = identifier used in RPacketContext::AddMediaAuthorizationL + TExtEtelRequestStatus requestRemoveMediaAuthStatus(secondaryContext, EPacketRemoveMediaAuthorization); + CleanupStack::PushL(requestRemoveMediaAuthStatus); + secondaryContext.RemoveMediaAuthorization(requestRemoveMediaAuthStatus, mediaAuth->iAuthorizationToken); + ASSERT_EQUALS(WaitForRequestWithTimeOut(requestRemoveMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::RemoveMediaAuthorization timed out")); + ASSERT_EQUALS(requestRemoveMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::RemoveMediaAuthorization returned an error")); + + // Check RPacketContext::GetStatus returns EStatusActive + ASSERT_EQUALS(secondaryContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error.")); + ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus packetServiceStatus; + ASSERT_EQUALS(packetService.GetStatus(packetServiceStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(packetServiceStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop: + // mediaAuth + // requestAddMediaAuthStatus + // notifyContextStChStatus + // contextActivateStatus + // requestRemoveMediaAuthStatus + CleanupStack::PopAndDestroy(5, &mediaAuth); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0050::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0050"); + } + + + +CCTSYIntegrationTestPacketContext0051::CCTSYIntegrationTestPacketContext0051(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0051::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0051::~CCTSYIntegrationTestPacketContext0051() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0051::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0051 + * @SYMFssID BA/CTSY/PKTC-0051 + * @SYMTestCaseDesc Activate a primary context with QoS, packet filters and media auth tokens. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddMediaAuthorizationL, RPacketContext::SetConfig, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Context activated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context is activated. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to the packet service. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // === Add packet filter === + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + + // === Add QoS === + + // Open a new QoS from the secondary context + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // === Add media auth tokens === + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + + // Set a valid context config with RPacketContext::SetConfig + + // Activate primary context with RPacketContext::Activate + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + // Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0051::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0051"); + } + + + +CCTSYIntegrationTestPacketContext0052::CCTSYIntegrationTestPacketContext0052(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0052::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0052::~CCTSYIntegrationTestPacketContext0052() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0052::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0052 + * @SYMFssID BA/CTSY/PKTC-0052 + * @SYMTestCaseDesc Modify a primary context with QoS, packet filters and media auth tokens. + * @SYMTestPriority High + * @SYMTestActions RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileParameters, RPacketQoS::NotifyProfileChanged, RPacketQoS::GetProfileCapabilities, RPacketContext::OpenNewContext, RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::NotifyStatusChange, RPacketContext::GetStatus, RPacketService::NotifyStatusChange, RPacketService::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::EnumeratePacketFilters, RPacketContext::GetPacketFilterInfo, RPacketContext::RemovePacketFilter + * @SYMTestExpectedResults Pass - Context modified. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify context is modified. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is an active primary context. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // === Add packet filter === + + // Add a TPacketFilterV2 packet filter to the primary context using RPacketContext::AddPacketFilter + + // === Add QoS === + + // Open a new QoS from the primary context + + // Get R5 QoS profile capabilities with RPacketQoS::GetProfileCapabilities + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSR5Requested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // === Add media auth tokens === + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + + // Set a valid context config with RPacketContext::SetConfig + + // Activate primary context with RPacketContext::Activate + + // === Check context and service statuses === + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + + // Check RPacketService::GetStatus returns EStatusActive + + // Check RPacketContext::NotifyStatusChange for the primary context completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for the primary context returns EStatusActive + + // === Remove media auth tokens === + + // Remove media authorization with RPacketContext::RemoveMediaAuthorization + + // === Add media auth tokens === + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + + // Modify context with RPacketContext::ModifyActiveContext + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0052::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0052"); + } + + + +CCTSYIntegrationTestPacketContext0053::CCTSYIntegrationTestPacketContext0053(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0053::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0053::~CCTSYIntegrationTestPacketContext0053() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0053::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0053 + * @SYMFssID BA/CTSY/PKTC-0053 + * @SYMTestCaseDesc Activate a secondary context with QoS, packet filters and media auth tokens. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::AddMediaAuthorizationL, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Context activated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify context is activated. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + //Check if we are on a simulated network + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Open primary context + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone, primaryPacketContext); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + // Open a new secondary context + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // === Add packet filter === + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext, 1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + + // === Add QoS === + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // === Add media auth tokens === + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL(); + CleanupStack::PushL(mediaAuth); + TExtEtelRequestStatus addMediaAuthStatus(secondaryPacketContext, EPacketAddMediaAuthorization); + CleanupStack::PushL(addMediaAuthStatus); + // $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him + CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him")); + secondaryPacketContext.AddMediaAuthorizationL(addMediaAuthStatus, *mediaAuth); + ASSERT_EQUALS(WaitForRequestWithTimeOut(addMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out")); + ASSERT_EQUALS(addMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error")); + + //Post notifier for RPacketContext::NotifyStatusChange + TExtEtelRequestStatus notifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + secondaryPacketContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + RPacketContext::TContextStatus getPacketContextStatus; + ASSERT_EQUALS(secondaryPacketContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for primary context returned with an error.")); + ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // getProfileCapStatus + // setProfileParamStatus + // mediaAuth + // addMediaAuthStatus + // notifyContextStChStatus + // contextActivateStatus + CleanupStack::PopAndDestroy(6, &getProfileCapStatus); + + return TestStepResult(); + } + + +TPtrC CCTSYIntegrationTestPacketContext0053::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0053"); + } + + + +CCTSYIntegrationTestPacketContext0054::CCTSYIntegrationTestPacketContext0054(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0054::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0054::~CCTSYIntegrationTestPacketContext0054() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0054::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0054 + * @SYMFssID BA/CTSY/PKTC-0054 + * @SYMTestCaseDesc Modify a secondary context with QoS, packet filters and media auth tokens. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::AddMediaAuthorizationL, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters + * @SYMTestExpectedResults Pass - Context modified. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/automatic + * + * Reason for test: Verify context is modified. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // ==== Ensure there is an active primary context === + + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + + //Check if we are on a simulated network + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + iNetworkTestHelper.CheckPhoneConnectedToAniteL(phone); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Set the attach mode to EAttachWhenPossible. + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + // Open primary context + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Activate primary context. + iPacketServiceTestHelper.ActivatePrimaryPacketContextL(phone,primaryPacketContext); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Open a new secondary context + RPacketContext& secondaryPacketContext = iEtelSessionMgr.GetSecondaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + // === Add packet filter === + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + RPacketContext::TPacketFilterV2 packetFilterV2; + TInt id(1); + FillPacketFilter(packetFilterV2, id); + RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2); + TExtEtelRequestStatus addFilterStatus(secondaryPacketContext, EPacketContextAddPacketFilter); + CleanupStack::PushL(addFilterStatus); + secondaryPacketContext.AddPacketFilter(addFilterStatus, packetFilterV2pckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(addFilterStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddPacketFilter timed out")); + ASSERT_EQUALS(addFilterStatus.Int(), KErrNone, _L("RPacketContext::AddPacketFilter returned an error")); + + // === Add QoS === + + // Open a new QoS from the secondary context + RPacketQoS& contextQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSCapsGPRS qosCapsGPRS; + TPckg qosCapsGPRSPckg(qosCapsGPRS); + TExtEtelRequestStatus reqQoSProfileCaps(contextQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(reqQoSProfileCaps); + contextQoS.GetProfileCapabilities(reqQoSProfileCaps, qosCapsGPRSPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqQoSProfileCaps, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(reqQoSProfileCaps.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosReqCapsGPRS; + TPckg qosReqCapsGPRSPckg(qosReqCapsGPRS); + FillParametersFromCapabilities(qosReqCapsGPRS, qosCapsGPRS); + TExtEtelRequestStatus reqStatusSetProfileParams(contextQoS,EPacketQoSSetProfileParams); + CleanupStack::PushL(reqStatusSetProfileParams); + contextQoS.SetProfileParameters(reqStatusSetProfileParams,qosReqCapsGPRSPckg ); + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusSetProfileParams, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(reqStatusSetProfileParams.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // === Add media auth tokens === + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + RPacketContext::CTFTMediaAuthorizationV3* mediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL(); + CleanupStack::PushL(mediaAuth); + TExtEtelRequestStatus requestAddMediaAuthStatus(secondaryPacketContext, EPacketAddMediaAuthorization); + CleanupStack::PushL(requestAddMediaAuthStatus); + // $CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him + CHECK_TRUE_L(EFalse,_L("$CTSYProblem This test cannot be run since LTSY crash when the CTSY send the EPacketAddMediaAuthorization message to him")); + secondaryPacketContext.AddMediaAuthorizationL(requestAddMediaAuthStatus, *mediaAuth); + ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out")); + ASSERT_EQUALS(requestAddMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error")); + + // Post notifier for RPacketContext::NotifyStatusChange + TExtEtelRequestStatus notifyContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyContextStChStatus); + RPacketContext::TContextStatus packetContextStatus; + secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + + // Activate context with RPacketContext::Activate + TExtEtelRequestStatus contextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + secondaryPacketContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // === Check context and service statuses === + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedPacketContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + secondaryPacketContext.NotifyStatusChange(notifyContextStChStatus, packetContextStatus); + expectedPacketContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifyContextStChStatus, + packetContextStatus, + expectedPacketContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + RPacketContext::TContextStatus getPacketContextStatus; + ASSERT_EQUALS(secondaryPacketContext.GetStatus(getPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus for secondary context returned with an error.")); + ASSERT_EQUALS(getPacketContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // === Remove media auth tokens === + + // Remove media authorization with RPacketContext::RemoveMediaAuthorization + TExtEtelRequestStatus requestRemoveMediaAuthStatus(secondaryPacketContext, EPacketRemoveMediaAuthorization); + CleanupStack::PushL(requestRemoveMediaAuthStatus); + secondaryPacketContext.RemoveMediaAuthorization(requestRemoveMediaAuthStatus, mediaAuth->iAuthorizationToken); + ASSERT_EQUALS(WaitForRequestWithTimeOut(requestRemoveMediaAuthStatus, ETimeMedium), KErrNone, _L("RPacketContext::RemoveMediaAuthorization timed out")); + ASSERT_EQUALS(requestRemoveMediaAuthStatus.Int(), KErrNone, _L("RPacketContext::RemoveMediaAuthorization returned an error")); + + // === Add media auth tokens === + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + RPacketContext::CTFTMediaAuthorizationV3* secondMediaAuth = RPacketContext::CTFTMediaAuthorizationV3::NewL(); + CleanupStack::PushL(secondMediaAuth); + TExtEtelRequestStatus requestAddMediaAuthStatusNumberTwo(secondaryPacketContext, EPacketAddMediaAuthorization); + CleanupStack::PushL(requestAddMediaAuthStatusNumberTwo); + secondaryPacketContext.AddMediaAuthorizationL(requestAddMediaAuthStatusNumberTwo, *secondMediaAuth); + ASSERT_EQUALS(WaitForRequestWithTimeOut(requestAddMediaAuthStatusNumberTwo, ETimeMedium), KErrNone, _L("RPacketContext::AddMediaAuthorizationL timed out")); + ASSERT_EQUALS(requestAddMediaAuthStatusNumberTwo.Int(), KErrNone, _L("RPacketContext::AddMediaAuthorizationL returned an error")); + + // Modify context with RPacketContext::ModifyActiveContext + TExtEtelRequestStatus requestModifyContext(secondaryPacketContext, EPacketContextModifyActiveContext); + CleanupStack::PushL(requestModifyContext); + secondaryPacketContext.ModifyActiveContext(requestModifyContext); + ASSERT_EQUALS(WaitForRequestWithTimeOut(requestModifyContext, ETimeMedium), KErrNone, _L("RPacketContext::ModifyActiveContext timed out")); + ASSERT_EQUALS(requestModifyContext.Int(), KErrNone, _L("RPacketContext::ModifyActiveContext returned an error")); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // addFilterStatus + // reqQoSProfileCaps + // reqStatusSetProfileParams + // mediaAuth + // requestAddMediaAuthStatus + // notifyContextStChStatus + // contextActivateStatus + // requestRemoveMediaAuthStatus + // secondMediaAuth + // requestAddMediaAuthStatusNumberTwo + // requestModifyContext + + CleanupStack::PopAndDestroy(11, &addFilterStatus); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0054::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0054"); + } + + + +CCTSYIntegrationTestPacketContext0055::CCTSYIntegrationTestPacketContext0055(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0055::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0055::~CCTSYIntegrationTestPacketContext0055() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0055::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0055 + * @SYMFssID BA/CTSY/PKTC-0055 + * @SYMTestCaseDesc Remove media authorization with invalid identifier. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::RemoveMediaAuthorization + * @SYMTestExpectedResults Pass - Error returned. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify error is returned. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a primary context. + + // Add a media auth token using RPacketContext::AddMediaAuthorizationL + + // Remove media authorization with RPacketContext::RemoveMediaAuthorization with invalid identifier in aAuthorizationToken + + // Check error is returned. + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0055::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0055"); + } + + + +CCTSYIntegrationTestPacketContext0056::CCTSYIntegrationTestPacketContext0056(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0056::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0056::~CCTSYIntegrationTestPacketContext0056() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0056::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0056 + * @SYMFssID BA/CTSY/PKTC-0056 + * @SYMTestCaseDesc Activate a context and download data. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenExistingContext, RPacketContext::GetConnectionSpeed, RPacketContext::GetDataVolumeTransferred + * @SYMTestExpectedResults Pass - Context activated. Data transferred advances. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify connection speed and volume data transferred advances realistically. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Ensure phone is attached to packet service. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // === Send and receive some data and check data transferred advances === + + // Activate context with ESOCK server + TBuf<140> host(_L("developer.symbian.com")); + TBuf<140> page(_L("/main/downloads/papers/IMS_Introduction_Part_1.pdf")); + CHTTPDownload *download = new (ELeave) CHTTPDownload(this); + CleanupStack::PushL(download); + ASSERT_TRUE(download->StartDownloadL(host,page),_L("Download Failed")); + + // Check RPacketService::GetNifInfo with aCount = 0 returns valid name in iContextName + TInt nifInfoCount = 0; + TExtEtelRequestStatus nifInfoStatus(packetService, EPacketGetNifInfo); + CleanupStack::PushL(nifInfoStatus); + RPacketService::TNifInfoV2 nifInfo; + RPacketService::TNifInfoV2Pckg nifInfoPckg(nifInfo); + packetService.GetNifInfo(nifInfoStatus, nifInfoCount, nifInfoPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(nifInfoStatus, ETimeMedium), KErrNone, _L("RPacketService::GetNifInfo timed out.")); + ASSERT_EQUALS(nifInfoStatus.Int(), KErrNone, _L("RPacketService::GetNifInfo returned with an error.")); + ASSERT_TRUE(nifInfo.iContextName.Length()>0,_L("RPacketService::GetNifInfo returned invalid context name.")); + TName contextName = nifInfo.iContextName; + + // Open a handle on an existing context with OpenExistingContext + RPacketContext packetContext; + ASSERT_EQUALS(packetContext.OpenExistingContext(packetService, contextName), KErrNone, _L("RPacketContext::OpenExistingContext returned with an error.")); + + // Check RPacketContext::GetConnectionSpeed returns aRate > 0; + TExtEtelRequestStatus getConnectionSpeedStatus(packetContext, EPacketContextGetConnectionSpeed); + CleanupStack::PushL(getConnectionSpeedStatus); + TUint connectionSpeedRate; + packetContext.GetConnectionSpeed(getConnectionSpeedStatus, connectionSpeedRate); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getConnectionSpeedStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConnectionSpeed timed out.")); + ASSERT_EQUALS(getConnectionSpeedStatus.Int(), KErrNone, _L("RPacketContext::GetConnectionSpeed returned with an error.")); + ASSERT_TRUE(connectionSpeedRate > 0, _L("RPacketContext::GetConnectionSpeed is lower than expected.")); + + // Repeat this section until download is complete and check that iBytesSent and iBytesReceived is higher than the previous + RPacketContext::TDataVolume dataVolume; + TUint32 zeroBytesSent = 0; + TUint32 zeroBytesReceived = 0; + while(download->VerifyDownloading()) + { + packetContext.GetDataVolumeTransferred(dataVolume); + DEBUG_PRINTF2(_L("sent data: %d bytes"), dataVolume.iBytesSent); + DEBUG_PRINTF2(_L("received data: %d bytes"), dataVolume.iBytesReceived); + User::After(KOneSecond*3); + } + + // Check RPacketContext::GetDataVolumeTransferred returns TDataVolume::iBytesSent is higher than the previous + ASSERT_TRUE(dataVolume.iBytesSent > zeroBytesSent, _L("RPacketContext::GetVolumeDataTransferred returned with no increase in bytes sent.")); + // Check RPacketContext::GetDataVolumeTransferred returns TDataVolume::iBytesReceived is higher than the previous + ASSERT_TRUE(dataVolume.iBytesReceived > zeroBytesReceived, _L("RPacketContext::GetVolumeDataTransferred returned with no increase in bytes received.")); + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // pop + // download + // nifInfoStatus + // getConnectionSpeedStatus + CleanupStack::PopAndDestroy(3, download); + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0056::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0056"); + } + + + +CCTSYIntegrationTestPacketContext0057::CCTSYIntegrationTestPacketContext0057(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0057::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0057::~CCTSYIntegrationTestPacketContext0057() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0057::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0057 + * @SYMFssID BA/CTSY/PKTC-0057 + * @SYMTestCaseDesc Download data with a primary context and a secondary context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::OpenNewSecondaryContext, RPacketContext::SetConfig, RPacketContext::Activate, RPacketContext::GetConnectionSpeed, RPacketContext::NotifyConnectionSpeedChange, RPacketContext::NotifyDataTransferred, RPacketContext::GetDataVolumeTransferred, RPacketContext::LoanCommPort, RPacketContext::RecoverCommPort, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileCapabilities, RPacketQoS::OpenNewQoS, RPacketContext::AddPacketFilter + * @SYMTestExpectedResults Pass - Context activated. Data transferred advances. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify connection speed and volume data transferred advances realistically. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// +/* + + // Ensure phone is attached to packet service. + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Post notification for service's status change + TExtEtelRequestStatus notifyServiceStChStatus(packetService, EPacketNotifyStatusChange); + CleanupStack::PushL(notifyServiceStChStatus); + RPacketService::TStatus packetServiceStatus; + packetService.NotifyStatusChange(notifyServiceStChStatus, packetServiceStatus); + + // === Activate a primary context === + + // Open a new primary context + // Set a valid context config using RPacketContext::SetConfig + + // Activate context with ESOCK server + TBuf<140> host(_L("developer.symbian.com")); + TBuf<140> page(_L("/main/downloads/papers/IMS_Introduction_Part_1.pdf")); + CHTTPDownload* download = new (ELeave) CHTTPDownload(this); + CleanupStack::PushL(download); + ASSERT_TRUE(download->StartDownloadL(host,page),_L("Download Failed")); + + // Get context info + TExtEtelRequestStatus getContextInfo(packetService, EPacketGetContextInfo); + CleanupStack::PushL(getContextInfo); + RPacketService::TContextInfo contextInfo; + TInt index = 0; + packetService.GetContextInfo(getContextInfo, index, contextInfo); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out")); + ASSERT_EQUALS(getContextInfo.Int(), KErrNone, _L("RPacketService::GetContextInfo returned an error")); + ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name")); + + // Open a handle on an existing context with OpenExistingContext + RPacketContext primaryPacketContext; + ASSERT_EQUALS(primaryPacketContext.OpenExistingContext(packetService, contextInfo.iName), KErrNone, _L("RPacketContext::OpenExistingContext returned with an error.")); + + // Post notification for RPacketContext::NotifyDataTransferred + ERR_PRINTF1(_L("@CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out.")); + //TExtEtelRequestStatus notifyDataTransferredStatus(primaryPacketContext, EPacketContextNotifyDataTransferred); + //CleanupStack::PushL(notifyDataTransferredStatus); + //RPacketContext::TDataVolume primaryDataVolume; + //primaryPacketContext.NotifyDataTransferred(notifyDataTransferredStatus, primaryDataVolume); + + // Check RPacketService::NotifyStatusChange completes with EStatusActive + RPacketService::TStatus expectedPacketServiceStatus = RPacketService::EStatusActive; + iPacketServiceTestHelper.WaitForPacketServiceNotifyStatusChange( + packetService, + notifyServiceStChStatus, + packetServiceStatus, + expectedPacketServiceStatus, + KErrNone); + + // Check RPacketService::GetStatus returns EStatusActive + RPacketService::TStatus pckSrvcStatus; + ASSERT_EQUALS(packetService.GetStatus(pckSrvcStatus), KErrNone, _L("RPacketService::GetStatus returned with an error.")); + ASSERT_EQUALS(pckSrvcStatus, RPacketService::EStatusActive, _L("RPacketService::GetStatus returns incorrect status.")); + + // Check RPacketContext::GetStatus returns EStatusActive + RPacketContext::TContextStatus packetContextStatus; + ASSERT_EQUALS(primaryPacketContext.GetStatus(packetContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(packetContextStatus, RPacketContext::EStatusActive, _L("RPacketContext::GetStatus returns incorrect status.")); + + // Post notification for the RPacketContext::NotifyConnectionSpeedChange + TExtEtelRequestStatus notifyConnectionSpeedChangeStatus(primaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifyConnectionSpeedChangeStatus); + TUint rate(0); + primaryPacketContext.NotifyConnectionSpeedChange(notifyConnectionSpeedChangeStatus, rate); + + // === Activate a secondary context === + + // Activate secondary context with ESOCK server + TBuf<140> subHost(_L("developer.symbian.com")); + TBuf<140> subPage(_L("/main/downloads/papers/SymbianOSv91/Whats_new_in_Symbian_OS_v9.1.pdf")); + TInt port = 80; + CHTTPDownload* downloadSecondary = new (ELeave) CHTTPDownload(this); + CleanupStack::PushL(downloadSecondary); + // ASSERT_TRUE(downloadSecondary->StartDownloadL(subHost, subPage, port, ETrue), _L("Download Failed")); + ASSERT_TRUE(downloadSecondary->StartDownloadL(subHost, subPage, port), _L("Download Failed")); + + + // Get secondary context info + index = 1; + packetService.GetContextInfo(getContextInfo, index, contextInfo); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getContextInfo, ETimeLong), KErrNone, _L("RPacketService::GetContextInfo timed out")); + ASSERT_TRUE(contextInfo.iName.Length() > 0, _L("RPacketService::GetContextInfo returned with zero length context name")); + + // Open a handle on an existing secondary context with OpenExistingContext + RPacketContext secondaryPacketContext; + ASSERT_EQUALS(secondaryPacketContext.OpenExistingContext(packetService, contextInfo.iName), KErrNone, _L("RPacketContext::OpenExistingContext returned with an error.")); + + // Post notification for RPacketContext::NotifyDataTransferred + ERR_PRINTF1(_L("@CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out.")); + //TExtEtelRequestStatus notifySecDataTransferredStatus(secondaryPacketContext, EPacketContextNotifyDataTransferred); + //CleanupStack::PushL(notifySecDataTransferredStatus); + //RPacketContext::TDataVolume secondaryDataVolume; + //secondaryPacketContext.NotifyDataTransferred(notifySecDataTransferredStatus, secondaryDataVolume); + + // Post notification for the secondary context connection speed change + TExtEtelRequestStatus notifySecConnectionSpeedChangeStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecConnectionSpeedChangeStatus); + TUint secRate(0); + secondaryPacketContext.NotifyConnectionSpeedChange(notifyConnectionSpeedChangeStatus, secRate); + + // === Add packet filter === + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + ASSERT_EQUALS(AddPacketFilterV2ToContextL(secondaryPacketContext,1), KErrNone, _L("RPacketContext::AddPacketFilter returned with error status")); + + // === Add QoS === + + // Open a new QoS from the secondary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetSecondaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + TExtEtelRequestStatus getProfileCapStatus(packetQoS, EPacketQoSGetProfileCaps); + CleanupStack::PushL(getProfileCapStatus); + RPacketQoS::TQoSCapsGPRS qosCapGprs; + TPckg qosCapsGprsPckg(qosCapGprs); + packetQoS.GetProfileCapabilities(getProfileCapStatus, qosCapsGprsPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileCapStatus, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileCapabilities timed out.")); + ASSERT_EQUALS(getProfileCapStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileCapabilities returned with error status.")); + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + FillParametersFromCapabilities(qosGprsRequested,qosCapGprs); + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Post notification for context's status change + TExtEtelRequestStatus notifySecContextStChStatus(secondaryPacketContext, EPacketContextNotifyStatusChange); + CleanupStack::PushL(notifySecContextStChStatus); + RPacketContext::TContextStatus secPacketContextStatus; + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + + // Activate context with RPacketContext::Activate + TExtEtelRequestStatus secContextActivateStatus(secondaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(secContextActivateStatus); + secondaryPacketContext.Activate(secContextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(secContextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(secContextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + RPacketContext::TContextStatus expectedSecContextStatus = RPacketContext::EStatusActivating; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + secondaryPacketContext.NotifyStatusChange(notifySecContextStChStatus, secPacketContextStatus); + expectedSecContextStatus = RPacketContext::EStatusActive; + iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange( + secondaryPacketContext, + notifySecContextStChStatus, + secPacketContextStatus, + expectedSecContextStatus, + KErrNone); + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + ASSERT_EQUALS(secondaryPacketContext.GetStatus(secPacketContextStatus), KErrNone, _L("RPacketContext::GetStatus returned with an error.")); + ASSERT_EQUALS(secPacketContextStatus, RPacketContext::EStatusActive, _L("Packet Context's status expected to be EStatusActive but is not.")); + + // Loan comm port to the client with RPacketContext::LoanCommPort + + // === Send and receive some data and check data transferred advances === + + // Send some data and receive some data to which would go to the primary and the secondary context depending on packet filter values + + // Check RPacketContext::NotifyDataTransferred for primary context completes with TDataVolume::iBytesSent > 0 + // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out. + //ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyDataTransferredStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyDataTransferred did not complete.")); + //ASSERT_EQUALS(notifyDataTransferredStatus.Int(), KErrNone, _L("RPacketContext::NotifyDataTransferred returned with error status.")); + //ASSERT_TRUE(primaryDataVolume.iBytesSent > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesSent.")); + + // Check RPacketContext::NotifyDataTransferred for primary context completes with TDataVolume::iBytesReceived > 0 + // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out. + //ASSERT_TRUE(primaryDataVolume.iBytesReceived > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesReceived.")); + + // Check RPacketContext::GetConnectionSpeed for primary context returns aRate > 0 + TExtEtelRequestStatus getConnectionSpeedStatus(primaryPacketContext, EPacketContextGetConnectionSpeed); + CleanupStack::PushL(getConnectionSpeedStatus); + TUint connectionSpeedRate; + primaryPacketContext.GetConnectionSpeed(getConnectionSpeedStatus, connectionSpeedRate); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getConnectionSpeedStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConnectionSpeed timed out.")); + ASSERT_EQUALS(getConnectionSpeedStatus.Int(), KErrNone, _L("RPacketContext::GetConnectionSpeed failed.")); + ASSERT_TRUE(connectionSpeedRate > 0, _L("RPacketContext::GetConnectionSpeed is lower than expected.")); + + // Check RPacketContext::NotifyConnectionSpeedChange for primary context returns aRate > 0 + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyConnectionSpeedChangeStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange timed out.")); + ASSERT_EQUALS(notifyConnectionSpeedChangeStatus.Int(), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange failed.")); + ASSERT_TRUE(rate > 0, _L("RPacketContext::NotifyConnectionSpeedChange returns aRate = 0.")); + + // Check RPacketContext::NotifyDataTransferred for secondary context completes with TDataVolume::iBytesSent > 0 + // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out. + //ASSERT_EQUALS(WaitForRequestWithTimeOut(notifySecDataTransferredStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyDataTransferred did not complete.")); + //ASSERT_EQUALS(notifySecDataTransferredStatus.Int(), KErrNone, _L("RPacketContext::NotifyDataTransferred returned with error status.")); + //ASSERT_TRUE(secondaryDataVolume.iBytesSent > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesSent.")); + + // Check RPacketContext::NotifyDataTransferred for secondary context completes with TDataVolume::iBytesReceived > 0 + // @CTSYProblem: RPacketContext::NotifyDataTransferred is not supported by CTSY. All code related to this request is commented out. + //ASSERT_TRUE(secondaryDataVolume.iBytesReceived > 0, _L("RPacketContext::NotifyDataTransferred returned with zero iBytesReceived.")); + + // Check RPacketContext::GetConnectionSpeed for secondary context returns aRate > 0 + TExtEtelRequestStatus getSecConnectionSpeedStatus(secondaryPacketContext, EPacketContextGetConnectionSpeed); + CleanupStack::PushL(getSecConnectionSpeedStatus); + secondaryPacketContext.GetConnectionSpeed(getSecConnectionSpeedStatus, connectionSpeedRate); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getSecConnectionSpeedStatus, ETimeMedium), KErrNone, _L("RPacketContext::GetConnectionSpeed timed out.")); + ASSERT_EQUALS(getSecConnectionSpeedStatus.Int(), KErrNone, _L("RPacketContext::GetConnectionSpeed failed.")); + ASSERT_TRUE(connectionSpeedRate > 0, _L("RPacketContext::GetConnectionSpeed is lower than expected.")); + + // Check RPacketContext::NotifyConnectionSpeedChange for secondary context returns aRate > 0 + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifySecConnectionSpeedChangeStatus, ETimeMedium), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange timed out.")); + ASSERT_EQUALS(notifySecConnectionSpeedChangeStatus.Int(), KErrNone, _L("RPacketContext::NotifyConnectionSpeedChange failed.")); + ASSERT_TRUE(secRate > 0, _L("RPacketContext::NotifyConnectionSpeedChange returns aRate = 0.")); + + // Repeat this section 10 times and check that iBytesSent and iBytesReceived is higher than the previous + RPacketContext::TDataVolume priDataVolume; + RPacketContext::TDataVolume secDataVolume; + TUint32 primaryLastBytesSent(0); + TUint32 primaryLastBytesReceived(0); + TUint32 secondaryLastBytesSent(0); + TUint32 secondaryLastBytesReceived(0); + + while(download->VerifyDownloading()) + { + // Check RPacketContext::GetDataVolumeTransferred for primary context returns TDataVolume::iBytesSent is higher than the previous + primaryPacketContext.GetDataVolumeTransferred(priDataVolume); + ASSERT_TRUE(priDataVolume.iBytesSent > primaryLastBytesSent, _L("Primary packet context iBytesSend value is not higher than the previous iBytesSend value")); + primaryLastBytesSent = priDataVolume.iBytesSent; + + // Check RPacketContext::GetDataVolumeTransferred for primary context returns TDataVolume::iBytesReceived is higher than the previous + ASSERT_TRUE(priDataVolume.iBytesReceived > primaryLastBytesReceived, _L("Primary packet context iBytesReceived value is not higher than the previous iBytesReceived value")); + primaryLastBytesReceived = priDataVolume.iBytesReceived; + + // Check RPacketContext::GetDataVolumeTransferred for secondary context returns TDataVolume::iBytesSent is higher than the previous + secondaryPacketContext.GetDataVolumeTransferred(secDataVolume); + ASSERT_TRUE(secDataVolume.iBytesSent > secondaryLastBytesSent, _L("Secondary packet context iBytesSend value is not higher than the previous iBytesSend value")); + secondaryLastBytesSent = secDataVolume.iBytesSent; + + // Check RPacketContext::GetDataVolumeTransferred for secondary context returns TDataVolume::iBytesReceived is higher than the previous + ASSERT_TRUE(secDataVolume.iBytesReceived > secondaryLastBytesReceived, _L("Secondary packet context iBytesReceived value is not higher than the previous iBytesReceived value")); + secondaryLastBytesReceived = secDataVolume.iBytesReceived; + + DEBUG_PRINTF2(_L("Primary context sent data: %d bytes"), primaryLastBytesSent); + DEBUG_PRINTF2(_L("Primary context received data: %d bytes"), primaryLastBytesReceived); + DEBUG_PRINTF2(_L("Secondary context sent data: %d bytes"), secondaryLastBytesSent); + DEBUG_PRINTF2(_L("Secondary context received data: %d bytes"), secondaryLastBytesReceived); + User::After(KOneSecond*3); + } + + // Release QoS + iEtelSessionMgr.ReleaseSecondaryPacketContextQoS(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Release packet contexts + iEtelSessionMgr.ReleaseSecondaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1, + KSecondaryPacketContext1); + + // Release primary packet context + iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // notifyServiceStChStatus + // download + // getContextInfo + // notifyDataTransferredStatus (@CTSYProblem, commented out) + // notifyConnectionSpeedChangeStatus + // downloadSecondary + // notifySecDataTransferredStatus (@CTSYProblem, commented out) + // notifySecConnectionSpeedChangeStatus + // getProfileCapStatus + // setProfileParamStatus + // notifySecContextStChStatus + // secContextActivateStatus + // getConnectionSpeedStatus + // getSecConnectionSpeedStatus + CleanupStack::PopAndDestroy(12, ¬ifyServiceStChStatus); +*/ + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0057::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0057"); + } + + + +CCTSYIntegrationTestPacketContext0058::CCTSYIntegrationTestPacketContext0058(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0058::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0058::~CCTSYIntegrationTestPacketContext0058() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0058::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0058 + * @SYMFssID BA/CTSY/PKTC-0058 + * @SYMTestCaseDesc Activate a PDP context with the requested QOS equal to the subscribed QoS. + * @SYMTestPriority High + * @SYMTestActions RPacketQoS::NotifyProfileChanged, RPacketQoS::GetProfileParameters, RPacketContext::SetConfig, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileCapabilities + * @SYMTestExpectedResults Pass - A PDP context with subscribed QoS could be activated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify negotiated QoS same as that requested. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + + // == Activate a PDP context with the requested QOS equal to the subscribed QoS == + DEBUG_PRINTF1(_L("== GPRS ==")); + DoTest0058L(apn, user, pwd, EQoSGPRS); + + // === Repeat test for R99_R4 === + // Repeat test with TQoSCapsR99_R4 instead of TQoSCapsGPRS, TQoSR99_R4Requested instead of TQoSGPRSRequested and TQoSR99_R4Negotiated instead of TQoSGPRSNegotiated + DEBUG_PRINTF1(_L("== R99_R4 ==")); + DoTest0058L(apn, user, pwd, EQoSR4); + + // === Repeat test for R5 === + // Repeat test with TQoSCapsR5 instead of TQoSCapsGPRS, TQoSR5Requested instead of TQoSGPRSRequested, and TQoSR5Negotiated instead of TQoSGPRSNegotiated + DEBUG_PRINTF1(_L("== R5 ==")); + DoTest0058L(apn, user, pwd, EQoSR5); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // getNetworkStatus + CleanupStack::PopAndDestroy(1, &getNetworkStatus); + + return TestStepResult(); + } + + + + +void CCTSYIntegrationTestPacketContext0058::DoTest0058L(TPtrC& aApn, TPtrC& aUser, TPtrC& aPwd, TInt aQoSCapType) +/** + * Activate a PDP context with the requested QOS equal to the subscribed QoS. + * @param aNWType Gprs / R99_R4 / R5. + */ + { + + // Open a new primary context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Open a new primary context QoS + RPacketQoS& contextQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Get the QoS profile capabilities with RPacketQoS::GetProfileCapabilities with aProfileCaps of type TQoSCapsGPRS/TQoSCapsR99_R4/TQoSCapsR5. + RPacketQoS::TQoSCapsGPRS qosCapsGPRS; + RPacketQoS::TQoSCapsR99_R4 qosCapsR99; + RPacketQoS::TQoSCapsR5 qosCapsR5; + + switch(aQoSCapType) + { + case EQoSGPRS: + GetProfileCapsL(contextQoS, qosCapsGPRS); + break; + + case EQoSR4: + GetProfileCapsL(contextQoS, qosCapsR99); + break; + + case EQoSR5: + GetProfileCapsL(contextQoS, qosCapsR5); + break; + } + + // Set the minimum requested QoS profile parameters to lower than what was returned from GetProfileCapabilities using RPacketQoS::SetProfileParameters + // with aProfile of type TQoSGPRSRequested/TQoSR99_R4Requested/TQoSR5Requested. + // Set all iMin... to a lower value than that returned by GetProfileCapabilities and all iReq... to the same value as that returned by GetProfileCapabilities. + TExtEtelRequestStatus setProfileParametersStatus(contextQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParametersStatus); + RPacketQoS::TQoSGPRSRequested qoSGPRSRequested; + TPckg qoSGPRSRequestedPkg(qoSGPRSRequested); + RPacketQoS::TQoSR99_R4Requested qoSR99Requested; + TPckg qoSR99RequestedPkg(qoSR99Requested); + RPacketQoS::TQoSR5Requested qoSR5Requested; + TPckg qoSR5RequestedPkg(qoSR5Requested); + RPacketQoS::TBitRate bitRate; + bitRate.iDownlinkRate = 0; + bitRate.iUplinkRate = 0; + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + qoSGPRSRequested.iMinDelay = RPacketQoS::EUnspecifiedDelayClass; + qoSGPRSRequested.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput; + qoSGPRSRequested.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput; + qoSGPRSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence; + qoSGPRSRequested.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass; + + qoSGPRSRequested.iReqDelay = RPacketQoS::EDelayClass3; + qoSGPRSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughputBestEffort; + qoSGPRSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput8000; + qoSGPRSRequested.iReqPrecedence = RPacketQoS::EPriorityMediumPrecedence; + qoSGPRSRequested.iReqReliability = RPacketQoS::EReliabilityClass3; + contextQoS.SetProfileParameters(setProfileParametersStatus ,qoSGPRSRequestedPkg); + break; + + case EQoSR4: // R99_R4 + qoSR99Requested.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + qoSR99Requested.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified; + qoSR99Requested.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified; + qoSR99Requested.iMinAcceptableMaxSDUSize = 10; + qoSR99Requested.iMinAcceptableMaxRate = bitRate; + qoSR99Requested.iMaxBER = RPacketQoS::EBERUnspecified; + qoSR99Requested.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + qoSR99Requested.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + qoSR99Requested.iMaxTransferDelay = 4000; + qoSR99Requested.iMinGuaranteedRate = bitRate; + + qoSR99Requested.iReqTrafficClass = RPacketQoS::ETrafficClassInteractive; + qoSR99Requested.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderNotRequired; + qoSR99Requested.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired; + qoSR99Requested.iReqMaxSDUSize = 1500; + bitRate.iDownlinkRate = 104; + bitRate.iUplinkRate = 104; + qoSR99Requested.iReqMaxRate = bitRate; + qoSR99Requested.iReqBER = RPacketQoS::EBERFourPerThousand; + qoSR99Requested.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerThousand; + qoSR99Requested.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority3; + qoSR99Requested.iReqTransferDelay = 1600; + bitRate.iDownlinkRate = 10; + bitRate.iUplinkRate = 10; + qoSR99Requested.iReqGuaranteedRate = bitRate; + contextQoS.SetProfileParameters(setProfileParametersStatus ,qoSR99RequestedPkg); + break; + + case EQoSR5: // R5 + qoSR5Requested.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + qoSR5Requested.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified; + qoSR5Requested.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified; + qoSR5Requested.iMinAcceptableMaxSDUSize = 10; + qoSR5Requested.iMinAcceptableMaxRate = bitRate; + qoSR5Requested.iMaxBER = RPacketQoS::EBERUnspecified; + qoSR5Requested.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + qoSR5Requested.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + qoSR5Requested.iMaxTransferDelay = 0; + qoSR5Requested.iMinGuaranteedRate = bitRate; + + qoSR5Requested.iReqTrafficClass = RPacketQoS::ETrafficClassInteractive; + qoSR5Requested.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderNotRequired; + qoSR5Requested.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired; + qoSR5Requested.iReqMaxSDUSize = 1500; + bitRate.iDownlinkRate = 64; + bitRate.iUplinkRate = 16; + qoSR5Requested.iReqMaxRate = bitRate; + qoSR5Requested.iReqBER = RPacketQoS::EBERFourPerThousand; + qoSR5Requested.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerTenThousand; + qoSR5Requested.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority3; + qoSR5Requested.iReqTransferDelay = 1600; + qoSR5Requested.iReqGuaranteedRate = bitRate; + qoSR5Requested.iSignallingIndication = qosCapsR5.iSignallingIndication; + qoSR5Requested.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown; + contextQoS.SetProfileParameters(setProfileParametersStatus ,qoSR5RequestedPkg); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::SetProfileParameters timed out")); + ASSERT_EQUALS(setProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with an error")); + + // Set the context config with RPacketContext::SetConfig + TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + RPacketContext::TContextConfigGPRS setConfigGprs; + TPckg setConfigPkgGprs(setConfigGprs); + RPacketContext::TContextConfigR99_R4 setConfigR99; + TPckg setConfigPkgR99(setConfigR99); + RPacketContext::TContextConfig_R5 setConfigR5; + TPckg setConfigPkgR5(setConfigR5); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + setConfigGprs.iAccessPointName.Copy(aApn); + setConfigGprs.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigGprs.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgGprs); + break; + + case EQoSR4: // R99_R4 + setConfigR99.iAccessPointName.Copy(aApn); + setConfigR99.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigR99.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR99); + break; + + case EQoSR5: // R5 + setConfigR5.iAccessPointName.Copy(aApn); + setConfigR5.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigR5.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR5); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with an error")); + + // Post notification for RPacketQoS::NotifyProfileChanged + TExtEtelRequestStatus notifyProfileChangedStatus(contextQoS, EPacketQoSNotifyProfileChanged); + CleanupStack::PushL(notifyProfileChangedStatus); + RPacketQoS::TQoSGPRSNegotiated qoSGPRSNegotiated; + TPckg qoSGPRSNegotiatedPkg(qoSGPRSNegotiated); + RPacketQoS::TQoSR99_R4Negotiated qoSR99Negotiated; + TPckg qoSR99NegotiatedPkg(qoSR99Negotiated); + RPacketQoS::TQoSR5Negotiated qoSR5Negotiated; + TPckg qoSR5NegotiatedPkg(qoSR5Negotiated); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + contextQoS.NotifyProfileChanged(notifyProfileChangedStatus, qoSGPRSNegotiatedPkg); + break; + + case EQoSR4: // R99_R4 + contextQoS.NotifyProfileChanged(notifyProfileChangedStatus, qoSR99NegotiatedPkg); + break; + + case EQoSR5: // R5 + contextQoS.NotifyProfileChanged(notifyProfileChangedStatus, qoSR5NegotiatedPkg); + break; + } + + // Activate the primary context with RPacketContext::Activate. + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketQoS::NotifyProfileChanged returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with same as the requested values used in SetProfileParameters. + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyProfileChangedStatus, ETimeLong), KErrNone, _L("RPacketQoS::NotifyProfileChanged timed out")); + ASSERT_EQUALS(notifyProfileChangedStatus.Int(), KErrNone, _L("RPacketQoS::NotifyProfileChanged returned with error status.")); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + ASSERT_EQUALS(qoSGPRSNegotiated.iDelay, qoSGPRSRequested.iReqDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iDelay as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iMeanThroughput, qoSGPRSRequested.iReqMeanThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iMeanThroughput as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iPeakThroughput, qoSGPRSRequested.iReqPeakThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iPeakThroughput as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iPrecedence, qoSGPRSRequested.iReqPrecedence, _L("RPacketQoS::NotifyProfileChanged did not return with same iPrecedence as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iReliability, qoSGPRSRequested.iReqReliability, _L("RPacketQoS::NotifyProfileChanged did not return with same iReliability as used in SetProfileParameters")); + break; + + case EQoSR4: // R99_R4 + ASSERT_EQUALS(qoSR99Negotiated.iTrafficClass, qoSR99Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficClass as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iDeliveryOrderReqd, qoSR99Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliveryOrderReqd as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iDeliverErroneousSDU, qoSR99Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliverErroneousSDU as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iMaxSDUSize, qoSR99Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxSDUSize as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iDownlinkRate, qoSR99Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iUplinkRate, qoSR99Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iBER, qoSR99Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return with same iBER as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iSDUErrorRatio, qoSR99Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return with same iSDUErrorRatio as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iTrafficHandlingPriority, qoSR99Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficHandlingPriority as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iTransferDelay, qoSR99Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iTransferDelay as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iDownlinkRate, qoSR99Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iUplinkRate, qoSR99Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters")); + break; + + case EQoSR5: // R5 + ASSERT_EQUALS(qoSR5Negotiated.iTrafficClass, qoSR5Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficClass as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iDeliveryOrderReqd, qoSR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliveryOrderReqd as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iDeliverErroneousSDU, qoSR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return with same iDeliverErroneousSDU as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iMaxSDUSize, qoSR5Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxSDUSize as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iDownlinkRate, qoSR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iUplinkRate, qoSR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iBER, qoSR5Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return with same iBER as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iSDUErrorRatio, qoSR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return with same iSDUErrorRatio as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iTrafficHandlingPriority, qoSR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return with same iTrafficHandlingPriority as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iTransferDelay, qoSR5Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iTransferDelay as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iDownlinkRate, qoSR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iUplinkRate, qoSR5Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iSignallingIndication, qoSR5Requested.iSignallingIndication, _L("RPacketQoS::NotifyProfileChanged did not return with same iSignallingIndication as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iSourceStatisticsDescriptor, qoSR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::NotifyProfileChanged did not return with same iSourceStatisticsDescriptor as used in SetProfileParameters")); + break; + } + + // Check RPacketQoS::GetProfileParameters returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with same as the requested values used in SetProfileParameters. + TExtEtelRequestStatus getProfileParametersStatus(contextQoS, EPacketQoSGetProfileParams); + CleanupStack::PushL(getProfileParametersStatus); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + contextQoS.GetProfileParameters(getProfileParametersStatus, qoSGPRSNegotiatedPkg); + break; + + case EQoSR4: // R99_R4 + contextQoS.GetProfileParameters(getProfileParametersStatus, qoSR99NegotiatedPkg); + break; + + case EQoSR5: // R5 + contextQoS.GetProfileParameters(getProfileParametersStatus, qoSR5NegotiatedPkg); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out")); + ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error")); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + ASSERT_EQUALS(qoSGPRSNegotiated.iDelay, qoSGPRSRequested.iReqDelay, _L("RPacketQoS::NotifyProfileChanged did not return with same iDelay as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iMeanThroughput, qoSGPRSRequested.iReqMeanThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iMeanThroughput as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iPeakThroughput, qoSGPRSRequested.iReqPeakThroughput, _L("RPacketQoS::NotifyProfileChanged did not return with same iPeakThroughput as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iPrecedence, qoSGPRSRequested.iReqPrecedence, _L("RPacketQoS::NotifyProfileChanged did not return with same iPrecedence as used in SetProfileParameters")); + ASSERT_EQUALS(qoSGPRSNegotiated.iReliability, qoSGPRSRequested.iReqReliability, _L("RPacketQoS::NotifyProfileChanged did not return with same iReliability as used in SetProfileParameters")); + break; + + case EQoSR4: // R99_R4 + ASSERT_EQUALS(qoSR99Negotiated.iTrafficClass, qoSR99Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficClass as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iDeliveryOrderReqd, qoSR99Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return with same iDeliveryOrderReqd as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iDeliverErroneousSDU, qoSR99Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return with same iDeliverErroneousSDU as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iMaxSDUSize, qoSR99Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return with same iMaxSDUSize as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iDownlinkRate, qoSR99Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iMaxRate.iUplinkRate, qoSR99Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iBER, qoSR99Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return with same iBER as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iSDUErrorRatio, qoSR99Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return with same iSDUErrorRatio as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iTrafficHandlingPriority, qoSR99Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficHandlingPriority as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iTransferDelay, qoSR99Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return with same iTransferDelay as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iDownlinkRate, qoSR99Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR99Negotiated.iGuaranteedRate.iUplinkRate,qoSR99Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters")); + break; + + case EQoSR5: // R5 + ASSERT_EQUALS(qoSR5Negotiated.iTrafficClass, qoSR5Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficClass as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iDeliveryOrderReqd, qoSR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return with same iDeliveryOrderReqd as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iDeliverErroneousSDU, qoSR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return with same iDeliverErroneousSDU as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iMaxSDUSize, qoSR5Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return with same iMaxSDUSize as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iDownlinkRate, qoSR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iMaxRate.iUplinkRate, qoSR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iMaxRate.iUplinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iBER, qoSR5Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return with same iBER as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iSDUErrorRatio, qoSR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return with same iSDUErrorRatio as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iTrafficHandlingPriority, qoSR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return with same iTrafficHandlingPriority as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iTransferDelay, qoSR5Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return with same iTransferDelay as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iDownlinkRate, qoSR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iDownlinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iGuaranteedRate.iUplinkRate, qoSR5Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return with same iGuaranteedRate.iUplinkRate as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iSignallingIndication, qoSR5Requested.iSignallingIndication, _L("RPacketQoS::GetProfileParameters did not return with same iSignallingIndication as used in SetProfileParameters")); + ASSERT_EQUALS(qoSR5Negotiated.iSourceStatisticsDescriptor, qoSR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::GetProfileParameters did not return with same iSourceStatisticsDescriptor as used in SetProfileParameters")); + break; + } + + // Release primary packet context QoS + iEtelSessionMgr.ReleasePrimaryPacketContextQoS(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Release primary packet context + iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Pop + // setProfileParametersStatus + // setConfigStatus + // notifyProfileChangedStatus + // contextActivateStatus + // getProfileParametersStatus + CleanupStack::PopAndDestroy(5, &setProfileParametersStatus); + + } + + +TPtrC CCTSYIntegrationTestPacketContext0058::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0058"); + } + + + +CCTSYIntegrationTestPacketContext0059::CCTSYIntegrationTestPacketContext0059(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0059::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0059::~CCTSYIntegrationTestPacketContext0059() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0059::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0059 + * @SYMFssID BA/CTSY/PKTC-0059 + * @SYMTestCaseDesc Activate a PDP context with requested QoS is better than subscriber QoS (success scenario). + * @SYMTestPriority High + * @SYMTestActions RPacketQoS::NotifyProfileChanged, RPacketQoS::GetProfileParameters, RPacketContext::SetConfig, RPacketQoS::SetProfileParameters, RPacketQoS::GetProfileCapabilities + * @SYMTestExpectedResults Pass - A PDP context with subscribed QoS could be activated. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify negotiated QoS same as that requested. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + + // == Activate a PDP context with the requested QoS better than subscribed QoS == + DEBUG_PRINTF1(_L("== GPRS ==")); + DoTest0059L(apn, user, pwd, EQoSGPRS); + + // === Repeat test for R99_R4 === + // Repeat test with TQoSCapsR99_R4 instead of TQoSCapsGPRS, TQoSR99_R4Requested instead of TQoSGPRSRequested and TQoSR99_R4Negotiated instead of TQoSGPRSNegotiated + DEBUG_PRINTF1(_L("== R99_R4 ==")); + DoTest0059L(apn, user, pwd, EQoSR4); + + // === Repeat test for R5 === + // Repeat test with TQoSCapsR5 instead of TQoSCapsGPRS, TQoSR5Requested instead of TQoSGPRSRequested, and TQoSR5Negotiated instead of TQoSGPRSNegotiated + DEBUG_PRINTF1(_L("== R5 ==")); + DoTest0059L(apn, user, pwd, EQoSR5); + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + //PopAndDestroy + //getNetWorkStatus + CleanupStack::PopAndDestroy(1, &getNetworkStatus); + + return TestStepResult(); + } + +void CCTSYIntegrationTestPacketContext0059::DoTest0059L(TPtrC& aApn, TPtrC& aUser, TPtrC& aPwd, TInt aQoSCapType) + { + /** + * Activate a PDP context with the requested QOS better to the subscribed QoS. + * @param aQoSCapType Gprs / R99_R4 / R5. + */ + + // Open a new primary context. + RPacketContext& primaryPacketContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + //Open a new QoS + RPacketQoS& contextQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + //Get the QoS profile capabilities with RPacketQoS::GetProfileCapabilities with aProfileCaps of type TQoSCapsGPRS/TQoSCapsR99_R4/TQoSCapsR5 + RPacketQoS::TQoSCapsGPRS qosCapsGPRS; + RPacketQoS::TQoSCapsR99_R4 qosCapsR99; + RPacketQoS::TQoSCapsR5 qosCapsR5; + + switch(aQoSCapType) + { + case EQoSGPRS: + GetProfileCapsL(contextQoS, qosCapsGPRS); + break; + + case EQoSR4: + GetProfileCapsL(contextQoS, qosCapsR99); + break; + + case EQoSR5: + GetProfileCapsL(contextQoS, qosCapsR5); + break; + } + + RPacketQoS::TQoSGPRSRequested qosReqCapsGPRS; + TPckg qosReqCapsGPRSPckg(qosReqCapsGPRS); + RPacketQoS::TQoSR99_R4Requested qosReqCapsR99; + TPckg qosReqCapsR99Pckg(qosReqCapsR99); + RPacketQoS::TQoSR5Requested qosReqCapsR5; + TPckg qosReqCapsR5Pckg(qosReqCapsR5); + + // Set the minimum requested QoS profile parameters to contain lower(worse) values than those that were returned from GetProfileCapabilities by using SetProfileParameters + //with aProfile of type TQoSGPRSRequested/TQoSR99_R4Requested/TQoSR5Requested. + switch(aQoSCapType) + { + + case EQoSGPRS: + //Min caps + qosReqCapsGPRS.iMinDelay = RPacketQoS::EUnspecifiedDelayClass; + qosReqCapsGPRS.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput; + qosReqCapsGPRS.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput; + qosReqCapsGPRS.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence; + qosReqCapsGPRS.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass; + + //Req caps + qosReqCapsGPRS.iReqDelay = RPacketQoS::EDelayClass4; + qosReqCapsGPRS.iReqMeanThroughput = RPacketQoS::EMeanThroughput100; + qosReqCapsGPRS.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000; + qosReqCapsGPRS.iReqPrecedence = RPacketQoS::EPriorityLowPrecedence; + qosReqCapsGPRS.iReqReliability = RPacketQoS::EReliabilityClass1; + break; + + case EQoSR4: + //min values + qosReqCapsR99.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + qosReqCapsR99.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified; + qosReqCapsR99.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified; + qosReqCapsR99.iMinAcceptableMaxSDUSize = 1000; + qosReqCapsR99.iMinAcceptableMaxRate.iDownlinkRate = 0; + qosReqCapsR99.iMinAcceptableMaxRate.iUplinkRate = 0; + qosReqCapsR99.iMaxBER = RPacketQoS::EBERUnspecified; + qosReqCapsR99.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + qosReqCapsR99.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + qosReqCapsR99.iMaxTransferDelay = 4000; + qosReqCapsR99.iMinGuaranteedRate.iDownlinkRate = 1; + qosReqCapsR99.iMinGuaranteedRate.iUplinkRate = 1; + + //req values + qosReqCapsR99.iReqTrafficClass = RPacketQoS::ETrafficClassConversational; + qosReqCapsR99.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderRequired; + qosReqCapsR99.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryNotRequired; + qosReqCapsR99.iReqMaxSDUSize = 1500; + qosReqCapsR99.iReqMaxRate.iDownlinkRate = 16; + qosReqCapsR99.iReqMaxRate.iUplinkRate = 16; + qosReqCapsR99.iReqBER = RPacketQoS::EBERFourPerThousand; + qosReqCapsR99.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerThousand; + qosReqCapsR99.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority3; + qosReqCapsR99.iReqTransferDelay = 1000; + qosReqCapsR99.iReqGuaranteedRate.iDownlinkRate = 16; + qosReqCapsR99.iReqGuaranteedRate.iUplinkRate = 16; + break; + + case EQoSR5: + //min values + qosReqCapsR5.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + qosReqCapsR5.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified; + qosReqCapsR5.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified; + qosReqCapsR5.iMinAcceptableMaxSDUSize = 1000; + qosReqCapsR5.iMinAcceptableMaxRate.iDownlinkRate = 0; + qosReqCapsR5.iMinAcceptableMaxRate.iUplinkRate = 0; + qosReqCapsR5.iMaxBER = RPacketQoS::EBERUnspecified; + qosReqCapsR5.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + qosReqCapsR5.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + qosReqCapsR5.iMaxTransferDelay = 4000; + qosReqCapsR5.iMinGuaranteedRate.iDownlinkRate = 1; + qosReqCapsR5.iMinGuaranteedRate.iUplinkRate = 1; + + //req values + qosReqCapsR5.iReqTrafficClass = RPacketQoS::ETrafficClassInteractive; + qosReqCapsR5.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderRequired; + qosReqCapsR5.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryRequired; + qosReqCapsR5.iReqMaxSDUSize = 1500; + qosReqCapsR5.iReqMaxRate.iDownlinkRate = 16; + qosReqCapsR5.iReqMaxRate.iUplinkRate = 16; + qosReqCapsR5.iReqBER = RPacketQoS::EBERFivePerHundred; + qosReqCapsR5.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion; + qosReqCapsR5.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + qosReqCapsR5.iReqTransferDelay = 1000; + qosReqCapsR5.iReqGuaranteedRate.iDownlinkRate = 16; + qosReqCapsR5.iReqGuaranteedRate.iUplinkRate = 16; + qosReqCapsR5.iSignallingIndication = EFalse; + qosReqCapsR5.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorUnknown; + break; + + } + + //Set profile parameters + TExtEtelRequestStatus reqStatusSetProfileParams(contextQoS,EPacketQoSSetProfileParams); + CleanupStack::PushL(reqStatusSetProfileParams); + + switch(aQoSCapType) + { + + case EQoSGPRS: + contextQoS.SetProfileParameters(reqStatusSetProfileParams,qosReqCapsGPRSPckg ); + break; + + case EQoSR4: + contextQoS.SetProfileParameters(reqStatusSetProfileParams, qosReqCapsR99Pckg); + break; + + case EQoSR5: + contextQoS.SetProfileParameters(reqStatusSetProfileParams, qosReqCapsR5Pckg); + break; + + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusSetProfileParams, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(reqStatusSetProfileParams.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + //post notifier for NotifyProfileChanged + TExtEtelRequestStatus reqStatusNotifyProfileCh(contextQoS,EPacketQoSNotifyProfileChanged); + CleanupStack::PushL(reqStatusNotifyProfileCh); + + RPacketQoS::TQoSGPRSNegotiated qosNegCapsGPRS; + TPckg qosNegCapsGPRSPckg(qosNegCapsGPRS); + RPacketQoS::TQoSR99_R4Negotiated qosNegCapsR99; + TPckg qosNegCapsR99Pckg(qosNegCapsR99); + RPacketQoS::TQoSR5Negotiated qosNegCapsR5; + TPckg qosNegCapsR5Pckg(qosNegCapsR5); + + switch(aQoSCapType) + { + + case EQoSGPRS: + contextQoS.NotifyProfileChanged(reqStatusNotifyProfileCh,qosNegCapsGPRSPckg ); + break; + + case EQoSR4: + contextQoS.NotifyProfileChanged(reqStatusNotifyProfileCh, qosNegCapsR99Pckg); + break; + + case EQoSR5: + contextQoS.NotifyProfileChanged(reqStatusNotifyProfileCh, qosNegCapsR5Pckg); + break; + + } + + // Set the context config with RPacketContext::SetConfig + TExtEtelRequestStatus setConfigStatus(primaryPacketContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + + RPacketContext::TContextConfigGPRS setConfigGprs; + TPckg setConfigPkgGprs(setConfigGprs); + RPacketContext::TContextConfigR99_R4 setConfigR99; + TPckg setConfigPkgR99(setConfigR99); + RPacketContext::TContextConfig_R5 setConfigR5; + TPckg setConfigPkgR5(setConfigR5); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + setConfigGprs.iAccessPointName.Copy(aApn); + setConfigGprs.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigGprs.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgGprs); + break; + + case EQoSR4: // R99_R4 + setConfigR99.iAccessPointName.Copy(aApn); + setConfigR99.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigR99.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR99); + break; + + case EQoSR5: // R5 + setConfigR5.iAccessPointName.Copy(aApn); + setConfigR5.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + setConfigR5.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + primaryPacketContext.SetConfig(setConfigStatus, setConfigPkgR5); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with an error")); + + //Activate the primary context with RPacketContext::Activate. + TExtEtelRequestStatus contextActivateStatus(primaryPacketContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + primaryPacketContext.Activate(contextActivateStatus); + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + //Check RPacketQoS::NotifyProfileChanged returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated + //with higher(better) value as the requested minimum value used with SetProfileParameters + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusNotifyProfileCh, ETimeMedium), KErrNone, _L("RPacketQoS::NotifyProfileChanged timed out.")); + ASSERT_EQUALS(reqStatusNotifyProfileCh.Int(), KErrNone, _L("RPacketQoS::NotifyProfileChanged returned with error status.")); + + switch(aQoSCapType) + { + + case EQoSGPRS: + + ASSERT_TRUE(qosNegCapsGPRS.iDelay > qosReqCapsGPRS.iMinDelay, _L("Negotiated QoS iDelay is not better than minimun requested Qos iDelay")); + ASSERT_TRUE(qosNegCapsGPRS.iMeanThroughput > qosReqCapsGPRS.iMinMeanThroughput, _L("Negotiated QoS iMeanThroughput is not better than minimun requested Qos iMeanThroughput")); + ASSERT_TRUE(qosNegCapsGPRS.iPeakThroughput > qosReqCapsGPRS.iMinPeakThroughput, _L("Negotiated QoS iPeakThroughput is not better than minimun requested Qos iPeakThroughput")); + ASSERT_TRUE(qosNegCapsGPRS.iPrecedence > qosReqCapsGPRS.iMinPrecedence, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence")); + ASSERT_TRUE(qosNegCapsGPRS.iReliability > qosReqCapsGPRS.iMinReliability, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence")); + break; + + case EQoSR4: + + ASSERT_TRUE(qosNegCapsR99.iTrafficClass > qosReqCapsR99.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass")); + ASSERT_TRUE(qosNegCapsR99.iDeliveryOrderReqd > qosReqCapsR99.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd")); + ASSERT_TRUE(qosNegCapsR99.iDeliverErroneousSDU > qosReqCapsR99.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU")); + ASSERT_TRUE(qosNegCapsR99.iMaxSDUSize > qosReqCapsR99.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsR99.iMaxRate.iDownlinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsR99.iMaxRate.iUplinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate")); + ASSERT_TRUE(qosNegCapsR99.iBER > qosReqCapsR99.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsR99.iSDUErrorRatio > qosReqCapsR99.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio")); + ASSERT_TRUE(qosNegCapsR99.iTrafficHandlingPriority > qosReqCapsR99.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority")); + ASSERT_TRUE(qosNegCapsR99.iTransferDelay < qosReqCapsR99.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay")); + ASSERT_TRUE(qosNegCapsR99.iGuaranteedRate.iDownlinkRate > qosReqCapsR99.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsR99.iGuaranteedRate.iUplinkRate > qosReqCapsR99.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate")); + break; + + case EQoSR5: + + ASSERT_TRUE(qosNegCapsR5.iTrafficClass > qosReqCapsR5.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass")); + ASSERT_TRUE(qosNegCapsR5.iDeliveryOrderReqd > qosReqCapsR5.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd")); + ASSERT_TRUE(qosNegCapsR5.iDeliverErroneousSDU > qosReqCapsR5.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU")); + ASSERT_TRUE(qosNegCapsR5.iMaxSDUSize > qosReqCapsR5.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsR5.iMaxRate.iDownlinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsR5.iMaxRate.iUplinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate")); + ASSERT_TRUE(qosNegCapsR5.iBER > qosReqCapsR5.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsR5.iSDUErrorRatio > qosReqCapsR5.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio")); + ASSERT_TRUE(qosNegCapsR5.iTrafficHandlingPriority > qosReqCapsR5.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority")); + ASSERT_TRUE(qosNegCapsR5.iTransferDelay < qosReqCapsR5.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay")); + ASSERT_TRUE(qosNegCapsR5.iGuaranteedRate.iDownlinkRate > qosReqCapsR5.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsR5.iGuaranteedRate.iUplinkRate > qosReqCapsR5.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate")); + break; + + } + + RPacketQoS::TQoSGPRSNegotiated qosNegCapsNumberTwoGPRS; + TPckg qosNegCapsNumberTwoGPRSPckg(qosNegCapsNumberTwoGPRS); + RPacketQoS::TQoSR99_R4Negotiated qosNegCapsNumberTwoR99; + TPckg qosNegCapsNumberTwoR99Pckg(qosNegCapsNumberTwoR99); + RPacketQoS::TQoSR5Negotiated qosNegCapsNumberTwoR5; + TPckg qosNegCapsNumberTwoR5Pckg(qosNegCapsNumberTwoR5); + + //Check RPacketQoS::GetProfileParameters returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated + //with higher(better) value as the requested minimum value used with SetProfileParameters + TExtEtelRequestStatus reqStatusGetProfileParams(contextQoS,EPacketQoSGetProfileParams); + CleanupStack::PushL(reqStatusGetProfileParams); + + switch(aQoSCapType) + { + + case EQoSGPRS: + contextQoS.GetProfileParameters(reqStatusGetProfileParams, qosNegCapsNumberTwoGPRSPckg); + break; + + case EQoSR4: + contextQoS.GetProfileParameters(reqStatusGetProfileParams, qosNegCapsNumberTwoR99Pckg); + break; + + case EQoSR5: + contextQoS.GetProfileParameters(reqStatusGetProfileParams, qosNegCapsNumberTwoR5Pckg); + break; + + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(reqStatusGetProfileParams, ETimeMedium), KErrNone, _L("RPacketQoS::GetProfileParameters timed out.")); + ASSERT_EQUALS(reqStatusGetProfileParams.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with error status.")); + + switch(aQoSCapType) + { + + case EQoSGPRS: + + ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iDelay > qosReqCapsGPRS.iMinDelay, _L("Negotiated QoS iDelay is not better than minimun requested Qos iDelay")); + ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iMeanThroughput > qosReqCapsGPRS.iMinMeanThroughput, _L("Negotiated QoS iMeanThroughput is not better than minimun requested Qos iMeanThroughput")); + ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iPeakThroughput > qosReqCapsGPRS.iMinPeakThroughput, _L("Negotiated QoS iPeakThroughput is not better than minimun requested Qos iPeakThroughput")); + ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iPrecedence > qosReqCapsGPRS.iMinPrecedence, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence")); + ASSERT_TRUE(qosNegCapsNumberTwoGPRS.iReliability > qosReqCapsGPRS.iMinReliability, _L("Negotiated QoS iPrecedence is not better than minimun requested Qos iPrecedence")); + break; + + case EQoSR4: + + ASSERT_TRUE(qosNegCapsNumberTwoR99.iTrafficClass > qosReqCapsR99.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iDeliveryOrderReqd > qosReqCapsR99.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iDeliverErroneousSDU > qosReqCapsR99.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iMaxSDUSize > qosReqCapsR99.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iMaxRate.iDownlinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iMaxRate.iUplinkRate > qosReqCapsR99.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iBER > qosReqCapsR99.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iSDUErrorRatio > qosReqCapsR99.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iTrafficHandlingPriority > qosReqCapsR99.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iTransferDelay < qosReqCapsR99.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iGuaranteedRate.iDownlinkRate > qosReqCapsR99.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsNumberTwoR99.iGuaranteedRate.iUplinkRate > qosReqCapsR99.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate")); + break; + + case EQoSR5: + + ASSERT_TRUE(qosNegCapsNumberTwoR5.iTrafficClass > qosReqCapsR5.iMinTrafficClass, _L("Negotiated QoS iTrafficClass is not better than minimun requested Qos iTrafficClass")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iDeliveryOrderReqd > qosReqCapsR5.iMinDeliveryOrderReqd, _L("Negotiated QoS iDeliveryOrderReqd is not better than minimun requested Qos iDeliveryOrderReqd")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iDeliverErroneousSDU > qosReqCapsR5.iMinDeliverErroneousSDU, _L("Negotiated QoS iDeliverErroneousSDU is not better than minimun requested Qos iDeliverErroneousSDU")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iMaxSDUSize > qosReqCapsR5.iMinAcceptableMaxSDUSize, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iMaxRate.iDownlinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iDownlinkRate, _L("Negotiated QoS iMaxRate.iDownlinkRate is not better than minimun requested Qos iMaxRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iMaxRate.iUplinkRate > qosReqCapsR5.iMinAcceptableMaxRate.iUplinkRate, _L("Negotiated QoS iMaxRate.iUplinkRate is not better than minimun requested Qos iMaxRate.iUplinkRate")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iBER > qosReqCapsR5.iMaxBER, _L("Negotiated QoS iMaxSDUSize is not better than minimun requested Qos iMaxSDUSize")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iSDUErrorRatio > qosReqCapsR5.iMaxSDUErrorRatio, _L("Negotiated QoS iSDUErrorRatio is not better than minimun requested Qos iSDUErrorRatio")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iTrafficHandlingPriority > qosReqCapsR5.iMinTrafficHandlingPriority, _L("Negotiated QoS iTrafficHandlingPriority is not better than minimun requested Qos iTrafficHandlingPriority")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iTransferDelay < qosReqCapsR5.iMaxTransferDelay, _L("Negotiated QoS iTransferDelay is not better than minimun requested Qos iTransferDelay")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iGuaranteedRate.iDownlinkRate > qosReqCapsR5.iMinGuaranteedRate.iDownlinkRate, _L("Negotiated QoS iGuaranteedRate.iDownlinkRate is not better than minimun requested Qos iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(qosNegCapsNumberTwoR5.iGuaranteedRate.iUplinkRate > qosReqCapsR5.iMinGuaranteedRate.iUplinkRate, _L("Negotiated QoS iGuaranteedRate.iUplinkRate is not better than minimun requested Qos iGuaranteedRate.iUplinkRate")); + break; + + } + + //Release QoS + iEtelSessionMgr.ReleasePrimaryPacketContextQoS(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + + // Release packet context + iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + //PopAndDestroy + //reqStatusSetProfileParams + //reqStatusNotifyProfileCh + //setConfigStatus + //contextActivateStatus + //reqStatusGetProfileParams + + CleanupStack::PopAndDestroy(5,&reqStatusSetProfileParams); + + + } + +TPtrC CCTSYIntegrationTestPacketContext0059::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0059"); + } + + + +CCTSYIntegrationTestPacketContext0060::CCTSYIntegrationTestPacketContext0060(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0060::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0060::~CCTSYIntegrationTestPacketContext0060() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0060::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0060 + * @SYMFssID BA/CTSY/PKTC-0060 + * @SYMTestCaseDesc Activate a PDP context can be activated with requested QOS better than subscribed QOS (failure scenario). + * @SYMTestPriority High + * @SYMTestActions RPacketQos::SetProfileParameters, RPacketContext::Activate, RPacketQos::GetProfileParameters + * @SYMTestExpectedResults Pass - A PDP context with subscribed QoS could be activated. Negotiated QoS lower than requested. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify negotiated QoS lower than that requested. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Call TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL + RMobilePhone& phone = iEtelSessionMgr.GetPhoneL(KMainServer, KMainPhone); + CHECK_EQUALS_L(iNetworkTestHelper.WaitForRegisteredOnHomeNetworkL(phone), KErrNone, _L("TNetworkTsyTestHelper::WaitForRegisteredOnHomeNetworkL returned with an error")); + + // Get packet service + RPacketService& packetService = iEtelSessionMgr.GetPacketServiceL(KMainServer, KMainPhone, KMainPacketService); + + // Ensure phone is attached to the packet service + SetAttachModeToWhenPossibleAndWaitForAttachL(packetService); + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + // Get network info from phone + TExtEtelRequestStatus getNetworkStatus(phone, EMobilePhoneGetCurrentNetwork); + CleanupStack::PushL(getNetworkStatus); + RMobilePhone::TMobilePhoneNetworkInfoV1 info; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg infopckg(info); + phone.GetCurrentNetwork(getNetworkStatus, infopckg); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(getNetworkStatus, ETimeLong), KErrNone, _L("RMobilePhone::GetCurrentNetwork timed out")); + ASSERT_EQUALS(getNetworkStatus.Int(), KErrNone, _L("RMobilePhone::GetCurrentNetwork returned an error")); + + TPtrC apn, user, pwd; + iPacketServiceTestHelper.GetGprsSettings(info, apn, user, pwd); + + // == Activate a PDP context with the requested QOS better than subscribed QOS (failure scenario) by using TQoSCapsGPRS, TQoSGPRSRequested, TQoSGPRSNegotiated == + DEBUG_PRINTF1(_L("== GPRS ==")); + DoTest0060L(apn, user, pwd, EQoSGPRS); + + // === Repeat test for R99_R4 === + // Repeat test with TQoSCapsR99_R4 instead of TQoSCapsGPRS, TQoSR99_R4Requested instead of TQoSGPRSRequested and TQoSR99_R4Negotiated instead of TQoSGPRSNegotiated + DEBUG_PRINTF1(_L("== R99_R4 ==")); + DoTest0060L(apn, user, pwd, EQoSR4); + + // === Repeat test for R5 === + // Repeat test with TQoSCapsR5 instead of TQoSCapsGPRS, TQoSR5Requested instead of TQoSGPRSRequested, and TQoSR5Negotiated instead of TQoSGPRSNegotiated + DEBUG_PRINTF1(_L("== R5 ==")); + DoTest0060L(apn, user, pwd, EQoSR5); + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Pop + // getNetworkStatus + CleanupStack::PopAndDestroy(1, &getNetworkStatus); + + return TestStepResult(); + } + +void CCTSYIntegrationTestPacketContext0060::DoTest0060L( TPtrC& aApn, TPtrC& aUser, TPtrC& aPwd, TInt aQoSCapType ) +/** + * Activates primary packet context with default context parameters. + * @param aNetworkType Gprs / R99_R4 / R5. + */ + { + + // Open a new primary context. + RPacketContext& packetContext = iEtelSessionMgr.GetPrimaryPacketContextL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Open a new QoS from the primary context + RPacketQoS& packetQoS = iEtelSessionMgr.GetPrimaryPacketContextQoSL( + KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + //Get the QoS profile capabilities with RPacketQoS::GetProfileCapabilities with aProfileCaps of type TQoSCapsGPRS/TQoSCapsR99_R4/TQoSCapsR5 + RPacketQoS::TQoSCapsGPRS qosCapsGPRS; + RPacketQoS::TQoSCapsR99_R4 qosCapsR99; + RPacketQoS::TQoSCapsR5 qosCapsR5; + + switch(aQoSCapType) + { + case EQoSGPRS: + GetProfileCapsL(packetQoS, qosCapsGPRS); + break; + + case EQoSR4: + GetProfileCapsL(packetQoS, qosCapsR99); + break; + + case EQoSR5: + GetProfileCapsL(packetQoS, qosCapsR5); + break; + } + + + // Set the minimum requested QoS profile parameters to lower than what was returned from GetProfileCapabilities using RPacketQoS::SetProfileParameters + // with aProfile of type TQoSGPRSRequested/TQoSR99_R4Requested/TQoSR5Requested. + // Set all iMin... to a lower value than that returned by GetProfileCapabilities and all iReq... to a maximum value allowable by the API. + RPacketQoS::TQoSGPRSRequested qosGprsRequested; + TPckg qosGprsReqPckg(qosGprsRequested); + RPacketQoS::TQoSR99_R4Requested qosR99_R4Requested; + TPckg qosR99_R4ReqPckg(qosR99_R4Requested); + RPacketQoS::TQoSR5Requested qosR5Requested; + TPckg qosR5ReqPckg(qosR5Requested); + RPacketQoS::TBitRate bitRate; + bitRate.iDownlinkRate = 0; + bitRate.iUplinkRate = 0; + + TExtEtelRequestStatus setProfileParamStatus(packetQoS, EPacketQoSSetProfileParams); + CleanupStack::PushL(setProfileParamStatus); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + //Min caps + qosGprsRequested.iMinDelay = RPacketQoS::EUnspecifiedDelayClass; + qosGprsRequested.iMinMeanThroughput = RPacketQoS::EUnspecifiedMeanThroughput; + qosGprsRequested.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput; + qosGprsRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence; + qosGprsRequested.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass; + //Request caps + qosGprsRequested.iReqDelay = RPacketQoS::EDelayClass1; + qosGprsRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput50000000; + qosGprsRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput256000; + qosGprsRequested.iReqReliability = RPacketQoS::EReliabilityClass1; + qosGprsRequested.iReqPrecedence = RPacketQoS::EPriorityHighPrecedence; + packetQoS.SetProfileParameters(setProfileParamStatus, qosGprsReqPckg); + break; + + case EQoSR4: // R99_R4 + //Min caps + qosR99_R4Requested.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + qosR99_R4Requested.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified; + qosR99_R4Requested.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUNoDetection; + qosR99_R4Requested.iMinAcceptableMaxSDUSize = 10; + qosR99_R4Requested.iMinAcceptableMaxRate = bitRate; + qosR99_R4Requested.iMaxBER = RPacketQoS::EBERUnspecified; + qosR99_R4Requested.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + qosR99_R4Requested.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + qosR99_R4Requested.iMaxTransferDelay = 4000; + qosR99_R4Requested.iMinGuaranteedRate = bitRate; + //Request caps + qosR99_R4Requested.iReqTrafficClass = RPacketQoS::ETrafficClassConversational; + qosR99_R4Requested.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderRequired; + qosR99_R4Requested.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUNoDetection; + qosR99_R4Requested.iReqMaxSDUSize = 1520; + bitRate.iDownlinkRate = 16000; + bitRate.iUplinkRate = 16000; + qosR99_R4Requested.iReqMaxRate = bitRate; + qosR99_R4Requested.iReqBER = RPacketQoS::EBERSixPerHundredMillion; + qosR99_R4Requested.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion; + qosR99_R4Requested.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority1; + qosR99_R4Requested.iReqTransferDelay = 10; + qosR99_R4Requested.iReqGuaranteedRate = bitRate; + packetQoS.SetProfileParameters(setProfileParamStatus, qosR99_R4ReqPckg); + break; + + case EQoSR5: // R5 + //Min caps + qosR5Requested.iMinTrafficClass = RPacketQoS::ETrafficClassUnspecified; + qosR5Requested.iMinDeliveryOrderReqd = RPacketQoS::EDeliveryOrderUnspecified; + qosR5Requested.iMinDeliverErroneousSDU = RPacketQoS::EErroneousSDUDeliveryUnspecified; + qosR5Requested.iMinAcceptableMaxSDUSize = 10; + qosR5Requested.iMinAcceptableMaxRate = bitRate; + qosR5Requested.iMaxBER = RPacketQoS::EBERUnspecified; + qosR5Requested.iMaxSDUErrorRatio = RPacketQoS::ESDUErrorRatioUnspecified; + qosR5Requested.iMinTrafficHandlingPriority = RPacketQoS::ETrafficPriorityUnspecified; + qosR5Requested.iMaxTransferDelay = 0; + qosR5Requested.iMinGuaranteedRate = bitRate; + //Request caps + qosR5Requested.iReqTrafficClass = RPacketQoS::ETrafficClassConversational; + qosR5Requested.iReqDeliveryOrderReqd = RPacketQoS::EDeliveryOrderRequired; + qosR5Requested.iReqDeliverErroneousSDU = RPacketQoS::EErroneousSDUNoDetection; + qosR5Requested.iReqMaxSDUSize = 1520; + bitRate.iDownlinkRate = 16000; + bitRate.iUplinkRate = 16000; + qosR5Requested.iReqMaxRate = bitRate; + qosR5Requested.iReqBER = RPacketQoS::EBERSixPerHundredMillion; + qosR5Requested.iReqSDUErrorRatio = RPacketQoS::ESDUErrorRatioOnePerMillion; + qosR5Requested.iReqTrafficHandlingPriority = RPacketQoS::ETrafficPriority1; + qosR5Requested.iReqTransferDelay = 10; + qosR5Requested.iReqGuaranteedRate = bitRate; + qosR5Requested.iSignallingIndication = ETrue; + qosR5Requested.iSourceStatisticsDescriptor = RPacketQoS::ESourceStatisticsDescriptorSpeech; + packetQoS.SetProfileParameters(setProfileParamStatus, qosR5ReqPckg); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setProfileParamStatus, ETimeMedium), KErrNone, _L("RPacketQoS::SetProfileParameters timed out.")); + ASSERT_EQUALS(setProfileParamStatus.Int(), KErrNone, _L("RPacketQoS::SetProfileParameters returned with error status.")); + + // Set the context config with RPacketContext::SetConfig + RPacketContext::TContextConfigGPRS gprsConfig; + TPckg gprsConfigPk(gprsConfig); + RPacketContext::TContextConfigR99_R4 r99_r4Config; + TPckg r99_r4ConfigPk(r99_r4Config); + RPacketContext::TContextConfig_R5 r5Config; + TPckg r5ConfigPk(r5Config); + + TExtEtelRequestStatus setConfigStatus(packetContext, EPacketContextSetConfig); + CleanupStack::PushL(setConfigStatus); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + gprsConfig.iAccessPointName.Copy(aApn); + gprsConfig.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + gprsConfig.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + packetContext.SetConfig(setConfigStatus, gprsConfigPk); + break; + + case EQoSR4: // R99_R4 + r99_r4Config.iAccessPointName.Copy(aApn); + r99_r4Config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + r99_r4Config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + packetContext.SetConfig(setConfigStatus, r99_r4ConfigPk); + break; + + case EQoSR5: // R5 + r5Config.iAccessPointName.Copy(aApn); + r5Config.iProtocolConfigOption.iAuthInfo.iUsername.Copy(aUser); + r5Config.iProtocolConfigOption.iAuthInfo.iPassword.Copy(aPwd); + packetContext.SetConfig(setConfigStatus, r5ConfigPk); + break; + } + + ASSERT_EQUALS(WaitForRequestWithTimeOut(setConfigStatus, ETimeLong), KErrNone, _L("RPacketContext::SetConfig timed out")); + ASSERT_EQUALS(setConfigStatus.Int(), KErrNone, _L("RPacketContext::SetConfig returned with error status.")); + + //post notifier for NotifyProfileChanged + TExtEtelRequestStatus notifyProfileChangedStatus (packetQoS, EPacketQoSNotifyProfileChanged); + CleanupStack::PushL(notifyProfileChangedStatus); + RPacketQoS::TQoSGPRSNegotiated gprsNegotiatedQoSValues; + TPckg gprsNegotiatedQoSPk(gprsNegotiatedQoSValues); + RPacketQoS::TQoSR99_R4Negotiated r99_r4NegotiatedQoSValues; + TPckg r99_r4NegotiatedQoSPk(r99_r4NegotiatedQoSValues); + RPacketQoS::TQoSR5Negotiated r5NegotiatedQoSValues; + TPckg r5NegotiatedQoSPk(r5NegotiatedQoSValues); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + packetQoS.NotifyProfileChanged(notifyProfileChangedStatus, gprsNegotiatedQoSPk); + break; + + case EQoSR4: // R99_R4 + packetQoS.NotifyProfileChanged(notifyProfileChangedStatus, r99_r4NegotiatedQoSPk); + break; + + case EQoSR5: // R5 + packetQoS.NotifyProfileChanged(notifyProfileChangedStatus, r5NegotiatedQoSPk); + break; + } + + // Activate the primary context with RPacketContext::Activate. + TExtEtelRequestStatus contextActivateStatus(packetContext, EPacketContextActivate); + CleanupStack::PushL(contextActivateStatus); + packetContext.Activate(contextActivateStatus); + + ASSERT_EQUALS(WaitForRequestWithTimeOut(contextActivateStatus, ETimeLong), KErrNone, _L("RPacketContext::Activate timed out.")); + ASSERT_EQUALS(contextActivateStatus.Int(), KErrNone, _L("RPacketContext::Activate returned with error status.")); + + // Check RPacketQoS::NotifyProfileChanged returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with lower values than the requested values used in SetProfileParameters. + ASSERT_EQUALS(WaitForRequestWithTimeOut(notifyProfileChangedStatus, ETimeLong), KErrNone, _L("RPacketQoS::NotifyProfileChanged timed out")); + ASSERT_EQUALS(notifyProfileChangedStatus.Int(), KErrNone, _L("RPacketQoS::NotifyProfileChanged returned with error status.")); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + ASSERT_TRUE(gprsNegotiatedQoSValues.iDelay > qosGprsRequested.iReqDelay, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDelay.")); + // Network returns EMeanThroughputBestEffort (0x80000) which is is higher than best EMeanThroughput50000000 (0x40000). That is why comparison must be this way + ASSERT_TRUE(gprsNegotiatedQoSValues.iMeanThroughput > qosGprsRequested.iReqMeanThroughput, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMeanThroughput.")); + ASSERT_TRUE(gprsNegotiatedQoSValues.iPeakThroughput < qosGprsRequested.iReqPeakThroughput, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPeakThroughput.")); + ASSERT_TRUE(gprsNegotiatedQoSValues.iReliability > qosGprsRequested.iReqReliability, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iReliability.")); + ASSERT_TRUE(gprsNegotiatedQoSValues.iPrecedence > qosGprsRequested.iReqPrecedence, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPrecedence.")); + break; + + case EQoSR4: // R99_R4 + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficClass > qosR99_R4Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliveryOrderReqd > qosR99_R4Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliverErroneousSDU > qosR99_R4Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxSDUSize < qosR99_R4Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR99_R4Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR99_R4Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iBER < qosR99_R4Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iSDUErrorRatio < qosR99_R4Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficHandlingPriority > qosR99_R4Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTransferDelay > qosR99_R4Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR99_R4Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR99_R4Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate")); + break; + + case EQoSR5: // R5 + ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficClass > qosR5Requested.iReqTrafficClass, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass")); + ASSERT_TRUE(r5NegotiatedQoSValues.iDeliveryOrderReqd > qosR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iDeliverErroneousSDU > qosR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iMaxSDUSize < qosR5Requested.iReqMaxSDUSize, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iBER < qosR5Requested.iReqBER, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iSDUErrorRatio < qosR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficHandlingPriority > qosR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iTransferDelay > qosR5Requested.iReqTransferDelay, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay")); + ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR5Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iSignallingIndication < qosR5Requested.iSignallingIndication, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSignallingIndication.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iSourceStatisticsDescriptor < qosR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::NotifyProfileChanged did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSourceStatisticsDescriptor.")); + break; + } + + // Check RPacketQoS::GetProfileParameters returns aProfile of type TQoSGPRSNegotiated/TQoSR99_R4Negotiated/TQoSR5Negotiated with lower values than the requested values used in SetProfileParameters. + TExtEtelRequestStatus getProfileParametersStatus (packetQoS, EPacketQoSGetProfileParams); + CleanupStack::PushL(getProfileParametersStatus); + + switch(aQoSCapType) + { + case EQoSGPRS: // GPRS + packetQoS.GetProfileParameters(getProfileParametersStatus, gprsNegotiatedQoSPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out")); + ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error")); + ASSERT_TRUE(gprsNegotiatedQoSValues.iDelay > qosGprsRequested.iReqDelay, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDelay.")); + // Network returns EMeanThroughputBestEffort (0x80000) which is is higher than best EMeanThroughput50000000 (0x40000). That is why comparison must be this way + ASSERT_TRUE(gprsNegotiatedQoSValues.iMeanThroughput > qosGprsRequested.iReqMeanThroughput, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMeanThroughput.")); + ASSERT_TRUE(gprsNegotiatedQoSValues.iPeakThroughput < qosGprsRequested.iReqPeakThroughput, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPeakThroughput.")); + ASSERT_TRUE(gprsNegotiatedQoSValues.iReliability > qosGprsRequested.iReqReliability, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iReliability.")); + ASSERT_TRUE(gprsNegotiatedQoSValues.iPrecedence > qosGprsRequested.iReqPrecedence, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iPrecedence.")); + break; + + case EQoSR4: // R99_R4 + packetQoS.GetProfileParameters(getProfileParametersStatus, r99_r4NegotiatedQoSPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out")); + ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficClass > qosR99_R4Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliveryOrderReqd > qosR99_R4Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iDeliverErroneousSDU > qosR99_R4Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxSDUSize < qosR99_R4Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR99_R4Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR99_R4Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iBER < qosR99_R4Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iSDUErrorRatio < qosR99_R4Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTrafficHandlingPriority > qosR99_R4Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority.")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iTransferDelay > qosR99_R4Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR99_R4Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(r99_r4NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR99_R4Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate")); + break; + + case EQoSR5: // R5 + packetQoS.GetProfileParameters(getProfileParametersStatus, r5NegotiatedQoSPk); + ASSERT_EQUALS(WaitForRequestWithTimeOut(getProfileParametersStatus, ETimeLong), KErrNone, _L("RPacketQoS::GetProfileParameters timed out")); + ASSERT_EQUALS(getProfileParametersStatus.Int(), KErrNone, _L("RPacketQoS::GetProfileParameters returned with an error")); + ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficClass > qosR5Requested.iReqTrafficClass, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficClass")); + ASSERT_TRUE(r5NegotiatedQoSValues.iDeliveryOrderReqd > qosR5Requested.iReqDeliveryOrderReqd, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliveryOrderReqd.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iDeliverErroneousSDU > qosR5Requested.iReqDeliverErroneousSDU, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iDeliverErroneousSDU.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iMaxSDUSize < qosR5Requested.iReqMaxSDUSize, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxSDUSize.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iDownlinkRate < qosR5Requested.iReqMaxRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iDownlinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iMaxRate.iUplinkRate < qosR5Requested.iReqMaxRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iMaxRate.iUplinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iBER < qosR5Requested.iReqBER, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iBER.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iSDUErrorRatio < qosR5Requested.iReqSDUErrorRatio, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSDUErrorRatio.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iTrafficHandlingPriority > qosR5Requested.iReqTrafficHandlingPriority, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTrafficHandlingPriority.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iTransferDelay > qosR5Requested.iReqTransferDelay, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iTransferDelay")); + ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iDownlinkRate < qosR5Requested.iReqGuaranteedRate.iDownlinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iDownlinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iGuaranteedRate.iUplinkRate < qosR5Requested.iReqGuaranteedRate.iUplinkRate, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iGuaranteedRate.iUplinkRate")); + ASSERT_TRUE(r5NegotiatedQoSValues.iSignallingIndication < qosR5Requested.iSignallingIndication, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSignallingIndication.")); + ASSERT_TRUE(r5NegotiatedQoSValues.iSourceStatisticsDescriptor < qosR5Requested.iSourceStatisticsDescriptor, _L("RPacketQoS::GetProfileParameters did not return lower profile value than requested value used in RPacketQoS::SetProfileParameters with iSourceStatisticsDescriptor.")); + break; + } + + //Release QoS + iEtelSessionMgr.ReleasePrimaryPacketContextQoS(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Release packet context + iEtelSessionMgr.ReleasePrimaryPacketContext(KMainServer, + KMainPhone, + KMainPacketService, + KPrimaryPacketContext1); + + // Pop + // setProfileParamStatus + // setConfigStatus + // notifyProfileChangedStatus + // contextActivateStatus + // getProfileParametersStatus + CleanupStack::PopAndDestroy(5, &setProfileParamStatus); + } + +TPtrC CCTSYIntegrationTestPacketContext0060::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0060"); + } + + + +CCTSYIntegrationTestPacketContext0061::CCTSYIntegrationTestPacketContext0061(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0061::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0061::~CCTSYIntegrationTestPacketContext0061() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0061::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0061 + * @SYMFssID BA/CTSY/PKTC-0061 + * @SYMTestCaseDesc Initialise a context. + * @SYMTestPriority High + * @SYMTestActions RPacketContext::InitialiseContext, RPacketContext::GetStatus, RPacketContext::AddPacketFilter, RPacketContext::NotifyStatusChange, RPacketContext::SetConfig, RPacketQoS::OpenNewQoS, RPacketQoS::GetProfileCapabilities, RPacketQoS::SetProfileParameters, RPacketContext::OpenNewSecondaryContext + * @SYMTestExpectedResults Pass - RPacketContext::InitialiseContext returns TDataChannelV2 information. + * @SYMTestType CIT + * @SYMTestCaseDependencies live/automatic + * + * Reason for test: Verify comm port information received. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure phone is attached to the packet service. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Open a new primary context. + + // Initialise the context with RPacketContext::InitialiseContext + + // Check RPacketContext::InitialiseContext returns TDataChannelV2::iChannelId of length > 0 + // Check RPacketContext::InitialiseContext returns TDataChannelV2::iCsy of length > 0 + // Check RPacketContext::InitialiseContext returns TDataChannelV2::iPort of length > 0 + + // Set a valid context config using RPacketContext::SetConfig + + // Activate the context + + // Check RPacketContext::NotifyStatusChange completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus returns EStatusActive + + // Open a new secondary context + + // Initialise the secondary context with RPacketContext::InitialiseContext + + // Check RPacketContext::InitialiseContext for the secondary context returns TDataChannelV2::iChannelId of length > 0 + // Check RPacketContext::InitialiseContext for the secondary context returns TDataChannelV2::iCsy of length > 0 + // Check RPacketContext::InitialiseContext for the secondary context returns TDataChannelV2::iPort of length > 0 + + // === Add packet filter === + + // Add a TPacketFilterV2 packet filter to the secondary context using RPacketContext::AddPacketFilter + + // === Add QoS === + + // Open a new QoS from the secondary context + + // Get GPRS QoS profile capabilities with RPacketQoS::GetProfileCapabilities + + // Set requested profile parameters with RPacketQoS::SetProfileParameters and TQoSGPRSRequested with parameters within range returned by RPacketQoS::GetProfileCapabilities + + // Activate the secondary context with RPacketContext::Activate + + // Check RPacketContext::NotifyStatusChange for the secondary context completes with EStatusActivating -> EStatusActive + + // Check RPacketContext::GetStatus for the secondary context returns EStatusActive + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0061::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0061"); + } + + + +CCTSYIntegrationTestPacketContext0062::CCTSYIntegrationTestPacketContext0062(CEtelSessionMgr& aEtelSessionMgr) + : CCTSYIntegrationTestPacketContextBase(aEtelSessionMgr) +/** + * Constructor. + */ + { + SetTestStepName(CCTSYIntegrationTestPacketContext0062::GetTestStepName()); + } + +CCTSYIntegrationTestPacketContext0062::~CCTSYIntegrationTestPacketContext0062() +/** + * Destructor. + */ + { + } + +TVerdict CCTSYIntegrationTestPacketContext0062::doTestStepL() +/** + * @SYMTestCaseID BA-CTSY-INT-PKTC-0062 + * @SYMFssID BA/CTSY/PKTC-0062 + * @SYMTestCaseDesc Ensure change in QoS from network is handled correct when new QoS is not acceptable. + * @SYMTestPriority High + * @SYMTestActions + * @SYMTestExpectedResults Pass - Context is deactivated. + * @SYMTestType CIT + * @SYMTestCaseDependencies simulated/manual + * + * Reason for test: Verify context is deactivated. + * + * @return - TVerdict code + */ + { + + //////////////////////////////////////////////////////////////// + // SET UP + //////////////////////////////////////////////////////////////// + + + // Ensure there is a primary PDP context active. + + + //////////////////////////////////////////////////////////////// + // SET UP END + //////////////////////////////////////////////////////////////// + + StartTest(); + + //////////////////////////////////////////////////////////////// + // TEST START + //////////////////////////////////////////////////////////////// + + + // Simulator sends a modify PDP context request message with a QoS that is not acceptable to the phone. + + // Check RPacketContext::NotifyStatusChange completes with EStatusInactive + + + //////////////////////////////////////////////////////////////// + // TEST END + //////////////////////////////////////////////////////////////// + + StartCleanup(); + + // Put any required test clean up here, then remove this comment + + return TestStepResult(); + } + +TPtrC CCTSYIntegrationTestPacketContext0062::GetTestStepName() +/** + * @return The test step name. + */ + { + return _L("CCTSYIntegrationTestPacketContext0062"); + } + + +