telephonyserverplugins/common_tsy/test/integration/src/cctsyintegrationtestpacketcontext.cpp
Latest bug-fixes with added tests.
/*
* 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 <etelmm.h>
#include <etelpckt.h>
#include <pcktcs.h>
#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<RPacketContext::KIPAddressSize;++i)
{
LOCAL_ASSERT_EQUALS(aFilterOne.iSrcAddr[i], aFilterTwo.iSrcAddr[i] ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcAddr"));
LOCAL_ASSERT_EQUALS(aFilterOne.iSrcAddrSubnetMask[i], aFilterTwo.iSrcAddrSubnetMask[i] ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcAddrSubnetMask"));
}
LOCAL_ASSERT_EQUALS(aFilterOne.iProtocolNumberOrNextHeader, aFilterTwo.iProtocolNumberOrNextHeader ,_L("RPacketContext::GetPacketFilterInfo returned wrong iProtocolNumberOrNextHeader"));
LOCAL_ASSERT_EQUALS(aFilterOne.iSrcPortMin, aFilterTwo.iSrcPortMin ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcPortMin"));
LOCAL_ASSERT_EQUALS(aFilterOne.iSrcPortMax, aFilterTwo.iSrcPortMax ,_L("RPacketContext::GetPacketFilterInfo returned wrong iSrcPortMax"));
LOCAL_ASSERT_EQUALS(aFilterOne.iDestPortMin, aFilterTwo.iDestPortMin ,_L("RPacketContext::GetPacketFilterInfo returned wrong iDestPortMin"));
LOCAL_ASSERT_EQUALS(aFilterOne.iDestPortMax, aFilterTwo.iDestPortMax ,_L("RPacketContext::GetPacketFilterInfo returned wrong iDestPortMax"));
LOCAL_ASSERT_EQUALS(aFilterOne.iIPSecSPI, aFilterTwo.iIPSecSPI ,_L("RPacketContext::GetPacketFilterInfo returned wrong iIPSecSPI"));
LOCAL_ASSERT_EQUALS(aFilterOne.iTOSorTrafficClass, aFilterTwo.iTOSorTrafficClass ,_L("RPacketContext::GetPacketFilterInfo returned wrong iTOSorTrafficClass"));
LOCAL_ASSERT_EQUALS(aFilterOne.iFlowLabel, aFilterTwo.iFlowLabel ,_L("RPacketContext::GetPacketFilterInfo returned wrong iFlowLabel"));
return ret;
}
template<>
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<RPacketQoS::TQoSDelay>(FindMSB(aCapabilities.iDelay));
aParameters.iReqDelay = static_cast<RPacketQoS::TQoSDelay>(FindLSB(aCapabilities.iDelay));
aParameters.iMinMeanThroughput = static_cast<RPacketQoS::TQoSMeanThroughput>(FindMSB(aCapabilities.iMean));
aParameters.iReqMeanThroughput = static_cast<RPacketQoS::TQoSMeanThroughput>(FindLSB(aCapabilities.iMean));
aParameters.iMinPeakThroughput = static_cast<RPacketQoS::TQoSPeakThroughput>(FindMSB(aCapabilities.iPeak));
aParameters.iReqPeakThroughput = static_cast<RPacketQoS::TQoSPeakThroughput>(FindLSB(aCapabilities.iPeak));
aParameters.iMinReliability = static_cast<RPacketQoS::TQoSReliability>(FindMSB(aCapabilities.iReliability));
aParameters.iReqReliability = static_cast<RPacketQoS::TQoSReliability>(FindLSB(aCapabilities.iReliability));
aParameters.iReqPrecedence = static_cast<RPacketQoS::TQoSPrecedence>(FindMSB(aCapabilities.iPrecedence));
aParameters.iMinPrecedence = static_cast<RPacketQoS::TQoSPrecedence>(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<RPacketQoS::TTrafficClass>(FindLSB(aCapabilities.iTrafficClass));
aParameters.iMinTrafficClass = static_cast<RPacketQoS::TTrafficClass>(FindMSB(aCapabilities.iTrafficClass));
aParameters.iReqDeliveryOrderReqd = static_cast<RPacketQoS::TDeliveryOrder>(FindLSB(aCapabilities.iDeliveryOrderReqd));
aParameters.iMinDeliveryOrderReqd = static_cast<RPacketQoS::TDeliveryOrder>(FindMSB(aCapabilities.iDeliveryOrderReqd));
aParameters.iReqDeliverErroneousSDU = static_cast<RPacketQoS::TErroneousSDUDelivery>(FindLSB(aCapabilities.iDeliverErroneousSDU));
aParameters.iMinDeliverErroneousSDU = static_cast<RPacketQoS::TErroneousSDUDelivery>(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<RPacketQoS::TBitErrorRatio>(FindLSB(aCapabilities.iBER));
aParameters.iMaxBER = static_cast<RPacketQoS::TBitErrorRatio>(FindMSB(aCapabilities.iBER));
aParameters.iReqSDUErrorRatio = static_cast<RPacketQoS::TSDUErrorRatio>(FindLSB(aCapabilities.iSDUErrorRatio));
aParameters.iMaxSDUErrorRatio = static_cast<RPacketQoS::TSDUErrorRatio>(FindMSB(aCapabilities.iSDUErrorRatio));
aParameters.iReqTrafficHandlingPriority = static_cast<RPacketQoS::TTrafficHandlingPriority>(FindLSB(aCapabilities.iTrafficHandlingPriority));
aParameters.iMinTrafficHandlingPriority = static_cast<RPacketQoS::TTrafficHandlingPriority>(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<TBool>(aCapabilities.iSignallingIndication);
aParameters.iSourceStatisticsDescriptor = static_cast<RPacketQoS::TSourceStatisticsDescriptor>(aCapabilities.iSourceStatisticsDescriptor);
}
template<class QOSCAPS>
void CCTSYIntegrationTestPacketContextBase::GetProfileCapsL(RPacketQoS& aContextQoS, QOSCAPS& aCapabilities)
/**
* Get QoS profile capabilities
*
* @param aContextQoS Reference RPacketQoS object.
* @param aCapabilities Reference to QoS capabilities.
*
*/
{
TPckg<QOSCAPS> 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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<RPacketContext::TContextConfigGPRS> 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 10061 );
iPacketServiceTestHelper.WaitForPacketContextNotifyStatusChange(
secondaryPacketContext2,
notifyContext2StChStatus,
packetContextStatus2,
expectedPacketContextStatus,
KErrNone);
ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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("<font color=Cyan>$CTSYProblem: The LTSY does nothing with the context activation request.<font color=Black>"));
// 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYProblem: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketContext::TContextConfigGPRS> setConfigPkgGprs(setConfigGprs);
RPacketContext::TContextConfigR99_R4 setConfigR99;
TPckg<RPacketContext::TContextConfigR99_R4> setConfigPkgR99(setConfigR99);
RPacketContext::TContextConfig_R5 setConfigR5;
TPckg<RPacketContext::TContextConfig_R5> 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<RPacketContext::TContextConfigGPRS> getConfigPkgGprs(getConfigGprs);
RPacketContext::TContextConfigR99_R4 getConfigR99;
TPckg<RPacketContext::TContextConfigR99_R4> getConfigPkgR99(getConfigR99);
RPacketContext::TContextConfig_R5 getConfigR5;
TPckg<RPacketContext::TContextConfig_R5> 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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<RPacketContext::TContextConfigGPRS> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<class PARAMETERS, class CAPABILITIES, class NEGOTIATED>
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<CAPABILITIES> 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<PARAMETERS> 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<NEGOTIATED> 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<class PARAMETERS,class CAPABILITIES,class NEGOTIATED>
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<CAPABILITIES> 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<PARAMETERS> 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<NEGOTIATED> 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("<font color=Cyan>$CTSYProblem: The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext.<font color=Black>"));
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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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("<font color=Cyan>$CTSYProblem: The LTSY or the Anite system has no support to RPacketContext::ModifyActiveContext.<font color=Black>"));
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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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.org"));
TBuf<140> page(_L("/wiki/images/1/12/Common_Design_Patterns_for_Symbian_OS_Sample_Chapter.pdf"));
CHTTPDownload *download = new (ELeave) CHTTPDownload(this);
CleanupStack::PushL(download);
ASSERT_TRUE(download->StartDownloadL(host,page),_L("Download Failed - perhaps page has moved!"));
// 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("<font color=Orange>@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("<font color=Orange>@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<RPacketQoS::TQoSCapsGPRS> 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<RPacketQoS::TQoSGPRSRequested> 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<RPacketQoS::TQoSGPRSRequested> qoSGPRSRequestedPkg(qoSGPRSRequested);
RPacketQoS::TQoSR99_R4Requested qoSR99Requested;
TPckg<RPacketQoS::TQoSR99_R4Requested> qoSR99RequestedPkg(qoSR99Requested);
RPacketQoS::TQoSR5Requested qoSR5Requested;
TPckg<RPacketQoS::TQoSR5Requested> 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<RPacketContext::TContextConfigGPRS> setConfigPkgGprs(setConfigGprs);
RPacketContext::TContextConfigR99_R4 setConfigR99;
TPckg<RPacketContext::TContextConfigR99_R4> setConfigPkgR99(setConfigR99);
RPacketContext::TContextConfig_R5 setConfigR5;
TPckg<RPacketContext::TContextConfig_R5> 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<RPacketQoS::TQoSGPRSNegotiated> qoSGPRSNegotiatedPkg(qoSGPRSNegotiated);
RPacketQoS::TQoSR99_R4Negotiated qoSR99Negotiated;
TPckg<RPacketQoS::TQoSR99_R4Negotiated> qoSR99NegotiatedPkg(qoSR99Negotiated);
RPacketQoS::TQoSR5Negotiated qoSR5Negotiated;
TPckg<RPacketQoS::TQoSR5Negotiated> 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<RPacketQoS::TQoSGPRSRequested> qosReqCapsGPRSPckg(qosReqCapsGPRS);
RPacketQoS::TQoSR99_R4Requested qosReqCapsR99;
TPckg<RPacketQoS::TQoSR99_R4Requested> qosReqCapsR99Pckg(qosReqCapsR99);
RPacketQoS::TQoSR5Requested qosReqCapsR5;
TPckg<RPacketQoS::TQoSR5Requested> 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<RPacketQoS::TQoSGPRSNegotiated> qosNegCapsGPRSPckg(qosNegCapsGPRS);
RPacketQoS::TQoSR99_R4Negotiated qosNegCapsR99;
TPckg<RPacketQoS::TQoSR99_R4Negotiated> qosNegCapsR99Pckg(qosNegCapsR99);
RPacketQoS::TQoSR5Negotiated qosNegCapsR5;
TPckg<RPacketQoS::TQoSR5Negotiated> 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<RPacketContext::TContextConfigGPRS> setConfigPkgGprs(setConfigGprs);
RPacketContext::TContextConfigR99_R4 setConfigR99;
TPckg<RPacketContext::TContextConfigR99_R4> setConfigPkgR99(setConfigR99);
RPacketContext::TContextConfig_R5 setConfigR5;
TPckg<RPacketContext::TContextConfig_R5> 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<RPacketQoS::TQoSGPRSNegotiated> qosNegCapsNumberTwoGPRSPckg(qosNegCapsNumberTwoGPRS);
RPacketQoS::TQoSR99_R4Negotiated qosNegCapsNumberTwoR99;
TPckg<RPacketQoS::TQoSR99_R4Negotiated> qosNegCapsNumberTwoR99Pckg(qosNegCapsNumberTwoR99);
RPacketQoS::TQoSR5Negotiated qosNegCapsNumberTwoR5;
TPckg<RPacketQoS::TQoSR5Negotiated> 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<RPacketQoS::TQoSGPRSRequested> qosGprsReqPckg(qosGprsRequested);
RPacketQoS::TQoSR99_R4Requested qosR99_R4Requested;
TPckg<RPacketQoS::TQoSR99_R4Requested> qosR99_R4ReqPckg(qosR99_R4Requested);
RPacketQoS::TQoSR5Requested qosR5Requested;
TPckg<RPacketQoS::TQoSR5Requested> 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<RPacketContext::TContextConfigGPRS> gprsConfigPk(gprsConfig);
RPacketContext::TContextConfigR99_R4 r99_r4Config;
TPckg<RPacketContext::TContextConfigR99_R4> r99_r4ConfigPk(r99_r4Config);
RPacketContext::TContextConfig_R5 r5Config;
TPckg<RPacketContext::TContextConfig_R5> 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<RPacketQoS::TQoSGPRSNegotiated> gprsNegotiatedQoSPk(gprsNegotiatedQoSValues);
RPacketQoS::TQoSR99_R4Negotiated r99_r4NegotiatedQoSValues;
TPckg<RPacketQoS::TQoSR99_R4Negotiated> r99_r4NegotiatedQoSPk(r99_r4NegotiatedQoSValues);
RPacketQoS::TQoSR5Negotiated r5NegotiatedQoSValues;
TPckg<RPacketQoS::TQoSR5Negotiated> 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");
}