diff -r 000000000000 -r 3553901f7fa8 telephonyserver/etelpacketdata/Te_EtelPacket/Te_EtelPacketTest3g_2.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserver/etelpacketdata/Te_EtelPacket/Te_EtelPacketTest3g_2.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,632 @@ +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// EtelPacketTest3G_2.cpp +// JetStream Packet data tests. +// This file tests the 3G (WCDMA) Packet Context functionality - TestCase 3G.2 +// +// + +// Symbian OS includes +#include + +#include +#include + +#include "Te_EtelPacketTestStepBase.h" + +#include "testdef.h" + +#include "Te_EtelPacketTest3g_2.h" +#include "Te_etelpckt_defs.h" + +CEtelPacketTest3G_2::CEtelPacketTest3G_2() +/** + * Constructor + * Stores the name of this test case. + */ + { + SetTestStepName(_L("3GPacketContext")); + } + + +CEtelPacketTest3G_2::~CEtelPacketTest3G_2() +/** + * Destructor + */ + {} + +enum TVerdict CEtelPacketTest3G_2::doTestStepL( void ) +/** + * Test step 3G.2 calls the 3G Packet Context (RPacketContext) methods + */ +{ + RPhone pcktPhone; + TInt ret=pcktPhone.Open(iTelServer,DPCKTTSY_PHONE_NAME); + CHECKPOINT(ret,KErrNone,CHP_OPEN_PHONE); + + RPacketService wcdmaService; + ret=wcdmaService.Open(pcktPhone); + CHECKPOINT(ret,KErrNone,CHP_SRVS_CASE("A.3G1")); + +// Open a Primary context + RPacketContext primaryContext; + TName contextName; + + ret=primaryContext.OpenNewContext(wcdmaService, contextName); + CHECKPOINT(ret,KErrNone,CHP_CNTXT_CASE("B.3G1")); + +// Open a Secondary context. An arbitrary value of 20 is assigned for the buffer size. +// Using a TName object would incur a great load on the stack, which is unnecessary for +// this test code. + RPacketContext wcdmaContext; + TBuf<20> secondaryContextName; + + ret=wcdmaContext.OpenNewSecondaryContext(wcdmaService, contextName, secondaryContextName); + CHECKPOINT(ret,KErrNone,CHP_CNTXT_CASE("B.3G2")); + + TRequestStatus reqStatus; + +//Creating Traffic Flow Template (TFT) + wcdmaContext.CreateNewTFT(reqStatus, DPCKTTSY_TFT_NO_FILTERS); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_SRVS_CASE("B.3G9")); + +//Cancel Creating Traffic Flow Template (TFT) + wcdmaContext.CreateNewTFT(reqStatus, DPCKTTSY_TFT_NO_FILTERS); + wcdmaContext.CancelAsyncRequest(EPacketContextCreateNewTFT); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_SRVS_CASE("B.3G9")); + +//Deleting Traffic Flow Template + wcdmaContext.DeleteTFT(reqStatus); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_SRVS_CASE("B.3G10")); + +//Cancel Deleting Traffic Flow Template + wcdmaContext.DeleteTFT(reqStatus); + wcdmaContext.CancelAsyncRequest(EPacketContextDeleteTFT); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_SRVS_CASE("B.3G10")); + +// Enumerate Packet filters + TInt filterCount; + + wcdmaContext.EnumeratePacketFilters(reqStatus, filterCount); + User::WaitForRequest(reqStatus); + + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("B.3G3")); + CHECKPOINT(filterCount,DPCKTTSY_NUMBER_OF_PACKET_FILTERS,CHP_CNTXT_CASE("B.3G3")); + +// Cancel Request + wcdmaContext.EnumeratePacketFilters(reqStatus, filterCount); + wcdmaContext.CancelAsyncRequest(EPacketContextEnumeratePacketFilters); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("B.3G3")); + +// Get Packet filter information + TInt filterIndex=1; + RPacketContext::TPacketFilterV2 packetFilterInfo; + RPacketContext::TPacketFilterV2Pckg packetFilterInfoPckg(packetFilterInfo); + + wcdmaContext.GetPacketFilterInfo(reqStatus, filterIndex, packetFilterInfoPckg); + User::WaitForRequest(reqStatus); + + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("B.3G4")); + + CHECKPOINT(packetFilterInfo.iId,DPCKTTSY_FILTER_ID1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iEvaluationPrecedenceIndex,DPCKTTSY_EVALUATION_PRECEDENCE_INDEX1,CHP_CNTXT_CASE("B.3G4")); + + CHECKPOINT(packetFilterInfo.iSrcAddr[0],DPCKTTSY_DOMAIN_SOURCE_ADDRESS1_0,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcAddr[1],DPCKTTSY_DOMAIN_SOURCE_ADDRESS1_1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcAddr[2],DPCKTTSY_DOMAIN_SOURCE_ADDRESS1_2,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcAddr[3],DPCKTTSY_DOMAIN_SOURCE_ADDRESS1_3,CHP_CNTXT_CASE("B.3G4")); + + CHECKPOINT(packetFilterInfo.iSrcAddrSubnetMask[0],DPCKTTSY_DOMAIN_SUBNET_MASK1_0,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcAddrSubnetMask[1],DPCKTTSY_DOMAIN_SUBNET_MASK1_1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcAddrSubnetMask[2],DPCKTTSY_DOMAIN_SUBNET_MASK1_2,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcAddrSubnetMask[3],DPCKTTSY_DOMAIN_SUBNET_MASK1_3,CHP_CNTXT_CASE("B.3G4")); + + CHECKPOINT(packetFilterInfo.iProtocolNumberOrNextHeader,DPCKTTSY_PROTOCOLNUMBER_OR_NEXTHEADER1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcPortMin,DPCKTTSY_MINIMUM_SOURCE_PORT_NUMBER1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iSrcPortMax,DPCKTTSY_MAXIMUM_SOURCE_PORT_NUMBER1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iDestPortMin,DPCKTTSY_MINIMUM_DESTINATION_PORT_NUMBER1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iDestPortMax,DPCKTTSY_MAXIMUM_DESTINATION_PORT_NUMBER1,CHP_CNTXT_CASE("B.3G4")); + CHECKPOINT(packetFilterInfo.iTOSorTrafficClass,DPCKTTSY_TYPE_OF_SERVICE_OR_TRAFFIC_CLASS1,CHP_CNTXT_CASE("B.3G4")); + +// Cancel Request + wcdmaContext.GetPacketFilterInfo(reqStatus, filterIndex, packetFilterInfoPckg); + wcdmaContext.CancelAsyncRequest(EPacketContextGetPacketFilterInfo); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("B.3G4")); + +// Add packet filter to a Traffic Flow Template (TFT) + packetFilterInfo.iId=DPCKTTSY_FILTER_ID2; + packetFilterInfo.iEvaluationPrecedenceIndex=DPCKTTSY_EVALUATION_PRECEDENCE_INDEX2; + + packetFilterInfo.iSrcAddr[0]=DPCKTTSY_DOMAIN_SOURCE_ADDRESS2_0; + packetFilterInfo.iSrcAddr[1]=DPCKTTSY_DOMAIN_SOURCE_ADDRESS2_1; + packetFilterInfo.iSrcAddr[2]=DPCKTTSY_DOMAIN_SOURCE_ADDRESS2_2; + packetFilterInfo.iSrcAddr[3]=DPCKTTSY_DOMAIN_SOURCE_ADDRESS2_3; + + packetFilterInfo.iSrcAddrSubnetMask[0]=DPCKTTSY_DOMAIN_SUBNET_MASK2_0; + packetFilterInfo.iSrcAddrSubnetMask[1]=DPCKTTSY_DOMAIN_SUBNET_MASK2_1; + packetFilterInfo.iSrcAddrSubnetMask[2]=DPCKTTSY_DOMAIN_SUBNET_MASK2_2; + packetFilterInfo.iSrcAddrSubnetMask[3]=DPCKTTSY_DOMAIN_SUBNET_MASK2_3; + + packetFilterInfo.iProtocolNumberOrNextHeader=DPCKTTSY_PROTOCOLNUMBER_OR_NEXTHEADER2; + packetFilterInfo.iIPSecSPI=DPCKTTSY_SECURITY_PARAMETER_INDEX2; + packetFilterInfo.iTOSorTrafficClass=DPCKTTSY_TYPE_OF_SERVICE_OR_TRAFFIC_CLASS2; + + RPacketContext::TPacketFilterV2Pckg addFilterPckg(packetFilterInfo); + + wcdmaContext.AddPacketFilter(reqStatus, addFilterPckg); + User::WaitForRequest(reqStatus); + + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("B.3G5")); + +// Cancel Request + wcdmaContext.AddPacketFilter(reqStatus, addFilterPckg); + wcdmaContext.CancelAsyncRequest(EPacketContextAddPacketFilter); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("B.3G5")); + +// Remove packet filter + TInt removeIndex=2; + + wcdmaContext.RemovePacketFilter(reqStatus, removeIndex); + User::WaitForRequest(reqStatus); + + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("B.3G6")); + +// Cancel Request + wcdmaContext.RemovePacketFilter(reqStatus, removeIndex); + wcdmaContext.CancelAsyncRequest(EPacketContextRemovePacketFilter); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("B.3G6")); + +// Modify Active Context + wcdmaContext.ModifyActiveContext(reqStatus); + User::WaitForRequest(reqStatus); + + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("B.3G7")); + +// Cancel Request + wcdmaContext.ModifyActiveContext(reqStatus); + wcdmaContext.CancelAsyncRequest(EPacketContextModifyActiveContext); + User::WaitForRequest(reqStatus); + + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("B.3G7")); + +// Change Request: NSAE-579FBV. Added a new method, InitialiseContext(), which supersedes +// the LoanCommPort() and RecoverCommPort() methods. This new method enables asynchronous +// resource reservation for a new primary or secondary context at the creation phase. + +// Asynchronous Resource reservation - InitialiseContext() + RPacketContext::TDataChannelV2 dataChannelV2; + RPacketContext::TDataChannelV2Pckg dataChannelV2Pckg(dataChannelV2); + + wcdmaContext.InitialiseContext(reqStatus, dataChannelV2Pckg); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("B.3G8")); + CHECKPOINT_COMP_STR(dataChannelV2.iCsy,DPCKTTSY_CSY_ASYNC,CHP_CNTXT_CASE("B.3G8")); + CHECKPOINT_COMP_STR(dataChannelV2.iPort,DPCKTTSY_PORT_ASYNC,CHP_CNTXT_CASE("B.3G8")); + CHECKPOINT_COMP_STR(dataChannelV2.iChannelId,DPCKTTSY_CHANNEL_ID,CHP_CNTXT_CASE("B.3G8")); + +// Cancel Request + wcdmaContext.InitialiseContext(reqStatus, dataChannelV2Pckg); + wcdmaContext.CancelAsyncRequest(EPacketContextInitialiseContext); + User::WaitForRequest(reqStatus); + CHECKPOINT(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("B.3G8")); + +// TPacketFilterV3 Tests + RPacketContext::TIPAddress srcAddr; + RPacketContext::TIPAddress srcAddrSubnetMask; + + TInt ii; + for (ii=0; ii