--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsymbmscontextfu.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,3363 @@
+// Copyright (c) 2008-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:
+//
+
+/**
+ @file The TEFUnit test suite for MBMS Context in the Common TSY.
+*/
+
+#include "cctsymbmscontextfu.h"
+#include "cctsyactiveretriever.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "tmockltsydata.h"
+#include <ctsy/serviceapi/gsmerror.h>
+
+#include <pcktcs.h>
+#include <pcktlist.h>
+#include "pcktretrieve.h"
+#include "CMmCommonStaticUtility.h"
+#include <ctsy/serviceapi/mmtsy_defaults.h>
+
+
+
+CTestSuite* CCTsyMbmsContextFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestOpenNewContext0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestInitialiseContext0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestInitialiseContext0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestInitialiseContext0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestInitialiseContext0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestInitialiseContext0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestSetConfig0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestSetConfig0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestSetConfig0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestSetConfig0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestSetConfig0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestActivate0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestActivate0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestActivate0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestActivate0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestActivate0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestDeactivate0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestDeactivate0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestDeactivate0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestDeactivate0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestDelete0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestDelete0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestDelete0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestClose0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestGetConfig0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestGetConfig0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestGetConfig0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestGetStatus0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestGetLastErrorCause0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestNotifyConfigChanged0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestNotifyConfigChanged0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestNotifyConfigChanged0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestNotifyConfigChanged0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestNotifyStatusChange0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestNotifyStatusChange0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyMbmsContextFU, TestNotifyStatusChange0003L);
+
+ END_SUITE;
+ }
+
+
+//
+// Actual test cases
+//
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PONC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::OpenNewContext
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::OpenNewContext
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+
+void CCTsyMbmsContextFU::TestOpenNewContext0001L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL( TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RPacketService packetService;
+
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ //-------------------------------------------------------------------------
+ // TEST create
+ //-------------------------------------------------------------------------
+
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ TInt retCode;
+
+ // memory leak check
+ __UHEAP_MARK;
+
+ retCode = packetMbmsContext.OpenNewContext(packetService, contextId);
+ ASSERT_EQUALS(KErrNone, retCode);
+
+ _LIT(KContextName, "MBMS_Context_0");
+
+ ASSERT_FALSE(contextId.Compare(KContextName));
+ packetMbmsContext.Close();
+
+ __UHEAP_MARKEND;
+ // end memory leak check
+
+ // test maximum number of contexts allowed
+ TInt count(0);
+ TInt maxAllowed(0);
+
+ TRequestStatus requestStatus;
+ packetService.EnumerateMbmsActiveServiceList(requestStatus, count, maxAllowed);
+ User::WaitForRequest( requestStatus );
+
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ TInt err = 0;
+ TInt status = 0;
+ for (TInt i = 0; i < maxAllowed; i++)
+ {
+ RPacketMbmsContext newPacketMbmsContext;
+ TInfoName contextId;
+
+ err = newPacketMbmsContext.OpenNewContext(packetService, contextId);
+ ASSERT_EQUALS(KErrNone, err);
+ CleanupClosePushL(newPacketMbmsContext);
+
+ // check the context can be initialised
+ status = InitMbmsContextL(newPacketMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ CleanupStack::Pop();
+ }
+
+ RPacketMbmsContext OneMorePacketContext;
+ TInfoName contextId1;
+
+ err = OneMorePacketContext.OpenNewContext(packetService, contextId1);
+ ASSERT_EQUALS(KErrOverflow, err);
+
+ OneMorePacketContext.Close();
+ packetService.Close();
+ CleanupStack::PopAndDestroy(2, this); // packetService, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PIC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::InitialiseContext
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::InitialiseContext
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestInitialiseContext0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetContext;
+ packetContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(packetContext);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+ TMockLtsyData1<TInfoName> ltsyExpect(contextId);
+ ltsyExpect.SerialiseL(expectData);
+
+ // data for initialisation of the context
+ TRequestStatus requestStatus;
+ iMockLTSY.ExpectL(ECtsyPacketMbmsInitialiseContextReq, expectData, KErrNotSupported);
+
+ //initialisation of the context
+ RPacketContext::TDataChannelV2 dataCh;
+ TPckg<RPacketContext::TDataChannelV2> pckgInit(dataCh);
+ packetContext.InitialiseContext(requestStatus, pckgInit);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ RPacketContext::TDataChannelV2 retDataCh;
+
+ _LIT(KDataChannelName, "DataChannel_1");
+ retDataCh.iChannelId.Copy(KDataChannelName);
+
+ iMockLTSY.ExpectL(ECtsyPacketMbmsInitialiseContextReq, expectData);
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ TMockLtsyData2<TInfoName, RPacketContext::TDataChannelV2> ltsyData(contextId,retDataCh);
+ data.Close();
+ ltsyData.SerialiseL(data);
+
+ iMockLTSY.CompleteL(ECtsyPacketMbmsInitialiseContextComp, KErrGeneral, data);
+
+ //initialisation of the context
+ packetContext.InitialiseContext(requestStatus, pckgInit);
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RPacketContext::InitialiseContext when result is not cached.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(ECtsyPacketMbmsInitialiseContextReq, expectData);
+ iMockLTSY.CompleteL(ECtsyPacketMbmsInitialiseContextComp, KErrNone, data);
+
+ //initialisation of the context
+ packetContext.InitialiseContext(requestStatus, pckgInit);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ RPacketContext::TDataChannelV2 dataChannel = pckgInit();
+
+ // check this
+ ASSERT_TRUE(contextId.Compare(KDataChannelName));
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RPacketContext::InitialiseContext
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(ECtsyPacketMbmsInitialiseContextComp, KErrNone, data);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(5, this); // expectData, data, this, packetService, packetContext
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PIC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RPacketMbmsContext::InitialiseContext
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RPacketMbmsContext::InitialiseContext
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestInitialiseContext0002L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL( TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RPacketContext::InitialiseContext when result is not cached.
+ //-------------------------------------------------------------------------
+
+ // data for initialisation of the context
+ TRequestStatus requestStatus;
+ RPacketContext::TDataChannelV2 dataCh;
+ TPckg<RPacketContext::TDataChannelV2> pckgInit(dataCh);
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ TMockLtsyData1< TInfoName> ltsyInit(contextId);
+ ltsyInit.SerialiseL(data);
+ iMockLTSY.ExpectL(ECtsyPacketMbmsInitialiseContextReq, data);
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RPacketContext::TDataChannelV2 retDataCh;
+ TMockLtsyData2< TInfoName, RPacketContext::TDataChannelV2 > ltsyData(contextId, retDataCh);
+ data.Close();
+ ltsyData.SerialiseL(data);
+ iMockLTSY.CompleteL(ECtsyPacketMbmsInitialiseContextComp, KErrNone, data, 10);
+
+ // initialisation of the context
+ packetMbmsContext.InitialiseContext(requestStatus, pckgInit);
+
+ // cancel request
+ packetMbmsContext.CancelAsyncRequest(EPacketContextInitialiseContext);
+
+ User::WaitForRequest(requestStatus);
+ // CTSY has started a request and it is not possible to then cancel
+ // this request. The best thing for the TSY to do in this case is to
+ // proceed as though the Cancel never happened.
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // Wait for completion of iMockLTSY.NotifyTerminated
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(2); // packetContext, packetService
+ CleanupStack::PopAndDestroy(3); // expectData, data, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PIC-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::InitialiseContext with bad parameter data
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::InitialiseContext with bad parameter data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestInitialiseContext0003L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ //-------------------------------------------------------------------------
+ // Test A: Test passing wrong version of parameters to
+ // RPacketMbmsContext::InitialiseContext
+ //-------------------------------------------------------------------------
+ // data for initialisation of the context
+
+ TRequestStatus requestStatus;
+ RCall::TCommPort dataCh; // wrong type of data package
+ TPckg<RCall::TCommPort> pckgInit( dataCh );
+
+ //initialisation of the context
+ packetMbmsContext.InitialiseContext( requestStatus, pckgInit );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrArgument, requestStatus.Int() );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy( 2 ); // packetMbmsContext, packetService
+ CleanupStack::PopAndDestroy( 3, this ); // expectData, data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PIC-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::InitialiseContext
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::InitialiseContext
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestInitialiseContext0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetContext;
+ packetContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(packetContext);
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext packetContext2;
+ packetContext2.OpenNewContext(packetService, contextId2);
+ CleanupClosePushL(packetContext2);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketMbmsContext::InitialiseContext
+ //-------------------------------------------------------------------------
+
+ // for the first request
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ TMockLtsyData1<TInfoName> ltsyExpect(contextId);
+ ltsyExpect.SerialiseL(expectData);
+ iMockLTSY.ExpectL(ECtsyPacketMbmsInitialiseContextReq, expectData);
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RPacketContext::TDataChannelV2 dataCh;
+ TMockLtsyData2<TInfoName, RPacketContext::TDataChannelV2> ltsyData(contextId, dataCh);
+ ltsyData.SerialiseL(data);
+ iMockLTSY.CompleteL(ECtsyPacketMbmsInitialiseContextComp, KErrNone, data);
+
+ // for the first request
+ RBuf8 expectData2;
+ CleanupClosePushL(expectData2);
+
+ TMockLtsyData1<TInfoName> ltsyExpect2(contextId2);
+ ltsyExpect2.SerialiseL(expectData2);
+ iMockLTSY.ExpectL(ECtsyPacketMbmsInitialiseContextReq, expectData2);
+
+ RBuf8 data2;
+ CleanupClosePushL(data2);
+
+ RPacketContext::TDataChannelV2 dataCh2;
+ TMockLtsyData2<TInfoName, RPacketContext::TDataChannelV2> ltsyData2(contextId2, dataCh2);
+ ltsyData2.SerialiseL(data2);
+ iMockLTSY.CompleteL(ECtsyPacketMbmsInitialiseContextComp, KErrNone, data2);
+
+ //first request
+ TRequestStatus requestStatus;
+ RPacketContext::TDataChannelV2 dataChannel1;
+ TPckg<RPacketContext::TDataChannelV2> pckgInit1(dataChannel1);
+ packetContext.InitialiseContext(requestStatus, pckgInit1);
+
+ //second request
+ TRequestStatus requestStatus2;
+ RPacketContext::TDataChannelV2 dataChannel2;
+ TPckg<RPacketContext::TDataChannelV2> pckgInit2(dataChannel2);
+ packetContext2.InitialiseContext(requestStatus2, pckgInit2);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(8, this); //packetContext2, packetContext, packetService, expectData, expectData2, data, data2, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PIC-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::InitialiseContext with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::InitialiseContext and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestInitialiseContext0005L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(packetMbmsContext);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RPacketContext::InitialiseContext
+ //-------------------------------------------------------------------------
+ TMockLtsyData1<TInfoName> ltsyExpect(contextId);
+ ltsyExpect.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(ECtsyPacketMbmsInitialiseContextReq, expectData);
+
+ TRequestStatus requestStatus;
+ RPacketContext::TDataChannelV2 dataCh;
+ TPckg<RPacketContext::TDataChannelV2> pckgInit(dataCh);
+ packetMbmsContext.InitialiseContext(requestStatus, pckgInit);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); //packetService, packetContext, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PSC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::SetConfig
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::SetConfig
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestSetConfig0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(mbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // data for SetContext
+ RPacketMbmsContext::TContextConfigMbmsV1 setConfig;
+ TTmgi ttmgi;
+ ttmgi.SetServiceId(KMmConfigTMGI1);
+ ttmgi.SetMCC(KMmConfigTmgiMMC1);
+ ttmgi.SetMNC(KMmConfigTmgiMNC1);
+ setConfig.iTmgi = ttmgi;
+ setConfig.iMbmsAccessBearer = E2GBearer;
+ setConfig.iMbmsServicePriority = EMbmsMediumServicePriority;
+ setConfig.iMbmsServiceMode = KBroadcast;
+ setConfig.iMbmsSessionFlag = EFalse;
+
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig(setConfig);
+
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+ TMockLtsyData2<RPacketMbmsContext::TContextConfigMbmsV1, TInfoName > expExpect(setConfig, contextId);
+ expExpect.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData, KErrNotSupported);
+
+ TRequestStatus requestStatus;
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData);
+
+ TMockLtsyData1<TInfoName > contexName(contextId);
+ contexName.SerialiseL(data);
+ iMockLTSY.CompleteL(EPacketContextSetConfig, KErrGeneral, data);
+
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RPacketContext::SetConfig when result is not cached.
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData);
+ iMockLTSY.CompleteL(EPacketContextSetConfig, KErrNone, data);
+
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ RPacketMbmsContext::TContextConfigMbmsV1 retData = pckgConfig();
+ ASSERT_EQUALS(setConfig.iMbmsAccessBearer, retData.iMbmsAccessBearer);
+ ASSERT_EQUALS(setConfig.iMbmsServicePriority, retData.iMbmsServicePriority);
+ ASSERT_EQUALS(setConfig.iMbmsServiceMode, retData.iMbmsServiceMode);
+ ASSERT_EQUALS(setConfig.iMbmsSessionFlag, retData.iMbmsSessionFlag);
+
+ AssertMockLtsyStatusL();
+
+ //--------------------------------------------
+ // failure to dispatch request for config
+ //--------------------------------------------
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData, KErrNotSupported);
+
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RPacketContext::SetConfig
+ // from LTSY.
+ //-------------------------------------------------------------------------
+ TRequestStatus mockLtsyStatus;
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EPacketContextSetConfig, KErrNone, data);
+ User::WaitForRequest(mockLtsyStatus);
+
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(2); //packetContext, packetService
+ CleanupStack::PopAndDestroy(3, this); // data, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PSC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RPacketMbmsContext::SetConfig
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RPacketMbmsContext::SetConfig
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestSetConfig0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(mbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ TRequestStatus requestStatus;
+ RPacketMbmsContext::TContextConfigMbmsV1 setConfig;
+
+ //-------------------------------------------------------------------------
+ // TEST C: Cancel completion request of
+ // RPacketContext::SetConfig when result is not cached.
+ //-------------------------------------------------------------------------
+ TMockLtsyData2<RPacketMbmsContext::TContextConfigMbmsV1, TInfoName > expExpect(setConfig, contextId);
+ expExpect.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData);
+
+ // TODO : KHURAM FIX
+ //data for CompleteL
+ TMockLtsyData1<TInfoName > contexName(contextId);
+ contexName.SerialiseL(data);
+ iMockLTSY.CompleteL(EPacketContextSetConfig, KErrNone, data, 10);
+
+
+ // data for SetContext
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig(setConfig);
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+ mbmsContext.CancelAsyncRequest(EPacketContextSetConfig);
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(2); //packetContext, packetService
+ CleanupStack::PopAndDestroy(3, this); // data, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PSC-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::SetConfig with bad parameter data
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::SetConfig with bad parameter data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestSetConfig0003L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ TInfoName contextId;
+ TInfoName hostCid;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ TRequestStatus requestStatus;
+
+ //------------------------------------------------
+ //set config for context that was not initialised
+ //------------------------------------------------
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig(contextConfig);
+
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(2); //packetContext packetService
+ CleanupStack::PopAndDestroy(2, this); // data, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PSC-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::SetConfig
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::SetConfig
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestSetConfig0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 data2;
+ CleanupClosePushL(data2);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 expectData2;
+ CleanupClosePushL(expectData2);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(telServer2,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ RPacketService packetService2;
+ ret = packetService2.Open(phone2);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(packetService2);
+
+ // Open first context
+ TInfoName contextId;
+ TInfoName hostCid;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext mbmsContext2;
+ mbmsContext2.OpenNewContext(packetService2, contextId2);
+ CleanupClosePushL(mbmsContext2);
+
+
+ // initialisation of the first context
+ TInt status = InitMbmsContextL(mbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // initialisation of the second context
+ status = InitMbmsContextL(mbmsContext2, contextId2);
+ ASSERT_EQUALS(KErrNone, status);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketContext::SetConfig
+ //-------------------------------------------------------------------------
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ TTmgi ttmgi;
+ ttmgi.SetServiceId(KMmConfigTMGI1);
+ ttmgi.SetMCC(KMmConfigTmgiMMC1);
+ ttmgi.SetMCC(KMmConfigTmgiMNC1);
+ contextConfig.iTmgi = ttmgi;
+ contextConfig.iMbmsAccessBearer = E2GBearer;
+ contextConfig.iMbmsServicePriority = EMbmsMediumServicePriority;
+ contextConfig.iMbmsServiceMode = KBroadcast;
+ contextConfig.iMbmsSessionFlag = EFalse;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig(contextConfig);
+ // for the first ExpectL
+ TMockLtsyData2<RPacketMbmsContext::TContextConfigMbmsV1, TInfoName > expExpect(contextConfig, contextId);
+ expExpect.SerialiseL(expectData);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig2;
+ TTmgi ttmgi2;
+ ttmgi2.SetServiceId(KMmConfigTMGI2);
+ ttmgi2.SetMCC(KMmConfigTmgiMMC2);
+ ttmgi2.SetMCC(KMmConfigTmgiMNC2);
+ contextConfig2.iTmgi = ttmgi;
+ contextConfig2.iMbmsAccessBearer = E3GBearer;
+ contextConfig2.iMbmsServicePriority = EMbmsHighServicePriority;
+ contextConfig2.iMbmsServiceMode = KSelectedBroadcast;
+ contextConfig2.iMbmsSessionFlag = ETrue;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig2(contextConfig2);
+ // for the second ExpectL
+ TMockLtsyData2<RPacketMbmsContext::TContextConfigMbmsV1, TInfoName > expExpect2(contextConfig2, contextId2);
+ expExpect2.SerialiseL(expectData2);
+
+ // for the first CompleteL
+ TMockLtsyData1< TInfoName > ltsyData(contextId);
+ ltsyData.SerialiseL(data);
+
+ // for the second CompleteL
+ TMockLtsyData1< TInfoName > ltsyData2(contextId2);
+ ltsyData2.SerialiseL(data2);
+
+ TRequestStatus requestStatus;
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData);
+ iMockLTSY.CompleteL(EPacketContextSetConfig, KErrNone, data, 10);
+
+ TRequestStatus requestStatus2;
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData2);
+ iMockLTSY.CompleteL(EPacketContextSetConfig, KErrNone, data2, 10);
+
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+ mbmsContext2.SetConfig(requestStatus2, pckgConfig2);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ RPacketMbmsContext::TContextConfigMbmsV1 ret1 = pckgConfig();
+ RPacketMbmsContext::TContextConfigMbmsV1 ret2 = pckgConfig2();
+
+ ASSERT_EQUALS(ret1.iMbmsAccessBearer, contextConfig.iMbmsAccessBearer);
+ ASSERT_EQUALS(ret1.iMbmsServicePriority, contextConfig.iMbmsServicePriority);
+ ASSERT_EQUALS(ret1.iMbmsServiceMode, contextConfig.iMbmsServiceMode);
+ ASSERT_EQUALS(ret1.iMbmsSessionFlag, contextConfig.iMbmsSessionFlag);
+
+ ASSERT_EQUALS(ret2.iMbmsAccessBearer, contextConfig2.iMbmsAccessBearer);
+ ASSERT_EQUALS(ret2.iMbmsServicePriority, contextConfig2.iMbmsServicePriority);
+ ASSERT_EQUALS(ret2.iMbmsServiceMode, contextConfig2.iMbmsServiceMode);
+ ASSERT_EQUALS(ret2.iMbmsSessionFlag, contextConfig2.iMbmsSessionFlag);
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ // packetContext, packetService, packetContext2, packetService2
+ //one2, telServer2, data2,
+ CleanupStack::PopAndDestroy(2); //expectData2, expectData
+ CleanupStack::PopAndDestroy(9, this); // data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PSC-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::SetConfig with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::SetConfig and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestSetConfig0005L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RPacketContext::SetConfig
+ //-------------------------------------------------------------------------
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ // initialisation of the first context
+ TInt status = InitMbmsContextL(mbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig(contextConfig);
+ TMockLtsyData2<RPacketMbmsContext::TContextConfigMbmsV1, TInfoName > expExpect(contextConfig, contextId);
+ expExpect.SerialiseL(expectData);
+
+ TRequestStatus requestStatus;
+
+ TMockLtsyData1<TInfoName > contexName(contextId);
+ contexName.SerialiseL(data);
+
+ iMockLTSY.ExpectL(EPacketContextSetConfig, expectData);
+
+ mbmsContext.SetConfig(requestStatus, pckgConfig);
+
+ User::WaitForRequest(requestStatus);
+
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+
+ CleanupStack::PopAndDestroy(2); //packetContext packetService,
+ CleanupStack::PopAndDestroy(3, this); // data, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PA-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Activate
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::Activate
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestActivate0001L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL( TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 data2;
+ CleanupClosePushL( data2 );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RBuf8 expectData2;
+ CleanupClosePushL( expectData2 );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ //-------------------------------------------------------------------------
+ // TEST create
+ //-------------------------------------------------------------------------
+
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ TRequestStatus requestStatus;
+
+ //-------------------------------------------------------------------------
+ // TEST initialise
+ //-------------------------------------------------------------------------
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL( packetMbmsContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+
+ TMockLtsyData1 <TInfoName> expData(contextId);
+ expData.SerialiseL(expectData);
+
+
+ TMockLtsyData2< TInfoName, RPacketMbmsContext::TContextConfigMbmsV1 > ltsyData1(contextId, contextConfig);
+ ltsyData1.SerialiseL(data);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(EPacketContextActivate, expectData, KErrNotSupported);
+
+ packetMbmsContext.Activate(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+ TMockLtsyData1 <TInfoName> expData2(contextId);
+ expData2.SerialiseL(expectData2);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig2;
+ TMockLtsyData2< TInfoName, RPacketMbmsContext::TContextConfigMbmsV1 > ltsyData2(contextId, contextConfig2);
+ ltsyData2.SerialiseL(data2);
+
+ iMockLTSY.ExpectL(EPacketContextActivate, expectData2);
+ iMockLTSY.CompleteL(EPacketContextActivate, KErrGeneral, data2);
+
+ packetMbmsContext.Activate(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of activate context
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(EPacketContextActivate, expectData);
+ iMockLTSY.CompleteL(EPacketContextActivate, KErrNone, data);
+
+ packetMbmsContext.Activate(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RPacketContext::Activate
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ iMockLTSY.CompleteL(EPacketContextActivate, KErrNone, data);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy( 4 ); // data, data2, expectData
+ CleanupStack::PopAndDestroy( 3, this ); // packetMbmsContext, packetService, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PA-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RPacketMbmsContext::Activate
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RPacketMbmsContext::Activate
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestActivate0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(mbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(mbmsContext, contextId, contextConfig);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RPacketContext::Activate
+ //-------------------------------------------------------------------------
+ TMockLtsyData1 <TInfoName> expData(contextId);
+ expData.SerialiseL(expectData);
+
+ TRequestStatus requestStatus;
+ TMockLtsyData2< TInfoName, RPacketMbmsContext::TContextConfigMbmsV1 > ltsyData1(contextId, contextConfig);
+ ltsyData1.SerialiseL(data);
+ iMockLTSY.ExpectL(EPacketContextActivate, expectData);
+ iMockLTSY.CompleteL(EPacketContextActivate, KErrNone, data, 10);
+
+ mbmsContext.Activate(requestStatus);
+ mbmsContext.CancelAsyncRequest(EPacketContextActivate);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ // TSY has started a request and it is not possible to then cancel
+ // this request. The best thing for the TSY to do in this case is to
+ // proceed as though the Cancel never happened.
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(2); // packetContext, packetService
+ CleanupStack::PopAndDestroy(3); // this, expectData, data
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PA-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Activate with bad parameter data
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::Activate with bad parameter data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestActivate0003L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // -----------------------------------------------------------------------
+ // call Activate without initialisation of the context
+ // -----------------------------------------------------------------------
+
+ TRequestStatus requestStatus;
+ packetMbmsContext.Activate( requestStatus );
+ User::WaitForRequest( requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrArgument, requestStatus.Int() );
+
+ CleanupStack::PopAndDestroy( 3, this ); //packetMbmsContext, packetService, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PA-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::Activate
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::Activate
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestActivate0004L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL( TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RBuf8 data2;
+ CleanupClosePushL( data2 );
+
+ RBuf8 expectData2;
+ CleanupClosePushL( expectData2 );
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( telServer2 );
+
+ RMobilePhone phone2;
+ ret = phone2.Open( telServer2, KMmTsyPhoneName );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( phone2 );
+
+ // Open PacketService for the first client
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open PacketService for the second client
+ RPacketService packetService2;
+ packetService2.Open( phone2 );
+ CleanupClosePushL( packetService2 );
+
+ // Open first context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // initialisation of the first context
+ TInt status = InitMbmsContextL( packetMbmsContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+ AssertMockLtsyStatusL();
+
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+ AssertMockLtsyStatusL();
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext packetMbmsContext2;
+ packetMbmsContext2.OpenNewContext( packetService2, contextId2 );
+ CleanupClosePushL( packetMbmsContext2 );
+ AssertMockLtsyStatusL();
+
+ // initialisation of the second context
+ status = InitMbmsContextL( packetMbmsContext2, contextId2 );
+ ASSERT_EQUALS( KErrNone, status );
+ AssertMockLtsyStatusL();
+
+ // Configure context2
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig2;
+ status = SetMbmsConfigL(packetMbmsContext2, contextId2, contextConfig2);
+ ASSERT_EQUALS( KErrNone, status );
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketMbmsContext::Activate
+ //-------------------------------------------------------------------------
+
+ // data for ExpectL for first client
+ TMockLtsyData1 <TInfoName> expData( contextId );
+ expData.SerialiseL( expectData );
+
+ // data for CompleteL for first client
+ TMockLtsyData2< TInfoName, RPacketMbmsContext::TContextConfigMbmsV1 > ltsyData1( contextId, contextConfig );
+ ltsyData1.SerialiseL( data );
+
+ // data for ExpectL for second client
+ TMockLtsyData1 <TInfoName> expData2( contextId2 );
+ expData2.SerialiseL( expectData2 );
+
+ // data for CompleteL for second client
+ TMockLtsyData2< TInfoName, RPacketMbmsContext::TContextConfigMbmsV1 > ltsyData2( contextId2, contextConfig2 );
+ ltsyData2.SerialiseL( data2 );
+
+ // first request
+ TRequestStatus requestStatus;
+ iMockLTSY.ExpectL( EPacketContextActivate, expectData );
+ iMockLTSY.CompleteL( EPacketContextActivate, KErrNone, data );
+ packetMbmsContext.Activate( requestStatus );
+
+ // second request
+ TRequestStatus requestStatus2;
+ iMockLTSY.ExpectL( EPacketContextActivate, expectData2 );
+ iMockLTSY.CompleteL( EPacketContextActivate, KErrNone, data2 );
+ packetMbmsContext2.Activate( requestStatus2 );
+
+ // wait for first answer
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrNone, requestStatus.Int() );
+
+ // wait for the second answer
+ User::WaitForRequest( requestStatus2 );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrNone, requestStatus2.Int() );
+
+ CleanupStack::PopAndDestroy( 11, this ); // ... phone2, telServer2, expectData, data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PA-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Activate with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::Activate and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestActivate0005L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL( packetMbmsContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RPacketMbmsContext::Activate
+ //-------------------------------------------------------------------------
+ TMockLtsyData1 <TInfoName> expData( contextId );
+ expData.SerialiseL( expectData );
+
+ iMockLTSY.ExpectL( EPacketContextActivate, expectData );
+
+ TRequestStatus requestStatus;
+ packetMbmsContext.Activate( requestStatus );
+ User::WaitForRequest( requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrTimedOut, requestStatus.Int() );
+
+ CleanupStack::PopAndDestroy( 5, this ); // data, expectData, packetMbmsContext, packetService, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PD-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Deactivate
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::Deactivate
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestDeactivate0001L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ CFilteringActiveScheduler scheduler;
+ CActiveScheduler::Install(&scheduler);
+
+ RPacketMbmsContext::CMbmsSession* aSession = RPacketMbmsContext::CMbmsSession::NewL();
+ CleanupStack::PushL(aSession);
+
+ CRetrievePcktMbmsSessionList* aSessionlist = CRetrievePcktMbmsSessionList::NewL(packetMbmsContext, *aSession);
+ CleanupStack::PushL(aSessionlist);
+
+ CActiveRetriever::ResetRequestsNumber();
+ CActiveRetriever retriever(*aSessionlist);
+
+ scheduler.AddRetrieverL(retriever);
+
+ aSessionlist->Start( retriever.Status() );
+ retriever.Activate();
+ scheduler.StartScheduler();
+
+ TMockLtsyData2 <TInfoName, RPacketMbmsContext::CMbmsSession*> ltsyData( contextId, aSession);
+ ltsyData.SerialiseL( data );
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data, KErrNotFound );
+
+ TRequestStatus requestStatus;
+ packetMbmsContext.Deactivate(requestStatus);
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrNotFound, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ TMockLtsyData1 <TInfoName> ltsyData1( contextId);
+ ltsyData1.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data );
+ iMockLTSY.CompleteL( EPacketContextDeactivate, KErrGeneral, expectData );
+
+ packetMbmsContext.Deactivate( requestStatus );
+ User::WaitForRequest( requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrGeneral, requestStatus.Int() );
+
+
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data );
+ iMockLTSY.CompleteL( EPacketContextDeactivate, KErrMbmsImpreciseServiceEntries, data );
+
+ packetMbmsContext.Deactivate( requestStatus );
+ User::WaitForRequest( requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrMbmsImpreciseServiceEntries, requestStatus.Int() );
+
+
+
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RPacketMbmsContext::Deactivate when result is not cached.
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data );
+ iMockLTSY.CompleteL( EPacketContextDeactivate, KErrNone, expectData );
+
+ packetMbmsContext.Deactivate( requestStatus );
+ User::WaitForRequest( requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrNone, requestStatus.Int() );
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RPacketMbmsContext::Deactivate
+ // from LTSY.
+ //-------------------------------------------------------------------------
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+ iMockLTSY.CompleteL( EPacketContextDeactivate, KErrNone, expectData );
+ User::WaitForRequest( mockLtsyStatus );
+ ASSERT_EQUALS( KErrNone, mockLtsyStatus.Int() );
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy( 4 ); // packetMbmsContext, packetService
+ CleanupStack::PopAndDestroy( 3, this ); // data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PD-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RPacketMbmsContext::Deactivate
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RPacketMbmsContext::Deactivate
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestDeactivate0002L()
+ {
+ // This test should test cancellation of Deactivate
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RPacketMbmsContext::Deactivate
+ //-------------------------------------------------------------------------
+
+ CFilteringActiveScheduler scheduler;
+ CActiveScheduler::Install(&scheduler);
+
+ RPacketMbmsContext::CMbmsSession* aSession = RPacketMbmsContext::CMbmsSession::NewL();
+ CleanupStack::PushL(aSession);
+
+ CRetrievePcktMbmsSessionList* aSessionlist = CRetrievePcktMbmsSessionList::NewL(packetMbmsContext, *aSession);
+ CleanupStack::PushL(aSessionlist);
+
+ CActiveRetriever::ResetRequestsNumber();
+ CActiveRetriever retriever(*aSessionlist);
+
+ scheduler.AddRetrieverL(retriever);
+
+ aSessionlist->Start( retriever.Status() );
+ retriever.Activate();
+ scheduler.StartScheduler();
+
+
+ TMockLtsyData2 <TInfoName, RPacketMbmsContext::CMbmsSession* > ltsyData( contextId, aSession);
+ ltsyData.SerialiseL( data );
+
+ TMockLtsyData1 <TInfoName> ltsyData1(contextId);
+ ltsyData1.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data );
+ iMockLTSY.CompleteL( EPacketContextDeactivate, KErrNone, expectData, 10 );
+
+ TRequestStatus requestStatus;
+
+ packetMbmsContext.Deactivate( requestStatus );
+ packetMbmsContext.CancelAsyncRequest( EPacketContextDeactivate );
+ User::WaitForRequest( requestStatus );
+
+ // CTSY has started a request and it is not possible to then cancel
+ // this request. The best thing for the TSY to do in this case is to
+ // proceed as though the Cancel never happened.
+ ASSERT_EQUALS( KErrNone, requestStatus.Int() );
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy( 4 ); // packetMbmsContext, packetService
+ CleanupStack::PopAndDestroy( 3 ); // data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PD-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::Deactivate
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::Deactivate
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestDeactivate0004L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 data2;
+ CleanupClosePushL( data2 );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RBuf8 expectData2;
+ CleanupClosePushL( expectData2 );
+
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( telServer2 );
+
+ RMobilePhone phone2;
+ ret = phone2.Open( iTelServer, KMmTsyPhoneName );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( phone2 );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ RPacketService packetService2;
+ ret = packetService2.Open( phone2 );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( packetService2 );
+
+ // Open first context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext packetMbmsContext2;
+ packetMbmsContext2.OpenNewContext( packetService2, contextId2 );
+ CleanupClosePushL( packetMbmsContext2 );
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketMbmsContext::Deactivate
+ //-------------------------------------------------------------------------
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // initialisation of the context
+ status = InitMbmsContextL(packetMbmsContext2, contextId2);
+ ASSERT_EQUALS(KErrNone, status);
+
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ status = SetMbmsConfigL(packetMbmsContext2, contextId2, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ status = SetMbmsActiveL(packetMbmsContext2, contextConfig, contextId2);
+ ASSERT_EQUALS(KErrNone, status);
+
+ CFilteringActiveScheduler scheduler;
+ CActiveScheduler::Install(&scheduler);
+
+ RPacketMbmsContext::CMbmsSession* aSession = RPacketMbmsContext::CMbmsSession::NewL();
+ CleanupStack::PushL(aSession);
+
+ CRetrievePcktMbmsSessionList* aSessionlist = CRetrievePcktMbmsSessionList::NewL(packetMbmsContext, *aSession);
+ CleanupStack::PushL(aSessionlist);
+
+ CActiveRetriever::ResetRequestsNumber();
+ CActiveRetriever retriever(*aSessionlist);
+
+ scheduler.AddRetrieverL(retriever);
+
+ aSessionlist->Start( retriever.Status() );
+ retriever.Activate();
+ scheduler.StartScheduler();
+ TMockLtsyData2 <TInfoName, RPacketMbmsContext::CMbmsSession* > ltsyData( contextId, aSession);
+ ltsyData.SerialiseL( data );
+
+
+ RPacketMbmsContext::CMbmsSession* aSession2 = RPacketMbmsContext::CMbmsSession::NewL();
+ CleanupStack::PushL(aSession2);
+
+ CRetrievePcktMbmsSessionList* aSessionlist2 = CRetrievePcktMbmsSessionList::NewL(packetMbmsContext2, *aSession2);
+ CleanupStack::PushL(aSessionlist2);
+
+ CActiveRetriever::ResetRequestsNumber();
+ CActiveRetriever retriever1(*aSessionlist2);
+
+ scheduler.AddRetrieverL(retriever1);
+
+ aSessionlist->Start( retriever1.Status() );
+ retriever1.Activate();
+ scheduler.StartScheduler();
+
+ TMockLtsyData2 <TInfoName, RPacketMbmsContext::CMbmsSession* > ltsyData2( contextId2, aSession2);
+ ltsyData2.SerialiseL( data2 );
+
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data );
+
+ TMockLtsyData1 <TInfoName> ltsyData3(contextId);
+ ltsyData3.SerialiseL(expectData);
+
+ iMockLTSY.CompleteL( EPacketContextDeactivate, KErrNone, expectData, 5 );
+
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data2 );
+
+ TMockLtsyData1 <TInfoName> ltsyData4(contextId2);
+ ltsyData4.SerialiseL(expectData2);
+
+ iMockLTSY.CompleteL( EPacketContextDeactivate, KErrNone, expectData2, 5 );
+
+ TRequestStatus requestStatus;
+ packetMbmsContext.Deactivate( requestStatus );
+
+ TRequestStatus requestStatus2;
+ packetMbmsContext2.Deactivate( requestStatus2 );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS(KErrNone, requestStatus.Int() );
+ User::WaitForRequest( requestStatus2 );
+ ASSERT_EQUALS( KErrNone, requestStatus2.Int() );
+
+ CleanupStack::PopAndDestroy(15, this); // phone2, telServer2, data, data2, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PD-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Deactivate with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::Deactivate and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestDeactivate0005L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RPacketMbmsContext::Deactivate
+ //-------------------------------------------------------------------------
+ TRequestStatus requestStatus;
+
+ CFilteringActiveScheduler scheduler;
+ CActiveScheduler::Install(&scheduler);
+
+ RPacketMbmsContext::CMbmsSession* aSession = RPacketMbmsContext::CMbmsSession::NewL();
+ CleanupStack::PushL(aSession);
+
+ CRetrievePcktMbmsSessionList* aSessionlist = CRetrievePcktMbmsSessionList::NewL(packetMbmsContext, *aSession);
+ CleanupStack::PushL(aSessionlist);
+
+ CActiveRetriever::ResetRequestsNumber();
+ CActiveRetriever retriever(*aSessionlist);
+
+ scheduler.AddRetrieverL(retriever);
+
+ aSessionlist->Start( retriever.Status() );
+ retriever.Activate();
+ scheduler.StartScheduler();
+
+ TMockLtsyData2 <TInfoName, RPacketMbmsContext::CMbmsSession* > ltsyData( contextId, aSession);
+ ltsyData.SerialiseL( data );
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ iMockLTSY.ExpectL( EPacketContextDeactivate, data );
+ packetMbmsContext.Deactivate( requestStatus );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrTimedOut, requestStatus.Int() );
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy( 4 ); // packetMbmsContext, packetService
+ CleanupStack::PopAndDestroy( 2, this ); // data, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PDE-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Delete
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::Delete
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestDelete0001L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL( TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 outData;
+ CleanupClosePushL( outData );
+
+ RBuf8 servData;
+ CleanupClosePushL( servData );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ TRequestStatus requestStatus;
+ TMockLtsyData1<TInfoName > ltsyData( contextId );
+ ltsyData.SerialiseL( data );
+
+ //-------------------------------------------------------------------------
+ // Send Delete request when ContextStatus is Unknown
+ //-------------------------------------------------------------------------
+
+ packetMbmsContext.Delete( requestStatus );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrNotReady, requestStatus.Int() );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // activate context properly
+ //-------------------------------------------------------------------------
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // deactivate
+ status = SetMbmsDeactiveL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RPacketMbmsContext::Delete
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+ // send completion
+ iMockLTSY.CompleteL( EPacketContextDelete, KErrNone, data );
+ // wait for completion
+ User::WaitForRequest( mockLtsyStatus );
+ ASSERT_EQUALS( KErrNone, mockLtsyStatus.Int() );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+ TMockLtsyData1<TInfoName> expData( contextId );
+ expData.SerialiseL( expectData );
+
+ iMockLTSY.ExpectL( EPacketContextDelete, expectData, KErrNotSupported );
+
+ packetMbmsContext.Delete( requestStatus );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrNotSupported, requestStatus.Int() );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL ( EPacketContextDelete, expectData );
+ iMockLTSY.CompleteL( EPacketContextDelete, KErrGeneral, data );
+
+ packetMbmsContext.Delete( requestStatus );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int() );
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RPacketMbmsContext::Delete when result is not cached.
+ //-------------------------------------------------------------------------
+
+ // remove context succefully
+ iMockLTSY.ExpectL( EPacketContextDelete, data );
+ iMockLTSY.CompleteL( EPacketContextDelete, KErrNone, data );
+ packetMbmsContext.Delete( requestStatus );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrNone, requestStatus.Int() );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy( 7, this ); //packetMbmsContext, packetService, expectData, data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PDE-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::Delete
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::Delete
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestDelete0004L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 data2;
+ CleanupClosePushL( data2 );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RBuf8 expectData2;
+ CleanupClosePushL( expectData2 );
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( telServer2 );
+
+ RMobilePhone phone2;
+ ret = phone2.Open( iTelServer, KMmTsyPhoneName );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( phone2 );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ RPacketService packetService2;
+ ret = packetService2.Open( phone2 );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( packetService2 );
+
+ // Open first context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext packetMbmsContext2;
+ packetMbmsContext2.OpenNewContext( packetService2, contextId2 );
+ CleanupClosePushL( packetMbmsContext2 );
+
+ // initialise context's first
+ TInt status = InitMbmsContextL( packetMbmsContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ TInt status2 = InitMbmsContextL( packetMbmsContext2, contextId2 );
+ ASSERT_EQUALS( KErrNone, status2 );
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // Configure context 2
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig2;
+ status = SetMbmsConfigL(packetMbmsContext2, contextId2, contextConfig2);
+ ASSERT_EQUALS( KErrNone, status );
+
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // activate context
+ status2 = SetMbmsActiveL(packetMbmsContext2, contextConfig2, contextId2);
+ ASSERT_EQUALS(KErrNone, status2);
+
+ // deactivate
+ status = SetMbmsDeactiveL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ status2 = SetMbmsDeactiveL(packetMbmsContext2, contextId2);
+ ASSERT_EQUALS(KErrNone, status2);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketMbmsContext::Delete
+ //-------------------------------------------------------------------------
+
+ // data for first CompleteL
+ TMockLtsyData1<TInfoName> ltsyData( contextId );
+ ltsyData.SerialiseL( data );
+
+ // data for second CompleteL
+ TMockLtsyData1<TInfoName> ltsyData2( contextId2 );
+ ltsyData2.SerialiseL( data2 );
+
+ // for the first request
+ TRequestStatus requestStatus;
+ TMockLtsyData1<TInfoName> expData( contextId );
+ expData.SerialiseL( expectData );
+
+ // for the second request
+ TRequestStatus requestStatus2;
+ TMockLtsyData1<TInfoName> expData2( contextId2 );
+ expData2.SerialiseL( expectData2 );
+
+ iMockLTSY.ExpectL( EPacketContextDelete, expectData );
+ iMockLTSY.CompleteL( EPacketContextDelete, KErrNone, data );
+ iMockLTSY.ExpectL( EPacketContextDelete, expectData2 );
+ iMockLTSY.CompleteL( EPacketContextDelete, KErrNone, data2 );
+
+ // send first request
+ packetMbmsContext.Delete( requestStatus );
+
+ // send second request
+ packetMbmsContext2.Delete( requestStatus2 );
+
+ // wait for first answer
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrNone, requestStatus.Int() );
+
+ // wait for second answer
+ User::WaitForRequest( requestStatus2 );
+ ASSERT_EQUALS( KErrNone, requestStatus2.Int() );
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy( 2 ); // expectData2, expectData
+ CleanupStack::PopAndDestroy( 9, this ); //packetMbmsContext2, packetMbmsContext, packetService2, packetService, phone2, telServer2, data, data2, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PDE-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Delete with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::Delete and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestDelete0005L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup,this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // initialise context
+ TInt status = InitMbmsContextL( packetMbmsContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // deactivate
+ status = SetMbmsDeactiveL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RPacketMbmsContext::Delete
+ //-------------------------------------------------------------------------
+ TRequestStatus requestStatus;
+ TMockLtsyData1<TInfoName> expData( contextId );
+ expData.SerialiseL( expectData );
+ iMockLTSY.ExpectL( EPacketContextDelete, expectData );
+
+ packetMbmsContext.Delete( requestStatus );
+
+ User::WaitForRequest( requestStatus );
+ ASSERT_EQUALS( KErrTimedOut, requestStatus.Int() );
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy( 5, this ); //packetMbmsContext, packetService, data, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::Close
+@SYMTestPriority
+@SYMTestActions Invokes RPacketMbmsContext::Close
+@SYMTestExpectedResults Pass
+@SYMTestType
+*/
+void CCTsyMbmsContextFU::TestClose0001L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup,this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // initialise context
+ TInt status = InitMbmsContextL( packetMbmsContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(packetMbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // deactivate
+ status = SetMbmsDeactiveL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // delete context
+ status = SetMbmsDeleteL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // and finally close context
+ TRequestStatus requestStatus;
+
+ packetMbmsContext.Close( );
+
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, KErrNone);
+
+ CleanupStack::PopAndDestroy( 5, this );
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PGC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::GetConfig
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::GetConfig
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestGetConfig0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetContext;
+ packetContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(packetContext);
+
+ TRequestStatus requestStatus;
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig(contextConfig);
+
+ TTmgi ttmgi;
+ ttmgi.SetServiceId(KMmConfigTMGI1);
+ ttmgi.SetMCC(KMmConfigTmgiMMC1);
+ ttmgi.SetMCC(KMmConfigTmgiMNC1);
+
+ contextConfig.iTmgi = ttmgi;
+ contextConfig.iMbmsAccessBearer = E2GBearer;
+ contextConfig.iMbmsServicePriority = EMbmsMediumServicePriority;
+ contextConfig.iMbmsServiceMode = KBroadcast;
+ contextConfig.iMbmsSessionFlag = EFalse;
+
+ TInt status = InitMbmsContextL( packetContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ status = SetMbmsConfigL(packetContext, contextId, contextConfig);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 retContextConfig;
+
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> retPckgConfig(retContextConfig);
+
+ packetContext.GetConfig(requestStatus, retPckgConfig);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ ASSERT_EQUALS( contextConfig.iTmgi.GetServiceId(), contextConfig.iTmgi.GetServiceId());
+ ASSERT_EQUALS( contextConfig.iTmgi.GetMCC(), contextConfig.iTmgi.GetMCC());
+ ASSERT_EQUALS( contextConfig.iTmgi.GetMNC(), contextConfig.iTmgi.GetMNC());
+ ASSERT_EQUALS( contextConfig.iMbmsAccessBearer, contextConfig.iMbmsAccessBearer);
+ ASSERT_EQUALS( contextConfig.iMbmsServicePriority, retContextConfig.iMbmsServicePriority);
+ ASSERT_EQUALS( contextConfig.iMbmsServiceMode, retContextConfig.iMbmsServiceMode);
+ ASSERT_EQUALS( contextConfig.iMbmsSessionFlag, retContextConfig.iMbmsSessionFlag);
+
+ CleanupStack::PopAndDestroy(5, this); // packetService1, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PGC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::GetConfig
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::GetConfig
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestGetConfig0002L()
+ {
+
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 data2;
+ CleanupClosePushL( data2 );
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( telServer2 );
+
+ RMobilePhone phone2;
+ ret = phone2.Open( iTelServer, KMmTsyPhoneName );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( phone2 );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ RPacketService packetService2;
+ ret = packetService2.Open( phone2 );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( packetService2 );
+
+ // Open first context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext packetMbmsContext2;
+ packetMbmsContext2.OpenNewContext( packetService2, contextId2 );
+ CleanupClosePushL( packetMbmsContext2 );
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketMbmsContext::GetConfig
+ //-------------------------------------------------------------------------
+
+ // If this API is flow controlled by Etel or if this API is
+ // synchronous, remove this test completely.
+
+ TRequestStatus requestStatus;
+ TMockLtsyData1<TInfoName > ltsyData( contextId );
+ ltsyData.SerialiseL( data );
+
+ // data for second context
+ TRequestStatus requestStatus2;
+ TMockLtsyData1<TInfoName > ltsyData2( contextId2 );
+ ltsyData2.SerialiseL( data2 );
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ TInt status2 = InitMbmsContextL(packetMbmsContext2, contextId2);
+ ASSERT_EQUALS(KErrNone, status2);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ // activate context
+ status = SetMbmsActiveL(packetMbmsContext, contextConfig, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig2;
+ // activate context
+ status2 = SetMbmsActiveL(packetMbmsContext2, contextConfig2, contextId2);
+ ASSERT_EQUALS(KErrNone, status2);
+
+ // -----------------------------------------------------------------------
+ // initialise parameters
+ // -----------------------------------------------------------------------
+
+ // first context is selected and high priority
+ TTmgi ttmgi;
+ ttmgi.SetServiceId(KMmConfigTMGI1);
+ ttmgi.SetMCC(KMmConfigTmgiMMC1);
+ ttmgi.SetMCC(KMmConfigTmgiMNC1);
+
+ contextConfig.iTmgi = ttmgi;
+ contextConfig.iMbmsSessionFlag = ETrue;
+ contextConfig.iMbmsServicePriority = EMbmsHighServicePriority;
+ contextConfig.iMbmsServiceMode = KSelectedBroadcast;
+ contextConfig.iMbmsAccessBearer = E3GBearer;
+
+ // second context
+
+ TTmgi ttmgi2;
+ ttmgi2.SetServiceId(KMmConfigTMGI2);
+ ttmgi2.SetMCC(KMmConfigTmgiMMC2);
+ ttmgi2.SetMCC(KMmConfigTmgiMNC2);
+
+ contextConfig2.iTmgi = ttmgi2;
+ contextConfig2.iMbmsSessionFlag = EFalse;
+ contextConfig2.iMbmsServicePriority = EMbmsLowServicePriority;
+ contextConfig2.iMbmsServiceMode = KBroadcast;
+ contextConfig2.iMbmsAccessBearer = E3GBearer;
+
+ status = SetMbmsConfigL( packetMbmsContext, contextId, contextConfig );
+ ASSERT_EQUALS(KErrNone, status);
+
+ status2 = SetMbmsConfigL( packetMbmsContext2, contextId2, contextConfig2 );
+ ASSERT_EQUALS(KErrNone, status2);
+
+ // -----------------------------------------------------------------------
+ // get parameters
+ // -----------------------------------------------------------------------
+ RPacketMbmsContext::TContextConfigMbmsV1 getConfig;
+ RPacketMbmsContext::TContextConfigMbmsV1 getConfig2;
+
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig(getConfig);
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig2(getConfig2);
+
+ // send first request
+ packetMbmsContext.GetConfig(requestStatus, pckgConfig);
+ // send second request
+ packetMbmsContext2.GetConfig(requestStatus2, pckgConfig2);
+
+
+ // wait for the both answers
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ User::WaitForRequest( requestStatus2 );
+ ASSERT_EQUALS( KErrNone, requestStatus2.Int() );
+
+ ASSERT_EQUALS(KMmConfigTMGI1, getConfig.iTmgi.GetServiceId());
+ ASSERT_TRUE(getConfig.iMbmsSessionFlag);
+ ASSERT_EQUALS(EMbmsHighServicePriority, getConfig.iMbmsServicePriority );
+ ASSERT_EQUALS(KSelectedBroadcast, getConfig.iMbmsServiceMode);
+ ASSERT_EQUALS(E3GBearer, getConfig.iMbmsAccessBearer);
+
+ ASSERT_EQUALS(KMmConfigTMGI2, getConfig2.iTmgi.GetServiceId());
+ ASSERT_TRUE(!getConfig2.iMbmsSessionFlag);
+ ASSERT_EQUALS(EMbmsLowServicePriority, getConfig2.iMbmsServicePriority);
+ ASSERT_EQUALS(KBroadcast, getConfig2.iMbmsServiceMode);
+ ASSERT_EQUALS(E3GBearer, getConfig2.iMbmsAccessBearer);
+
+ CleanupStack::PopAndDestroy(4); // packetMbmsContext, packetService, packetMbmsContext2, packetService2
+ CleanupStack::PopAndDestroy(5, this); // phone2, telServer2, data, data2, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PGC-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::GetConfig with bad parameter data
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::GetConfig with bad parameter data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestGetConfig0003L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetContext;
+ packetContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(packetContext);
+
+ TRequestStatus requestStatus;
+ RPacketContext::TContextConfigGPRS contextConfig;
+ TPckg<RPacketContext::TContextConfigGPRS> pckgConfig(contextConfig);
+
+ TInt status = InitMbmsContextL( packetContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ packetContext.GetConfig(requestStatus, pckgConfig);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrArgument, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(3); //this, packetService packetContext
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PGS-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::GetStatus
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::GetStatus
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestGetStatus0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 expectData;
+ CleanupClosePushL( expectData );
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ // test 1: context not inited
+ RPacketContext::TContextStatus contextStatus;
+ mbmsContext.GetStatus(contextStatus);
+ ASSERT_EQUALS(RPacketContext::EStatusUnknown, contextStatus);
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(mbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ // test2: context inited
+ mbmsContext.GetStatus(contextStatus);
+ ASSERT_EQUALS(RPacketContext::EStatusInactive, contextStatus);
+
+ TMockLtsyData1 <TInfoName> expData(contextId);
+ expData.SerialiseL(expectData);
+
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ TMockLtsyData2< TInfoName, RPacketMbmsContext::TContextConfigMbmsV1 > ltsyData1(contextId, contextConfig);
+ ltsyData1.SerialiseL(data);
+
+ iMockLTSY.ExpectL(EPacketContextActivate, expectData);
+ iMockLTSY.CompleteL(EPacketContextActivate, KErrNone, data);
+
+ TRequestStatus requestStatus;
+ mbmsContext.Activate(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // test3: context activated
+ mbmsContext.GetStatus(contextStatus);
+ ASSERT_EQUALS(RPacketContext::EStatusActive, contextStatus);
+
+ CleanupStack::PopAndDestroy(2); //packetContext, packetService
+ CleanupStack::PopAndDestroy(3, this); // data,expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PGLEC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::GetLastErrorCause
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::GetLastErrorCause
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestGetLastErrorCause0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ // initialise context
+ TInt status = InitMbmsContextL( mbmsContext, contextId );
+ ASSERT_EQUALS( KErrNone, status );
+
+ // Configure context
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ status = SetMbmsConfigL(mbmsContext, contextId, contextConfig);
+ ASSERT_EQUALS( KErrNone, status );
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ TInt error;
+ status = mbmsContext.GetLastErrorCause(error);
+ ASSERT_EQUALS(KErrNone, status);
+ ASSERT_EQUALS(KErrNone, error);
+
+ //-------------------------------------------------------------------------
+ // TEST B: Emulate some error
+ //-------------------------------------------------------------------------
+
+ // Set context in to Activating state
+ TContextMisc completeMisc;
+ completeMisc.iStatus = RPacketContext::EStatusActivating;
+ TMockLtsyData2 <TInfoName, TContextMisc> ltsyData1(contextId, completeMisc);
+ data.Close();
+ ltsyData1.SerialiseL(data);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ //send completion
+ iMockLTSY.CompleteL(EPacketContextNotifyStatusChange, KErrNone, data);
+ // wait for completion
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ // Emulate an error
+ completeMisc.iStatus = RPacketContext::EStatusActive;
+ TMockLtsyData2 <TInfoName, TContextMisc> ltsyData(contextId, completeMisc);
+ data.Close();
+ ltsyData.SerialiseL(data);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ //send completion
+ iMockLTSY.CompleteL(EPacketContextNotifyStatusChange, KErrGeneral, data);
+ // wait for completion
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ // Get the error
+ status = mbmsContext.GetLastErrorCause(error);
+ ASSERT_EQUALS(KErrNone, status);
+ ASSERT_EQUALS(KErrGeneral, error);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // packetContext, mbmsService, data, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PNCC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::NotifyConfigChanged
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::NotifyConfigChanged
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestNotifyConfigChanged0001L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL( TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ // initialisation of the context
+ TInt status = InitMbmsContextL(packetMbmsContext, contextId);
+ ASSERT_EQUALS(KErrNone, status);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RPacketMbmsContext::NotifyConfigChanged when result is not cached.
+ //-------------------------------------------------------------------------
+ // data for NotifyConfigChanged
+ TRequestStatus requestStatus;
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig( contextConfig );
+
+ //data for ComleteL
+ RPacketMbmsContext::TContextConfigMbmsV1 configComplete;
+
+ TTmgi ttmgi;
+ ttmgi.SetServiceId(KMmConfigTMGI1);
+ ttmgi.SetMCC(KMmConfigTmgiMMC1);
+ ttmgi.SetMNC(KMmConfigTmgiMNC1);
+
+ configComplete.iTmgi = ttmgi;
+ configComplete.iMbmsAccessBearer = E2GBearer;
+ configComplete.iMbmsServicePriority = EMbmsMediumServicePriority;
+ configComplete.iMbmsServiceMode = KBroadcast;
+ configComplete.iMbmsSessionFlag = EFalse;
+
+ TMockLtsyData2<TInfoName, RPacketMbmsContext::TContextConfigMbmsV1> ltsyData( contextId, configComplete );
+ ltsyData.SerialiseL( data );
+
+ // send request
+ packetMbmsContext.NotifyConfigChanged( requestStatus, pckgConfig );
+
+ // sent completion
+ iMockLTSY.CompleteL( ECtsyPacketMbmsContextNotifyConfigChanged, KErrNone, data );
+ // wait for completion
+ User::WaitForRequest( mockLtsyStatus );
+
+ // wait for request
+ User::WaitForRequest( requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrNone, requestStatus.Int() );
+
+ ASSERT_EQUALS( configComplete.iTmgi.GetServiceId(), contextConfig.iTmgi.GetServiceId());
+ ASSERT_EQUALS( configComplete.iTmgi.GetMCC(), contextConfig.iTmgi.GetMCC());
+ ASSERT_EQUALS( configComplete.iTmgi.GetMNC(), contextConfig.iTmgi.GetMNC());
+ ASSERT_EQUALS( configComplete.iMbmsAccessBearer, contextConfig.iMbmsAccessBearer);
+ ASSERT_EQUALS( configComplete.iMbmsServicePriority, contextConfig.iMbmsServicePriority);
+ ASSERT_EQUALS( configComplete.iMbmsServiceMode, contextConfig.iMbmsServiceMode);
+ ASSERT_EQUALS( configComplete.iMbmsSessionFlag, contextConfig.iMbmsSessionFlag);
+
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RPacketMbmsContext::NotifyConfigChanged
+ // from LTSY.
+ //-------------------------------------------------------------------------
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+ // sent completion
+ iMockLTSY.CompleteL( ECtsyPacketMbmsContextNotifyConfigChanged, KErrNone, data );
+ // wait for completion
+ User::WaitForRequest( mockLtsyStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrNone, mockLtsyStatus.Int() );
+
+ CleanupStack::PopAndDestroy( 2 ); // packetService, packetMbmsContext
+ CleanupStack::PopAndDestroy( 2, this ); // data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PNCC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RPacketMbmsContext::NotifyConfigChanged
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RPacketMbmsContext::NotifyConfigChanged
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestNotifyConfigChanged0002L()
+ {
+ // This test should test cancellation of NotifyConfigChanged
+ // If this API does not have a cancel, the test step should be completely removed.
+
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RPacketMbmsContext::NotifyConfigChanged
+ //-------------------------------------------------------------------------
+ // data for NotifyConfigChanged
+ TRequestStatus requestStatus;
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig( contextConfig );
+
+ //data for ComleteL
+ RPacketMbmsContext::TContextConfigMbmsV1 configComplete;
+
+ TTmgi ttmgi;
+ ttmgi.SetServiceId(KMmConfigTMGI1);
+ ttmgi.SetMCC(KMmConfigTmgiMMC1);
+ ttmgi.SetMNC(KMmConfigTmgiMNC1);
+
+ configComplete.iTmgi = ttmgi;
+ configComplete.iMbmsAccessBearer = E2GBearer;
+ configComplete.iMbmsServicePriority = EMbmsMediumServicePriority;
+ configComplete.iMbmsServiceMode = KBroadcast;
+ configComplete.iMbmsSessionFlag = EFalse;
+
+ TMockLtsyData2 <TInfoName, RPacketMbmsContext::TContextConfigMbmsV1> ltsyData( contextId, configComplete );
+ ltsyData.SerialiseL( data );
+
+ // send request
+ packetMbmsContext.NotifyConfigChanged( requestStatus, pckgConfig );
+ //send cancellation
+ packetMbmsContext.CancelAsyncRequest( ECtsyPacketMbmsContextNotifyConfigChanged );
+
+ // sent completion
+ iMockLTSY.CompleteL( ECtsyPacketMbmsContextNotifyConfigChanged, KErrNone, data );
+ // wait for completion
+ User::WaitForRequest( mockLtsyStatus );
+
+ // wait for request
+ User::WaitForRequest( requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_TRUE( KErrCancel == requestStatus.Int() || KErrNone == requestStatus.Int());
+
+ CleanupStack::PopAndDestroy( 2 ); // packetService, packetMbmsContext
+ CleanupStack::PopAndDestroy( 2 ); // data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PNCC-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::NotifyConfigChanged with bad parameter data
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::NotifyConfigChanged with bad parameter data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestNotifyConfigChanged0003L()
+ {
+ // This test should test sending bad parameter data for NotifyConfigChanged
+ // If this API does not have any parameters, then remove this test completely.
+
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL(TCleanupItem( Cleanup,this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+
+ //-------------------------------------------------------------------------
+ // Test A: Test passing wrong version of parameters to
+ // RPacketMbmsContext::NotifyConfigChanged
+ //-------------------------------------------------------------------------
+ // data for NotifyConfigChanged
+ TRequestStatus requestStatus;
+ RPacketMbmsContext::TContextConfigCDMA contextConfig;
+ TPckg<RPacketMbmsContext::TContextConfigCDMA> pckgConfig( contextConfig );
+
+ // send request
+ packetMbmsContext.NotifyConfigChanged( requestStatus, pckgConfig );
+
+ // wait for request
+ User::WaitForRequest(requestStatus );
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS( KErrNotSupported, requestStatus.Int() );
+
+ // Done !
+ CleanupStack::PopAndDestroy( 2 ); // packetMbmsService, packetContext
+ CleanupStack::PopAndDestroy( 2, this ); // data, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PNCC-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::NotifyConfigChanged
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::NotifyConfigChanged
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestNotifyConfigChanged0004L()
+ {
+ OpenEtelServerL( EUseExtendedError );
+ CleanupStack::PushL( TCleanupItem( Cleanup, this ) );
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL( data );
+
+ RBuf8 data2;
+ CleanupClosePushL( data2 );
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( telServer2 );
+
+ RMobilePhone phone2;
+ ret = phone2.Open( iTelServer, KMmTsyPhoneName );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( phone2 );
+
+ RPacketService packetService;
+ OpenPacketServiceL( packetService );
+ CleanupClosePushL( packetService );
+
+ RPacketService packetService2;
+ ret = packetService2.Open( phone2 );
+ ASSERT_EQUALS( KErrNone, ret );
+ CleanupClosePushL( packetService2 );
+
+ // Open first context
+ TInfoName contextId;
+ RPacketMbmsContext packetMbmsContext;
+ packetMbmsContext.OpenNewContext( packetService, contextId );
+ CleanupClosePushL( packetMbmsContext );
+
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext packetMbmsContext2;
+ packetMbmsContext2.OpenNewContext( packetService2, contextId2 );
+ CleanupClosePushL( packetMbmsContext2 );
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated( mockLtsyStatus );
+
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketMbmsContext::NotifyConfigChanged
+ //-------------------------------------------------------------------------
+
+ // If this API is flow controlled by Etel or if this API is
+ // synchronous, remove this test completely.
+
+ // To write this test:
+ // If this API has parameters which have different versions, then each
+ // client in this test should use a different version of parameter.
+ // Otherwise, they should use the same version.
+ // All versions of parameters should be used. i.e. If there are three
+ // versions of a parameter, there should be three clients, one using
+ // each one. If the parameter does not have different versions, use
+ // two clients each using the same version.
+
+ // data for NotifyConfigChanged 1
+ TRequestStatus requestStatus;
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig1;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig1( contextConfig1 );
+
+ //data for CompleteL 1
+ RPacketMbmsContext::TContextConfigMbmsV1 configComplete1;
+
+ TTmgi ttmgi;
+ ttmgi.SetServiceId(KMmConfigTMGI1);
+ ttmgi.SetMCC(KMmConfigTmgiMMC1);
+ ttmgi.SetMNC(KMmConfigTmgiMNC1);
+
+ configComplete1.iTmgi = ttmgi;
+ configComplete1.iMbmsAccessBearer = E2GBearer;
+ configComplete1.iMbmsServicePriority = EMbmsMediumServicePriority;
+ configComplete1.iMbmsServiceMode = KBroadcast;
+ configComplete1.iMbmsSessionFlag = EFalse;
+ TMockLtsyData2<TInfoName, RPacketMbmsContext::TContextConfigMbmsV1> ltsyData( contextId, configComplete1 );
+ ltsyData.SerialiseL( data );
+
+ // data for NotifyConfigChanged 2
+ TRequestStatus requestStatus2;
+ RPacketMbmsContext::TContextConfigMbmsV1 contextConfig2;
+ TPckg<RPacketMbmsContext::TContextConfigMbmsV1> pckgConfig2( contextConfig2 );
+
+ //data for CompleteL 2
+ RPacketMbmsContext::TContextConfigMbmsV1 configComplete2;
+
+ configComplete2.iTmgi = ttmgi;
+ configComplete2.iMbmsAccessBearer = E2GBearer;
+ configComplete2.iMbmsServicePriority = EMbmsHighServicePriority;
+ configComplete2.iMbmsServiceMode = KSelectedBroadcast;
+ configComplete2.iMbmsSessionFlag = ETrue;
+
+ TMockLtsyData2<TInfoName, RPacketMbmsContext::TContextConfigMbmsV1> ltsyData2( contextId2, configComplete2 );
+ ltsyData2.SerialiseL( data2 );
+
+ // send first request
+ packetMbmsContext.NotifyConfigChanged( requestStatus, pckgConfig1 );
+
+ // send second request
+ packetMbmsContext2.NotifyConfigChanged( requestStatus2, pckgConfig2 );
+
+ // sent first completion
+ iMockLTSY.CompleteL( ECtsyPacketMbmsContextNotifyConfigChanged, KErrNone, data );
+
+ // sent second completion
+ iMockLTSY.CompleteL( ECtsyPacketMbmsContextNotifyConfigChanged, KErrNone, data2 );
+
+
+ // wait for completion
+ User::WaitForRequest( mockLtsyStatus );
+
+
+ // wait for first answer
+ User::WaitForRequest( requestStatus );
+
+ // wait for second answer
+ User::WaitForRequest( requestStatus2 );
+ AssertMockLtsyStatusL();
+
+ ASSERT_EQUALS( KErrNone, requestStatus.Int() );
+ ASSERT_EQUALS( configComplete1.iTmgi.GetServiceId(), contextConfig1.iTmgi.GetServiceId());
+ ASSERT_EQUALS( configComplete1.iTmgi.GetMCC(), contextConfig1.iTmgi.GetMCC());
+ ASSERT_EQUALS( configComplete1.iTmgi.GetMNC(), contextConfig1.iTmgi.GetMNC());
+ ASSERT_EQUALS( configComplete1.iMbmsAccessBearer, contextConfig1.iMbmsAccessBearer);
+ ASSERT_EQUALS( configComplete1.iMbmsServicePriority, contextConfig1.iMbmsServicePriority);
+ ASSERT_EQUALS( configComplete1.iMbmsServiceMode, contextConfig1.iMbmsServiceMode);
+ ASSERT_EQUALS( configComplete1.iMbmsSessionFlag, contextConfig1.iMbmsSessionFlag);
+
+
+ ASSERT_EQUALS( KErrNone, requestStatus2.Int() );
+
+ ASSERT_EQUALS( configComplete2.iTmgi.GetServiceId(), contextConfig2.iTmgi.GetServiceId());
+ ASSERT_EQUALS( configComplete2.iTmgi.GetMCC(), contextConfig2.iTmgi.GetMCC());
+ ASSERT_EQUALS( configComplete2.iTmgi.GetMNC(), contextConfig2.iTmgi.GetMNC());
+ ASSERT_EQUALS( configComplete2.iMbmsAccessBearer, contextConfig2.iMbmsAccessBearer);
+ ASSERT_EQUALS( configComplete2.iMbmsServicePriority, contextConfig2.iMbmsServicePriority);
+ ASSERT_EQUALS( configComplete2.iMbmsServiceMode, contextConfig2.iMbmsServiceMode);
+ ASSERT_EQUALS( configComplete2.iMbmsSessionFlag, contextConfig2.iMbmsSessionFlag);
+
+
+ // Done !
+ CleanupStack::PopAndDestroy( 9, this ); //packetMbmsContext2, packetMbmsContext, packetService2, packetService, phone2, telServer2, data, data2 this
+ }
+
+/**
+@SYMTestCaseID
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketMbmsContext::NotifyStatusChange
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketMbmsContext::NotifyStatusChange
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestNotifyStatusChange0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ // data for NotifyStatusChange
+ TRequestStatus requestStatus;
+ RPacketContext::TContextStatus contextStatus;
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RPacketContext::NotifyStatusChange when result is not cached.
+ //-------------------------------------------------------------------------
+ //data for CompleteL
+ TContextMisc completeMisc;
+ completeMisc.iStatus = RPacketContext::EStatusActive;
+ TMockLtsyData2 <TInfoName, TContextMisc> ltsyData(contextId, completeMisc);
+ ltsyData.SerialiseL(data);
+ //send request
+ mbmsContext.NotifyStatusChange(requestStatus, contextStatus);
+ //send completion
+ iMockLTSY.CompleteL(EPacketContextNotifyStatusChange, KErrNone, data);
+ // wait for completion
+ User::WaitForRequest(mockLtsyStatus);
+
+ // wait for NotifyStatusChange
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ ASSERT_EQUALS(completeMisc.iStatus, contextStatus);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RPacketContext::NotifyStatusChange
+ // from LTSY.
+ //-------------------------------------------------------------------------
+ //data for ComleteL
+ completeMisc.iStatus = RPacketContext::EStatusInactive;
+ TMockLtsyData2 <TInfoName, TContextMisc> ltsyData1(contextId, completeMisc);
+ data.Close();
+ ltsyData1.SerialiseL(data);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ //send completion
+ iMockLTSY.CompleteL(EPacketContextNotifyStatusChange, KErrNone, data);
+ // wait for completion
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(2); // packetContext, packetService
+ CleanupStack::PopAndDestroy(2, this); // data, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PNSC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RPacketMbmsContext::NotifyStatusChange
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RPacketMbmsContext::NotifyStatusChange
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestNotifyStatusChange0002L()
+ {
+
+// This test should test cancellation of NotifyStatusChange
+// If this API does not have a cancel, the test step should be completely removed.
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ // Open new context
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ // data for NotifyStatusChange
+ TRequestStatus requestStatus;
+ RPacketContext::TContextStatus contextStatus;
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RPacketContext::NotifyStatusChange
+ //-------------------------------------------------------------------------
+ //data for ComleteL
+ TContextMisc completeMisc;
+ completeMisc.iStatus = RPacketContext::EStatusInactive;
+ TMockLtsyData2 <TInfoName, TContextMisc> ltsyData(contextId, completeMisc);
+ ltsyData.SerialiseL(data);
+ //send request
+ mbmsContext.NotifyStatusChange(requestStatus, contextStatus);
+ // send canceling...
+ mbmsContext.CancelAsyncRequest(EPacketContextNotifyStatusChange);
+
+ //send completion
+ iMockLTSY.CompleteL(EPacketContextNotifyStatusChange, KErrNone, data);
+ // wait for completion
+ User::WaitForRequest(mockLtsyStatus);
+
+ // wait for NotifyStatusChange
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ // Wait for completion of iMockLTSY.NotifyTerminated
+ CleanupStack::PopAndDestroy(2); // packetContext, packetService
+ CleanupStack::PopAndDestroy(2); // data, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-MCF-PNSC-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketMbmsContext::NotifyStatusChange
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketMbmsContext::NotifyStatusChange
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyMbmsContextFU::TestNotifyStatusChange0003L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RBuf8 data2;
+ CleanupClosePushL(data2);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RPacketService packetService;
+ OpenPacketServiceL(packetService);
+ CleanupClosePushL(packetService);
+
+ RPacketService packetService2;
+ ret = packetService2.Open(phone2);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(packetService2);
+
+ // Open first context
+ TInfoName contextId;
+ RPacketMbmsContext mbmsContext;
+ mbmsContext.OpenNewContext(packetService, contextId);
+ CleanupClosePushL(mbmsContext);
+
+ // Open second context
+ TInfoName contextId2;
+ RPacketMbmsContext mbmsContext2;
+ mbmsContext2.OpenNewContext(packetService2, contextId2);
+ CleanupClosePushL(mbmsContext2);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RPacketContext::NotifyStatusChange
+ //-------------------------------------------------------------------------
+
+ // If this API is flow controlled by Etel or if this API is
+ // synchronous, remove this test completely.
+
+ // To write this test:
+ // If this API has parameters which have different versions, then each
+ // client in this test should use a different version of parameter.
+ // Otherwise, they should use the same version.
+ // All versions of parameters should be used. i.e. If there are three
+ // versions of a parameter, there should be three clients, one using
+ // each one. If the parameter does not have different versions, use
+ // two clients each using the same version.
+
+ //data for ComleteL for first context
+ TContextMisc completeMisc;
+ completeMisc.iStatus = RPacketContext::EStatusInactive;
+ TMockLtsyData2 <TInfoName, TContextMisc> ltsyData(contextId, completeMisc);
+ ltsyData.SerialiseL(data);
+
+ //data for ComleteL for second context
+ TContextMisc completeMisc2;
+ completeMisc2.iStatus = RPacketContext::EStatusSuspended;
+ TMockLtsyData2 <TInfoName, TContextMisc> ltsyData2(contextId2, completeMisc2);
+ ltsyData2.SerialiseL(data2);
+
+ // initialize data for first context's NotifyStatusChange
+ TRequestStatus requestStatus;
+ RPacketContext::TContextStatus contextStatus;
+
+ // initialize data for second context's NotifyStatusChange
+ TRequestStatus requestStatus2;
+ RPacketContext::TContextStatus contextStatus2;
+
+ //send first request
+ mbmsContext.NotifyStatusChange(requestStatus, contextStatus);
+
+ //send second request
+ mbmsContext2.NotifyStatusChange(requestStatus2, contextStatus2);
+
+ //send completion for first comtext
+ iMockLTSY.CompleteL(EPacketContextNotifyStatusChange, KErrNone, data);
+ // wait for completion
+ User::WaitForRequest(mockLtsyStatus);
+
+ // wait for first context NotifyStatusChange
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ ASSERT_EQUALS(completeMisc.iStatus, contextStatus);
+
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ //send completion for second comtext
+ iMockLTSY.CompleteL(EPacketContextNotifyStatusChange, KErrNone, data2);
+ // wait for completion
+ User::WaitForRequest(mockLtsyStatus);
+
+ // wait for second context NotifyStatusChange
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+ ASSERT_EQUALS(completeMisc2.iStatus, contextStatus2);
+
+ AssertMockLtsyStatusL();
+
+ // Done !
+ CleanupStack::PopAndDestroy(4);// packetContext2, packetContext, packetService2, packetService
+ CleanupStack::PopAndDestroy(5, this); // phone2, telServer2, data, data2, this
+
+ }