diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simtsy/test/Te_SimPacket/Te_SimPacket.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/simtsy/test/Te_SimPacket/Te_SimPacket.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,1547 @@ +// 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: +// This program is designed the test of the . +// +// + +/** + @file +*/ + +#include "Te_SimPacket.h" + +//****************************************************************************** +// Context Configuration +//****************************************************************************** +#define SIMTSY_PDP_TYPE1 RPacketContext::EPdpTypePPP +#define SIMTSY_ACCESS_POINT1 _L8("ACME INTERNET PROVIDERS LTD") +#define SIMTSY_PDP_ADDRESS1 _L8("i-MODE GATEWAY") +#define SIMTSY_COMPRESSION1 RPacketContext::KPdpDataCompression +#define SIMTSY_ANONYMOUS_ACCESS1 RPacketContext::ENotRequired +#define SIMTSY_EGPRS_REQUIRED TRUE + +#define SIMTSY_PDP_TYPE2 RPacketContext::EPdpTypeIPv6 +#define SIMTSY_ACCESS_POINT2 _L8("SYMBIAN EMPLOYEE INTRANET") +#define SIMTSY_PDP_ADDRESS2 _L8("A WAP PORTAL") +#define SIMTSY_COMPRESSION2 RPacketContext::KPdpHeaderCompression +#define SIMTSY_ANONYMOUS_ACCESS2 RPacketContext::ERequired + +#define SIMTSY_CSY _L("LOOPBACK.CSY") +#define SIMTSY_PORT _L("LOOPBACK::0") + +#define SIM_PACKET_SERVICE_CAPS (RPacketService::KCapsSuspendSupported | \ + RPacketService::KCapsMSClassSupported |\ + RPacketService::KCapsCDMA2000HighSpeedDataSupported |\ + RPacketService::KCapsNetworkAvailabilitySupported | \ + RPacketService::KCapsProtocolPPPSupported) + +#define SIM_PACKET_SERVICE_OPTION RPacketContext::KHighSpeedCDMA2000Data +#define SIM_PACKET_PROTOCOL RPacketContext::EPdpTypePPP +#define SIM_DEFAULT_PARAM RPacketContext::KHighSpeedCDMA2000Data + +// CHAP authentication +#define SIM_PACKET_CONTEXT_PROTOCOL1 RPacketContext::EProtocolCHAP +#define SIM_PACKET_CONTEXT_USERNAME1 _L8("USER1") +#define SIM_PACKET_CONTEXT_PASSWORD1 _L8("PASSWORD1") +#define SIM_PACKET_CONTEXT_CHALLENGE1 _L8("CHALLENGE1") +#define SIM_PACKET_CONTEXT_RESPONSE1 _L8("RESPONSE1") +#define SIM_PACKET_CONTEXT_PRIMARYSERVER1 _L8("PRIMARYSERVER1") +#define SIM_PACKET_CONTEXT_SECONDARYSERVER1 _L8("SECONDARYSERVER1") +#define SIM_PACKET_CONTEXT_ID1 1 + +// PAP authentication +#define SIM_PACKET_CONTEXT_PROTOCOL2 RPacketContext::EProtocolPAP +#define SIM_PACKET_CONTEXT_USERNAME2 _L("USER2") +#define SIM_PACKET_CONTEXT_PASSWORD2 _L("PASSWORD2") +#define SIM_PACKET_CONTEXT_CHALLENGE2 _L("NULL") +#define SIM_PACKET_CONTEXT_RESPONSE2 _L("NULL") +#define SIM_PACKET_CONTEXT_PRIMARYSERVER2 _L("PRIMARYSERVER2") +#define SIM_PACKET_CONTEXT_SECONDARYSERVER2 _L("SECONDARYSERVER2") +#define SIM_PACKET_CONTEXT_ID2 2 + +//MBMS information +#define SIM_PACKET_MBMS_TESTNUMBER 0 +#define SIM_PACKET_MBMS_SESSIONID 2 +#define SIM_PACKET_MBMS_SERVICEID 1155 +#define SIM_PACKET_MBMS_MNCID 1122 +#define SIM_PACKET_MBMS_MCCID 1234 + +//****************************************************************************** + +static TInt NTRasThreadFunction(TAny* /*aThreadData*/) +/** +* Does 'durty' work to start NT RAS session +* @note It sets +* iRate = EBps38400; +* iDataBits = EData8; +* iStopBits = EStop1 ; +* iParity = EParityNone; +* be sure that your NT comport has the same settings. +*/ + { + _LIT(KCsyName,"LOOPBACK.CSY"); + _LIT(KPortName,"LOOPBACK::1"); + + _LIT8(KServerText,"SERVER"); + + CTrapCleanup* cleanup; + if ((cleanup=CTrapCleanup::New())==NULL) + return KErrGeneral; + + RCommServ commServ; + TInt r=commServ.Connect(); + r=commServ.LoadCommModule(KCsyName); + if( KErrNone == r) + { + RComm comm; + r=comm.Open(commServ,KPortName,ECommShared); + if( KErrNone == r) + { + TBuf8<6> readBuf; + TRequestStatus stat0; + comm.Read(stat0,readBuf); + User::WaitForRequest(stat0) ; + + comm.Write(stat0,KServerText); + User::WaitForRequest(stat0) ; + } + comm.Close() ; + } + commServ.Close() ; + delete cleanup; + return r; + } + +TInt StartNTRasSimulation() +/** +* Starts virual, because of lookback serial driver, +* NT RAS session +*/ + { + const TInt KStackSize=0x8000; + const TInt KHeapSize=0x8000; + const TInt KMaxHeapSize=0x80000; + TInt res = KErrNone ; + _LIT(KNtRasName,"NTRasEmulation"); + + RThread t; + res=t.Create(KNtRasName,NTRasThreadFunction, + KStackSize,KHeapSize,KMaxHeapSize,NULL); + t.Resume(); + t.Close(); + + return res; + } + +//------------------------------------------------------------------ +// ** TEST SimPacket STEPS *** + +//------------------------------------------------------------------ + +CGprsDefaultContextParamsTest::CGprsDefaultContextParamsTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsDefaultContextParamsTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsDefaultContextParamsTest::doTestStepL( void ) +/** + * This tests the default context params + */ + { + SetSimtsyTestNumberL(0); + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + // Some default params to set, does not matter what it is. + // The default params used are defined at the beginning of this file + + TESTL(iPacketService.Open(iPhone) == KErrNone); + + RPacketContext::TContextConfigGPRS setDefaultParams; + TPckg setcontextConfigPckg(setDefaultParams); + + setDefaultParams.iPdpType = SIMTSY_PDP_TYPE1; + setDefaultParams.iAccessPointName = SIMTSY_ACCESS_POINT1; + setDefaultParams.iPdpAddress = SIMTSY_PDP_ADDRESS1; + setDefaultParams.iPdpCompression = SIMTSY_COMPRESSION1; + setDefaultParams.iAnonymousAccessReqd = SIMTSY_ANONYMOUS_ACCESS1; + setDefaultParams.iUseEdge = SIMTSY_EGPRS_REQUIRED; + setDefaultParams.iProtocolConfigOption.iAuthInfo.iProtocol = SIM_PACKET_CONTEXT_PROTOCOL1; + setDefaultParams.iProtocolConfigOption.iAuthInfo.iUsername = SIM_PACKET_CONTEXT_USERNAME1; + setDefaultParams.iProtocolConfigOption.iAuthInfo.iPassword = SIM_PACKET_CONTEXT_PASSWORD1; + setDefaultParams.iProtocolConfigOption.iChallenge = SIM_PACKET_CONTEXT_CHALLENGE1; + setDefaultParams.iProtocolConfigOption.iResponse = SIM_PACKET_CONTEXT_RESPONSE1; + setDefaultParams.iProtocolConfigOption.iDnsAddresses.iPrimaryDns = SIM_PACKET_CONTEXT_PRIMARYSERVER1; + setDefaultParams.iProtocolConfigOption.iDnsAddresses.iSecondaryDns = SIM_PACKET_CONTEXT_SECONDARYSERVER1; + setDefaultParams.iProtocolConfigOption.iId = SIM_PACKET_CONTEXT_ID1; + + TESTL(iPacketService.SetDefaultContextParams(setcontextConfigPckg) == KErrNone); + + RPacketContext::TContextConfigGPRS getDefaultParams; + TPckg getcontextConfigPckg(getDefaultParams); + + TESTL(iPacketService.GetDefaultContextParams(getcontextConfigPckg) == KErrNone); + TestConfigParamsL(setDefaultParams, getDefaultParams); + + iPacketService.Close(); + iPhone.Close(); + User::After(100000L); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CQoSTest::CQoSTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("QoSTest")); + } +//------------------------------------------------------------------ + +TVerdict CQoSTest::doTestStepL( void ) +/** + * This tests the static GPRS caps. + */ + { + SetSimtsyTestNumberL(0); + TBuf<30> contextName; + TBuf<30> profileName; + TRequestStatus stat1; + TRequestStatus stat2; + RPacketQoS qoS; + RPacketQoS::TQoSCapsGPRS staticQoSCaps; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + qoS.OpenNewQoS(iPacketContext[0], profileName); + + TPckg staticQoSCapsPkg(staticQoSCaps); + qoS.GetProfileCapabilities(stat1, staticQoSCapsPkg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TESTL(staticQoSCaps.ExtensionId()==TPacketDataConfigBase::KConfigGPRS); + + TESTL(staticQoSCaps.iPrecedence == RPacketQoS::EPriorityMediumPrecedence); + TESTL(staticQoSCaps.iDelay == RPacketQoS::EDelayClass2 ); + TESTL(staticQoSCaps.iReliability == RPacketQoS::EReliabilityClass2); + TESTL(staticQoSCaps.iPeak == RPacketQoS::EPeakThroughput64000); + TESTL(staticQoSCaps.iMean == RPacketQoS::EMeanThroughput100); + + RPacketQoS::TQoSGPRSNegotiated negotiatedQoS; + RPacketQoS::TQoSGPRSRequested SetQoS; + RPacketQoS::TQoSGPRSNegotiated comparenegotiatedQoS; + RPacketQoS::TQoSGPRSRequested notifyQoS; + // Setting to Best effort. + comparenegotiatedQoS.iPrecedence = RPacketQoS::EPriorityMediumPrecedence; + comparenegotiatedQoS.iDelay = RPacketQoS::EDelayClass2; + comparenegotiatedQoS.iReliability = RPacketQoS::EReliabilityClass2; + comparenegotiatedQoS.iPeakThroughput = RPacketQoS::EPeakThroughput64000; + comparenegotiatedQoS.iMeanThroughput = RPacketQoS::EMeanThroughput100; + TPckg negotiatedQoSPkg(negotiatedQoS); + qoS.GetProfileParameters(stat1, negotiatedQoSPkg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TestConfigParamsL(negotiatedQoS, comparenegotiatedQoS); + + // Set to anything just to test that it can be done.. + SetQoS.iReqPrecedence = RPacketQoS::EPriorityMediumPrecedence; + SetQoS.iMinPrecedence = RPacketQoS::EPriorityLowPrecedence; + SetQoS.iReqDelay = RPacketQoS::EDelayClass2; + SetQoS.iMinDelay = RPacketQoS::EDelayClass1; + SetQoS.iReqReliability = RPacketQoS::EReliabilityClass2; + SetQoS.iMinReliability = RPacketQoS::EReliabilityClass1; + SetQoS.iReqPeakThroughput = RPacketQoS::EPeakThroughput64000; + SetQoS.iMinPeakThroughput = RPacketQoS::EPeakThroughput16000; + SetQoS.iReqMeanThroughput = RPacketQoS::EMeanThroughput2000; + SetQoS.iMinMeanThroughput = RPacketQoS::EMeanThroughput200; + + + TPckg SetQoSPkg(SetQoS); + TPckg notifyQoSPkg(notifyQoS); + qoS.NotifyProfileChanged(stat2, notifyQoSPkg); + qoS.SetProfileParameters(stat1, SetQoSPkg); + User::WaitForRequest(stat2); + User::WaitForRequest(stat1); + TESTL(stat2.Int() == KErrNone); + TESTL(stat1.Int() == KErrNone); + + qoS.Close(); + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsUnSupportedTest::CGprsUnSupportedTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsUnSupportedTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsUnSupportedTest::doTestStepL( void ) +/** + * Tests all unsupported GPRS API calls to the TSY. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + iPacketService.RejectActivationRequest(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int()== KErrNotSupported); + + iPacketService.RejectActivationRequest(stat1); + iPacketService.CancelAsyncRequest(EPacketRejectActivationRequest); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNotSupported); + + RPacketService::TMSClass msClass; + iPacketService.NotifyMSClassChange(stat1, msClass); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNotSupported); + + RPacketService::TAttachMode attachMode = RPacketService::EAttachWhenPossible; + TESTL(iPacketService.SetAttachMode(attachMode) == KErrNotSupported); + TESTL(iPacketService.GetAttachMode(attachMode) == KErrNone); + RPacketService::TRegistrationStatus registrationStatus = RPacketService::ERegisteredRoaming; + iPacketService.GetNtwkRegStatus(stat1, registrationStatus); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); +/* //This test should not be here as this method is supported + iPacketService.NotifyChangeOfNtwkRegStatus(stat1, registrationStatus); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNotSupported); +*/ + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } + +/** Each test step initialises its own name +*/ +CTestDynamicCaps::CTestDynamicCaps() + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("TestDynamicCaps")); + } + +/** + * Tests the dynamic capabilities APIs: RPacketService::GetDynamicCaps and RPacketService::NotifyDynamicCapsChange + * @return Test step verdict. + */ +TVerdict CTestDynamicCaps::doTestStepL() + { + SetSimtsyTestNumberL(0); + + // Initialise and open the packet service... + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + // + // test GetDynamicCaps + // + RPacketService::TDynamicCapsFlags dynCapsFlags; + TEST(iPacketService.GetDynamicCaps(dynCapsFlags) == KErrNone); + TEST(dynCapsFlags == RPacketService::KCapsEGPRS); + + // + // test NotifyDynamicCapsChange + // + TRequestStatus requestStatus; + dynCapsFlags = 0; + iPacketService.NotifyDynamicCapsChange(requestStatus, dynCapsFlags); + User::WaitForRequest(requestStatus); + TEST(requestStatus == KErrNone); + TEST(dynCapsFlags == RPacketService::KCapsHSDPA); + + // + // test cancellation of NotifyDynamicCapsChange + // + iPacketService.NotifyDynamicCapsChange(requestStatus, dynCapsFlags); + iPacketService.CancelAsyncRequest(EPacketNotifyDynamicCapsChange); + User::WaitForRequest(requestStatus); + TEST(requestStatus == KErrCancel); + + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } + +//------------------------------------------------------------------ + +CGprsContextAttachTest::CGprsContextAttachTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsContextAttachTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsContextAttachTest::doTestStepL( void ) +/** + * This tests the context attach and detach + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TRequestStatus stat2; + TBuf<50> contextName; + RPacketContext::TContextStatus contextStatus; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + StartNTRasSimulation() ; + + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + + iPacketContext[0].NotifyStatusChange(stat1, contextStatus); + iPacketContext[0].CancelAsyncRequest(EPacketContextNotifyStatusChange); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrCancel); + + iPacketContext[0].NotifyStatusChange(stat1, contextStatus); + iPacketContext[0].Activate(stat2); + + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TESTL(contextStatus == RPacketContext::EStatusActivating); + + iPacketContext[0].NotifyStatusChange(stat1, contextStatus); + User::WaitForRequest(stat2); + TESTL(stat2.Int()== KErrNone); + + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TESTL(contextStatus == RPacketContext::EStatusActive); + + iPacketContext[0].NotifyStatusChange(stat1, contextStatus); + + // need a few seconds between activating and deactivating - allow NTRAS server to respond + User::After(100000L); + iPacketContext[0].Deactivate(stat2); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TESTL(contextStatus == RPacketContext::EStatusDeactivating); + + iPacketContext[0].NotifyStatusChange(stat1, contextStatus); + User::WaitForRequest(stat2); + TESTL(stat2.Int() == KErrNone); + + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TESTL(contextStatus == RPacketContext::EStatusInactive); + + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsContextDeleteTest::CGprsContextDeleteTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsContextDeleteTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsContextDeleteTest::doTestStepL( void ) +/** + * This tests the context delete. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TBuf<30> contextName; + RPacketContext::TContextStatus contextStatus; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + + iPacketContext[0].Delete(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + iPacketContext[0].Activate(stat1); + User::WaitForRequest(stat1); + + TESTL(stat1.Int() == KErrNotReady); + TESTL(iPacketContext[0].GetStatus(contextStatus) == KErrNone); + TESTL(contextStatus == RPacketContext::EStatusDeleted); + + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsContextLoanComport::CGprsContextLoanComport() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsContextLoanComport")); + } +//------------------------------------------------------------------ + +TVerdict CGprsContextLoanComport::doTestStepL( void ) +/** + * This tests the comport loan. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TBuf<30> contextName; + RCall::TCommPort dataPort; + StartNTRasSimulation() ; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + + iPacketContext[0].RecoverCommPort(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrEtelPortNotLoanedToClient); + + //!!!! + iPacketContext[0].LoanCommPort(stat1, dataPort); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrEtelCallNotActive); + + iPacketContext[0].Activate(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + iPacketContext[0].LoanCommPort(stat1, dataPort); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + iPacketContext[0].Activate(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrEtelCallAlreadyActive); + + iPacketContext[0].RecoverCommPort(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + iPacketContext[0].Deactivate(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsContextUnSupportedTest::CGprsContextUnSupportedTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsContextUnSupportedTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsContextUnSupportedTest::doTestStepL( void ) +/** + * This tests all GPRS context API calls. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TBuf<30> contextName; + TInt err = 0; + RPacketContext::TDataVolume volume; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + + TESTL(iPacketContext[0].GetDataVolumeTransferred(volume) == KErrNotSupported); + iPacketContext[0].NotifyDataTransferred(stat1, volume); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNotSupported); + + TESTL(iPacketContext[0].GetLastErrorCause(err) == KErrNotSupported); + + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsCancelTest::CGprsCancelTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsCancelTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsCancelTest::doTestStepL( void ) +/** + * This test will call all GPRS API calls + * that can be canceled with an outstanding request + * to the phone. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + iPacketService.Attach(stat); + iPacketService.CancelAsyncRequest(EPacketAttach); + User::WaitForRequest(stat); + TESTL((stat.Int() == KErrCancel) || (stat.Int() == KErrNone)); + + iPacketService.Detach(stat); + iPacketService.CancelAsyncRequest(EPacketDetach); + User::WaitForRequest(stat); + TESTL((stat.Int() == KErrCancel)||(stat.Int() == KErrNone)); + + RPacketService::TMSClass currentClass; + RPacketService::TMSClass maxClass; + + iPacketService.GetMSClass(stat, currentClass, maxClass); + iPacketService.CancelAsyncRequest(EPacketGetMSClass); + User::WaitForRequest(stat); + TESTL((stat.Int() == KErrCancel)||(stat.Int() == KErrNone)); + + currentClass = RPacketService::EMSClassSuspensionRequired; + iPacketService.SetMSClass(stat, currentClass); + iPacketService.CancelAsyncRequest(EPacketSetMSClass); + User::WaitForRequest(stat); + TESTL((stat.Int() == KErrCancel)||(stat.Int() == KErrNone)); + + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsAttachTest::CGprsAttachTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsAttachTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsAttachTest::doTestStepL( void ) +/** + * This tests the attach and detach. + */ + { + SetSimtsyTestNumberL(0); + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TRequestStatus stat1; + RPacketService::TStatus status; + TESTL(iPacketService.Open(iPhone ) == KErrNone); + iPacketService.Attach(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + iPacketService.GetStatus(status); + TESTL(status == RPacketService::EStatusAttached); + iPacketService.Detach(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + iPacketService.GetStatus(status); + TESTL(status == RPacketService::EStatusUnattached); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsNotificationTest::CGprsNotificationTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsNotificationTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsNotificationTest::doTestStepL( void ) +/** + * Tests Notify Context added, Tests Notify status + */ + { + SetSimtsyTestNumberL(1); + TRequestStatus stat1,stat2,stat3; + TBuf<20> context= _L(""); + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TBuf<40> contextId; + + iPacketService.NotifyContextAdded(stat1, contextId); + iPacketService.CancelAsyncRequest(EPacketNotifyContextAdded); + User::WaitForRequest(stat1); + TESTL(stat1.Int()== KErrCancel); + iPacketService.NotifyContextAdded(stat1, contextId); + + TESTL(iPacketContext[0].OpenNewContext(iPacketService, context) == KErrNone); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + RPacketService::TStatus gprsStatus; + iPacketService.NotifyStatusChange(stat2, gprsStatus); + iPacketService.CancelAsyncRequest(EPacketNotifyStatusChange); + User::WaitForRequest(stat2); + TESTL(stat2.Int() == KErrCancel); + + iPacketService.NotifyStatusChange(stat2, gprsStatus); + iPacketService.Attach(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + User::WaitForRequest(stat2); + TESTL(stat2.Int() == KErrNone); + TESTL(gprsStatus == RPacketService::EStatusAttached); + + iPacketService.NotifyStatusChange(stat3, gprsStatus); + iPacketService.Detach(stat1); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + User::WaitForRequest(stat3); + TESTL(stat3.Int() == KErrNone); + TESTL(gprsStatus == RPacketService::EStatusUnattached); + + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsMsClassTest::CGprsMsClassTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsMsClassTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsMsClassTest::doTestStepL( void ) +/** + * This tests the MS Class. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + RPacketService::TMSClass currentClass; + RPacketService::TMSClass maxClass; + iPacketService.GetMSClass(stat1, currentClass, maxClass); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + iPacketService.SetMSClass(stat1, currentClass); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TESTL(currentClass == RPacketService::EMSClassSuspensionRequired); + TESTL(maxClass == RPacketService::EMSClassSuspensionRequired); + + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsContextConfigTest::CGprsContextConfigTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsContextConfigTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsContextConfigTest::doTestStepL( void ) +/** + * Test context config. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TBuf<30> contextName; + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + TESTL(iPacketContext[1].OpenNewContext(iPacketService, contextName) == KErrNone); + + RPacketContext::TContextConfigGPRS Getparams; + RPacketContext::TContextConfigGPRS Setparams; + Setparams.iPdpType = SIMTSY_PDP_TYPE2; + Setparams.iAccessPointName = SIMTSY_ACCESS_POINT2; + Setparams.iPdpAddress = SIMTSY_PDP_ADDRESS2; + Setparams.iPdpCompression = SIMTSY_COMPRESSION2; + Setparams.iAnonymousAccessReqd = SIMTSY_ANONYMOUS_ACCESS2; + Setparams.iUseEdge = SIMTSY_EGPRS_REQUIRED; + + TPckg GetcontextConfigPckg(Getparams); + iPacketContext[0].GetConfig(stat1, GetcontextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + Setparams = Getparams; + + TPckg SetcontextConfigPckg(Setparams); + iPacketContext[0].SetConfig(stat1, SetcontextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + iPacketContext[1].SetConfig(stat1, SetcontextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + iPacketContext[0].GetConfig(stat1, SetcontextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TRequestStatus stat; + iPacketContext[0].SetConfig(stat, SetcontextConfigPckg); + iPacketContext[0].CancelAsyncRequest(EPacketContextSetConfig); + User::WaitForRequest(stat); + TESTL(stat.Int() == KErrCancel || stat.Int() == KErrNone); + //!!!! + iPacketContext[0].GetConfig(stat, GetcontextConfigPckg); + iPacketContext[0].CancelAsyncRequest(EPacketContextGetConfig); + User::WaitForRequest(stat); + TESTL(stat.Int() == KErrCancel || stat.Int() == KErrNone); + + + Setparams.iPdpType = RPacketContext::TProtocolType(20); // Set out of range + TPckg errorPackage(Setparams); + iPacketContext[0].SetConfig(stat1, errorPackage); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrCorrupt); + + + iPacketContext[0].Close(); + iPacketContext[1].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } +//------------------------------------------------------------------ + +CGprsContextConfigNotificationsTest::CGprsContextConfigNotificationsTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsContextConfigNotificationsTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsContextConfigNotificationsTest::doTestStepL( void ) +/** + * Test context notifications. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1, stat2; + TBuf<30> contextName; + RPacketContext::TContextConfigGPRS params, notifyParams; + TPckg contextConfigPckg(params); + TPckg notifyContextConfigPckg(notifyParams); + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + TESTL(iPacketContext[1].OpenNewContext(iPacketService, contextName) == KErrNone); + iPacketContext[0].NotifyConfigChanged(stat1, notifyContextConfigPckg); + iPacketContext[0].CancelAsyncRequest(EPacketContextNotifyConfigChanged); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrCancel); + + iPacketContext[0].GetConfig(stat1, contextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + iPacketContext[0].NotifyConfigChanged(stat1, notifyContextConfigPckg); + + iPacketContext[0].SetConfig(stat2, contextConfigPckg); + User::WaitForRequest(stat2); + TESTL(stat2.Int() == KErrNone); + + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + TestConfigParamsL(params, notifyParams); + + iPacketContext[0].Close(); + iPacketContext[1].Close(); + iPacketService.Close(); + iPhone.Close(); + User::After(1000000); // to allow the next text to be able to see the contexts as closed + return TestStepResult(); + } +//------------------------------------------------------------------ + +COpenGprsMaxContextsTest::COpenGprsMaxContextsTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("OpenGprsMaxContextsTest")); + } +//------------------------------------------------------------------ + +TVerdict COpenGprsMaxContextsTest::doTestStepL( void ) +/** + * Tests enumerate contexts, open new context, open existing context. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + TBuf<20> contextName = _L(""); + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TInt countContexts; + TInt maxAllowedContexts; + //!!! + iPacketService.EnumerateContexts(stat1, countContexts, maxAllowedContexts); + User::WaitForRequest(stat1); + TESTL(countContexts == 0); + + TESTL(maxAllowedContexts == 11); + + TInt i = 0; + RPacketService::TContextInfo contextinfo; + + for(i = 0; i < maxAllowedContexts;i++) + { + RPacketContext contextPacket; + TBuf<30> tmpContextName; + tmpContextName = _L("PRIMARY"); + tmpContextName.AppendNum(i+1); + TESTL(iPacketContext[i].OpenNewContext(iPacketService, contextName) == KErrNone); + iPacketService.GetContextInfo(stat1, i, contextinfo); + User::WaitForRequest(stat1); + TESTL(contextinfo.iName == tmpContextName); + TESTL(contextinfo.iStatus == RPacketContext::EStatusInactive); + TESTL(contextPacket.OpenExistingContext(iPacketService, contextName) == KErrNone); + TESTL(contextName == tmpContextName); + contextPacket.Close(); + iPhone.Close(); + } + + iPacketService.GetContextInfo(stat1, i+1, contextinfo); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrArgument); + for(i = 0; i < maxAllowedContexts;i++) + { + iPacketContext[i].Close(); + } + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } + +//------------------------------------------------------------------ + +CGprsContextConfigArbitraryAddressTest::CGprsContextConfigArbitraryAddressTest() +/** Each test step initialises it's own name +*/ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("GprsContextConfigArbitraryAddressTest")); + } +//------------------------------------------------------------------ + +TVerdict CGprsContextConfigArbitraryAddressTest::doTestStepL() +/** + * Test context config. + */ + { + SetSimtsyTestNumberL(0); + TRequestStatus stat1; + RPacketContext::TContextConfigGPRS getParams; + RPacketContext::TContextConfigGPRS setParams; + + // Loading configuration from File + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + TBuf<30> contextName; + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + + // Getting the Actual Configuration + TPckg getContextConfigPckg(getParams); + iPacketContext[0].GetConfig(stat1, getContextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + setParams = getParams; + + // Hacking the PdpAddress with an Arbitrary String (doesn't need to be a proper IP) + setParams.iPdpAddress = _L8("ARBITRARY ADDRESS"); + + // Setting the New Configuration checking that it is accepted (no "KErrCorrupt") + TPckg setContextConfigPckg(setParams); + iPacketContext[0].SetConfig(stat1, setContextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() != KErrCorrupt && stat1.Int() == KErrNone); + + // Getting the Configuration + iPacketContext[0].GetConfig(stat1, setContextConfigPckg); + User::WaitForRequest(stat1); + TESTL(stat1.Int() == KErrNone); + + // Checking the Configuration was correctly changed by Sim.tsy + TESTL(setParams.iPdpAddress.Compare(getParams.iPdpAddress) == 0); + + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + return TestStepResult(); + } + +//------------------------------------------------------------------ + +CMbmsOpenNewContextTest::CMbmsOpenNewContextTest() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap1")); + } +//------------------------------------------------------------------ + +TVerdict CMbmsOpenNewContextTest::doTestStepL( void ) +/** + * Tests creation of new MBMS context activation using + * OpenNewContext of RPacketMbmsContext + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + TInt ret= iPacketMbmsContext.OpenNewContext(iPacketService, contextName); + TEST(ret == KErrNone); //OpenNewContext will not use any capabilities. + + iPacketMbmsContext.Close(); + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + + +//------------------------------------------------------------------------- + +CMbmsUpdateSessionTest::CMbmsUpdateSessionTest() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap2")); + } +//------------------------------------------------------------------ + +TVerdict CMbmsUpdateSessionTest::doTestStepL( void ) +/** + * Tests creation of new MBMS context activation and + * tests the update session functionality of the MBMS context using the + * API MbmsUpdateSessionTest of RPacketMbmsContext + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + TInt ret= iPacketMbmsContext.OpenNewContext(iPacketService, contextName); + TESTL(ret == KErrNone); + + RPacketMbmsContext::TContextConfigMbmsV1 contextConfig; + TPckg contextConfigPckg(contextConfig); + + //Get configuration for the MBMS + iPacketMbmsContext.GetConfig(reqStatus, contextConfigPckg); + User::WaitForRequest(reqStatus); + + RPacketContext::TContextStatus contextStatus; + TRequestStatus notifyStatusRequest; + iPacketMbmsContext.NotifyStatusChange(notifyStatusRequest, contextStatus); + + // Activate the MBMS context + iPacketMbmsContext.Activate(reqStatus); + User::WaitForRequest(reqStatus); + + User::WaitForRequest(notifyStatusRequest);//completes NotifyStatusChange with state “ctivating” + + /** Session is added to the activated services table */ + TMbmsAction aAction=EAddEntries; + TUint sessionid=SIM_PACKET_MBMS_SESSIONID; + TRequestStatus updateSessionRequest; + iPacketMbmsContext.UpdateMbmsSessionList(updateSessionRequest,reinterpret_cast(aAction), sessionid); + + /** the state of the session added changes from inactive to activated */ + User::WaitForRequest(updateSessionRequest);//completes UpdateSession + TESTL(updateSessionRequest.Int() == KErrPermissionDenied); + + iPacketMbmsContext.Close(); + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + +//------------------------------------------------------------------------- +CGetMbmsNetworkServiceStatus::CGetMbmsNetworkServiceStatus() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap3")); + } +//------------------------------------------------------------------ + +TVerdict CGetMbmsNetworkServiceStatus::doTestStepL( void ) +/** + * Tests the functionality of GetMbmsNetworkServiceStatus of RPacketService. + * + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + TMbmsNetworkServiceStatus tMbmsNetworkServiceStatus; + TBool attemptAttached = ETrue; + + iPacketService.GetMbmsNetworkServiceStatus(reqStatus, attemptAttached, tMbmsNetworkServiceStatus); + User::WaitForRequest(reqStatus); + TESTL(reqStatus.Int() == KErrPermissionDenied); + + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + +//------------------------------------------------------------------------- + +CNotifyMbmsNetworkServiceStatusChange::CNotifyMbmsNetworkServiceStatusChange() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap4")); + } +//------------------------------------------------------------------ + +TVerdict CNotifyMbmsNetworkServiceStatusChange::doTestStepL( void ) +/** + * Tests the functionality of NotifyMbmsNetworkServiceStatusChange of RPacketService. + * + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + TMbmsNetworkServiceStatus tMbmsNetworkServiceStatus; + + //To get notified when the network service status changes + iPacketService.NotifyMbmsNetworkServiceStatusChange(reqStatus, tMbmsNetworkServiceStatus); + User::WaitForRequest(reqStatus); + + TESTL(reqStatus.Int() == KErrPermissionDenied); + + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + +//------------------------------------------------------------------------- + +CNotifyMbmsServiceAvailabilityChange::CNotifyMbmsServiceAvailabilityChange() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap5")); + } +//------------------------------------------------------------------ + +TVerdict CNotifyMbmsServiceAvailabilityChange::doTestStepL( void ) +/** + * Tests Notification of the Service Availability List using the + * API NotifyMbmsServiceAvailabilityListChange of RPacketService. + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + CPcktMbmsMonitoredServiceList* mbmslist = CPcktMbmsMonitoredServiceList::NewL(); + CleanupStack::PushL(mbmslist); + + //Update the Mbms service availability List + TMbmsAction aAction=EAddEntries; + iPacketService.UpdateMbmsMonitorServiceListL(reqStatus, reinterpret_cast(aAction), mbmslist); + User::WaitForRequest(reqStatus); + + //Notify the change in the mbms service parameter list + iPacketService.NotifyMbmsServiceAvailabilityChange (reqStatus); + User::WaitForRequest(reqStatus); + TESTL(reqStatus.Int() == KErrNone); + + CleanupStack::PopAndDestroy(); //mbmslist + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + + +//------------------------------------------------------------------------- + +CUpdateMbmsMonitorServiceList::CUpdateMbmsMonitorServiceList() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap6")); + } +//------------------------------------------------------------------ + +TVerdict CUpdateMbmsMonitorServiceList::doTestStepL( void ) +/** + * Tests updation of the Service Monitoring List using the + * API UpdateMbmsMonitorServiceListL of RPacketService. + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + CPcktMbmsMonitoredServiceList* mbmsList = CPcktMbmsMonitoredServiceList::NewL(); + CleanupStack::PushL(mbmsList); + + /* ADD SERVICE */ + + RPacketService::TMbmsServiceAvailabilityV1 mbmsServAvail; + TMbmsAction action=EAddEntries; + TInt ab1=0,s1=1,a1=0; + TInt ab2=1,s2=2,a2=0; + + mbmsServAvail.iTmgi.SetServiceId(SIM_PACKET_MBMS_SERVICEID); + mbmsServAvail.iTmgi.SetMCC(SIM_PACKET_MBMS_MCCID); + mbmsServAvail.iTmgi.SetMNC(SIM_PACKET_MBMS_MNCID); + mbmsServAvail.iMbmsServiceMode = reinterpret_cast(s1); + mbmsServAvail.iMbmsAvailabilityStatus = reinterpret_cast(a1); + mbmsServAvail.iMbmsAccessBearer = reinterpret_cast(ab1); + mbmsList->AddEntryL(mbmsServAvail); + + mbmsServAvail.iTmgi.SetServiceId(SIM_PACKET_MBMS_SERVICEID); + mbmsServAvail.iTmgi.SetMCC(SIM_PACKET_MBMS_MCCID); + mbmsServAvail.iTmgi.SetMNC(SIM_PACKET_MBMS_MNCID); + mbmsServAvail.iMbmsServiceMode = reinterpret_cast(s2); + mbmsServAvail.iMbmsAvailabilityStatus = reinterpret_cast(a2); + mbmsServAvail.iMbmsAccessBearer = reinterpret_cast(ab2); + mbmsList->AddEntryL(mbmsServAvail); + + iPacketService.UpdateMbmsMonitorServiceListL(reqStatus,action,mbmsList); + User::WaitForRequest(reqStatus); + CleanupStack::PopAndDestroy(); + TESTL(reqStatus.Int() == KErrPermissionDenied); + + /* REMOVE SPECIFIC SERVICE */ + mbmsList= CPcktMbmsMonitoredServiceList::NewL(); + CleanupStack::PushL(mbmsList); + action=ERemoveEntries; + mbmsServAvail.iTmgi.SetServiceId(2345); + mbmsServAvail.iTmgi.SetMCC(2345); + mbmsServAvail.iTmgi.SetMNC(2345); + mbmsServAvail.iMbmsServiceMode = reinterpret_cast(s2); + mbmsServAvail.iMbmsAvailabilityStatus = reinterpret_cast(a2); + mbmsServAvail.iMbmsAccessBearer = reinterpret_cast(ab2); + mbmsList->AddEntryL(mbmsServAvail); + + iPacketService.UpdateMbmsMonitorServiceListL(reqStatus,action,mbmsList); + User::WaitForRequest(reqStatus); + CleanupStack::PopAndDestroy(); + TESTL(reqStatus.Int() == KErrPermissionDenied); + + /* REMOVE_ALL */ + action=ERemoveAllEntries; + iPacketService.UpdateMbmsMonitorServiceListL(reqStatus,action); + User::WaitForRequest(reqStatus); + + TESTL(reqStatus.Int() == KErrPermissionDenied); + + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + +//------------------------------------------------------------------------- + +CEnumerateMbmsActiveServiceList::CEnumerateMbmsActiveServiceList() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap7")); + } +//------------------------------------------------------------------ + +TVerdict CEnumerateMbmsActiveServiceList::doTestStepL( void ) +/** + * Tests the functionality of EnumerateMbmsActiveServiceList of RPacketService. + * + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + TInt currActiveServices, maxActiveServices; + iPacketService.EnumerateMbmsActiveServiceList(reqStatus,currActiveServices, maxActiveServices); + User::WaitForRequest(reqStatus); + + TESTL(reqStatus.Int() == KErrPermissionDenied); + + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + + +//------------------------------------------------------------------------- + +CEnumerateMbmsMonitorServiceList::CEnumerateMbmsMonitorServiceList() +/** Each test step initialises it's own name + */ + { + // store the name of this test case + // this is the name that is used by the script file + SetTestStepName(_L("EtelPcktMbmsCap8")); + } +//------------------------------------------------------------------ + +TVerdict CEnumerateMbmsMonitorServiceList::doTestStepL( void ) +/** + * Tests the functionality of EnumerateMbmsActiveServiceList of RPacketService. + * + */ + { + SetSimtsyTestNumberL(SIM_PACKET_MBMS_TESTNUMBER); + TRequestStatus reqStatus; + TBuf<20> contextName = _L(""); + + TESTL(iPhone.Open(iTelServer, KPhoneName)==KErrNone); + TESTL(iPhone.Initialise()==KErrNone); + TESTL(iPacketService.Open(iPhone ) == KErrNone); + + TInt currActiveServices, maxActiveServices; + iPacketService.EnumerateMbmsActiveServiceList(reqStatus,currActiveServices, maxActiveServices); + User::WaitForRequest(reqStatus); + + TESTL(reqStatus.Int() == KErrPermissionDenied); + + iPacketService.Close(); + iPhone.Close(); + + return TestStepResult(); + } + + +/** + * Tests closing one of two handles that both have notifications on them. + * This can cause ETel to close multiple requests during the same cancel + * request, which in turn can panic ETel if the iterator gets corrupted. + * + * @return Test step verdict. + */ +TVerdict CTestMultipleCompletionWithClosingContext::doTestStepL() + { + // + // Initialise and open the packet service... + // + SetSimtsyTestNumberL(2); + + TESTL(iPhone.Open(iTelServer, KPhoneName) == KErrNone); + TESTL(iPhone.Initialise() == KErrNone); + TESTL(iPacketService.Open(iPhone) == KErrNone); + StartNTRasSimulation(); + + // + // Open the first context... + // + TRequestStatus activateContext1Status; + TBuf<50> contextName; + + TESTL(iPacketContext[0].OpenNewContext(iPacketService, contextName) == KErrNone); + iPacketContext[0].Activate(activateContext1Status); + User::WaitForRequest(activateContext1Status); + + // + // Open the second context... + // + TRequestStatus activateContext2Status; + + TESTL(iPacketContext[1].OpenNewContext(iPacketService, contextName) == KErrNone); + iPacketContext[1].Activate(activateContext2Status); + User::WaitForRequest(activateContext2Status); + + // + // Open another handle to the second context by name... + // + TESTL(iPacketContext[2].OpenExistingContext(iPacketService, _L("PRIMARY2")) == KErrNone); + + // + // Post notifications on both handles for the second context... + // + TRequestStatus notifyContext1Status, notifyContext2Status; + RPacketContext::TContextStatus contextStatus1, contextStatus2; + + iPacketContext[1].NotifyStatusChange(notifyContext1Status, contextStatus1); + iPacketContext[2].NotifyStatusChange(notifyContext2Status, contextStatus2); + + // + // Delete second context using the first handle... + // + TRequestStatus deleteContext2Status; + + iPacketContext[1].Delete(deleteContext2Status); + User::WaitForRequest(deleteContext2Status); + + // + // The notifications will have triggered and a request will have + // been reposted to the TSY. + // + User::WaitForRequest(notifyContext1Status); + User::WaitForRequest(notifyContext2Status); + + // + // Deactivate the fist context... + // + TRequestStatus deactivateContext1Status; + + iPacketContext[0].Deactivate(deactivateContext1Status); + User::WaitForRequest(deactivateContext1Status); + + // + // Close the contexts. Note this is closing iPacketContext[1] before + // iPacketContext[2]! This forces the notification from the first handle + // to move to the second handle, but there it errors as the context is + // closed. This would cause ETel server to panic with KERN-EXEC:3. + // + iPacketContext[1].Close(); + iPacketContext[2].Close(); + iPacketContext[0].Close(); + iPacketService.Close(); + iPhone.Close(); + + // + // Now check that ETel is still up... + // + TEST(iPhone.Open(iTelServer, KPhoneName) == KErrNone); + iPhone.Close(); + + return TestStepResult(); + } // CTestMultipleCompletionWithClosingContext::doTestStepL