--- a/telephonyserver/etelpacketdata/Te_EtelPacket/TE_EtelPacketMbmsService.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserver/etelpacketdata/Te_EtelPacket/TE_EtelPacketMbmsService.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,474 +1,474 @@
-// 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:
-// EtelPacketMbmsService.cpp
-// This contains EtelPacket TestCase
-//
-//
-
-// Symbian OS includes
-#include <e32base.h>
-#include <etelpckt.h>
-#include "pcktretrieve.h"
-#include <pcktcs.h>
-#include "Te_EtelPacketTestStepBase.h"
-#include "testdef.h"
-#include "Te_EtelPacketMbmsService.h"
-#include "Te_etelpckt_defs.h"
-
-// constructor
-CTestMbmsService::CTestMbmsService()
-{
- // store the name of this test case
- SetTestStepName(_L("MBMS_SERVICE"));
-}
-
-// destructor
-CTestMbmsService::~CTestMbmsService()
-{
-}
-
-TVerdict CTestMbmsService::doTestStepPreambleL()
- {
- CTestStepEtelPacket::doTestStepPreambleL();
- __UHEAP_MARK;
- iTestScheduler=new (ELeave) CActiveScheduler;
- CActiveScheduler::Install(iTestScheduler);
-
- TInt ret=iPhone.Open(iTelServer,DPCKTTSY_PHONE_NAME);
- if(ret != KErrNone)
- {
- INFO_PRINTF1(_L("Failed to open phone"));
- User::Leave(ret);
- }
- ret=iPcktService.Open(iPhone);
- if(ret != KErrNone)
- {
- INFO_PRINTF1(_L("Failed to open packet service"));
- User::Leave(ret);
- }
- return TestStepResult();
- }
-TVerdict CTestMbmsService::doTestStepPostambleL()
- {
- iPcktService.Close();
- iPhone.Close();
- delete iTestScheduler;
- __UHEAP_MARKEND;
- CTestStepEtelPacket::doTestStepPostambleL();
- return TestStepResult();
- }
-enum TVerdict CTestMbmsService::doTestStepL( void )
-/**
- * Test step to check MBMS service availability functionality
- */
- {
- TestMbmsUpdateServiceL();
- TestMbmsRetrieveServiceListL();
- TestMbmsServicesEnumerationL();
- return TestStepResult();
- }
-
-void CTestMbmsService::TestMbmsUpdateServiceL()
- {
- /**
- * Add new services to be monitored to the service availability list.
- */
- RPacketService::TMbmsServiceAvailabilityV1 aMbmsService;
- CPcktMbmsMonitoredServiceList* aServiceList= CPcktMbmsMonitoredServiceList::NewL();
- CleanupStack::PushL(aServiceList);
- TRequestStatus aReqStatusMonitorList;
- TMbmsAction aMbmsAction=EAddEntries;
- //First Service
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_ONE);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_ONE);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_ONE);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_ONE;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_ONE;
- aServiceList->AddEntryL(aMbmsService);
- //Second Service
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_TWO);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_TWO);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_TWO);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_TWO;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_TWO;
- aServiceList->AddEntryL(aMbmsService);
- //Third Service
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_THREE);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_THREE);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_THREE);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_THREE;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_THREE;
- aServiceList->AddEntryL(aMbmsService);
-
- iPcktService.UpdateMbmsMonitorServiceListL(aReqStatusMonitorList, aMbmsAction, aServiceList);
- User::WaitForRequest(aReqStatusMonitorList);
- TESTL(aReqStatusMonitorList == KErrNone);
- INFO_PRINTF1(_L("Added 3 services to the Monitor list - Completed"));
-
- /**
- * Cancel UpdateMbmsMonitorServiceListL
- */
- TRequestStatus aReqStatusMonitorListCancel;
- iPcktService.UpdateMbmsMonitorServiceListL(aReqStatusMonitorListCancel, aMbmsAction, aServiceList);
- iPcktService.CancelAsyncRequest(EPacketUpdateMbmsMonitorServiceList);
- User::WaitForRequest(aReqStatusMonitorListCancel);
- CleanupStack::PopAndDestroy(aServiceList);
- TESTL(aReqStatusMonitorListCancel == KErrCancel);
- INFO_PRINTF1(_L("Cancellation of addition to the Monitor list - CANCELLED"));
-
- /**
- * Remove selected services from the service availability list.
- */
- TRequestStatus aReqStatusMonitorListRemove;
- aServiceList= CPcktMbmsMonitoredServiceList::NewL();
- CleanupStack::PushL(aServiceList);
- aMbmsAction=ERemoveEntries;
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_TWO);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_TWO);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_TWO);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_TWO;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_TWO;
- aServiceList->AddEntryL(aMbmsService);
-
- iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorListRemove, aMbmsAction, aServiceList);
- User::WaitForRequest(aReqStatusMonitorListRemove);
- CleanupStack::PopAndDestroy(aServiceList);
- TESTL(aReqStatusMonitorListRemove == KErrNone);
- INFO_PRINTF1(_L("Removed a service from the Monitor list - Completed"));
-
- /**
- * Remove an invalid, single, service entry from the service availability list
- */
- TRequestStatus aReqStatusMonitorListRemoveOneInvalid;
- aServiceList= CPcktMbmsMonitoredServiceList::NewL();
- CleanupStack::PushL(aServiceList);
- aMbmsAction=ERemoveEntries;
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_INVALID);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_INVALID);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_INVALID);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_INVALID;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_INVALID;
- aServiceList->AddEntryL(aMbmsService);
-
- iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorListRemoveOneInvalid, aMbmsAction, aServiceList);
- User::WaitForRequest(aReqStatusMonitorListRemoveOneInvalid);
- CleanupStack::PopAndDestroy(aServiceList);
- TESTL(aReqStatusMonitorListRemoveOneInvalid == KErrNotFound);
- INFO_PRINTF1(_L("Removed an invalid service entry from the Monitor list - Completed"));
-
- /**
- * Remove a list of services from the service availability list. A few of them are invalid services
- */
- aServiceList= CPcktMbmsMonitoredServiceList::NewL();
- CleanupStack::PushL(aServiceList);
- //TRequestStatus aReqStatusMonitorList;
- aMbmsAction=ERemoveEntries;
- //First Service
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_ONE);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_ONE);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_ONE);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_ONE;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_ONE;
- aServiceList->AddEntryL(aMbmsService);
- //Second Service
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_INVALID);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_INVALID);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_INVALID);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_INVALID;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_INVALID;
- aServiceList->AddEntryL(aMbmsService);
- //Third Service
- aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_THREE);
- aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_THREE);
- aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_THREE);
- aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_THREE;
- aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_THREE;
- aServiceList->AddEntryL(aMbmsService);
-
- iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorList, aMbmsAction, aServiceList);
- User::WaitForRequest(aReqStatusMonitorList);
- CleanupStack::PopAndDestroy(aServiceList);
- TESTL(aReqStatusMonitorList == KErrMbmsImpreciseServiceEntries);
- INFO_PRINTF1(_L("Removal of list of entries (2nd entry invalid) - Completed"));
-
- /**
- * Remove all services from the service availability list.
- */
- TRequestStatus aReqStatusMonitorListRemoveAll;
- aMbmsAction=ERemoveAllEntries;
- iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorListRemoveAll, aMbmsAction);
- User::WaitForRequest(aReqStatusMonitorListRemoveAll);
- TESTL(aReqStatusMonitorListRemoveAll == KErrNone);
- INFO_PRINTF1(_L("Removed all services from the Monitor list - Completed"));
- }
-
-void CTestMbmsService::TestMbmsRetrieveServiceListL()
- {
- /**
- * Receive notification on MBMS service availability
- */
- TRequestStatus reqStatusMbmsService;
- iPcktService.NotifyMbmsServiceAvailabilityChange(reqStatusMbmsService);
- User::WaitForRequest(reqStatusMbmsService);
- TESTL(reqStatusMbmsService == KErrNone);
- INFO_PRINTF1(_L("Receive notification about a change in monitor service list - Completed"));
-
- /**
- * Cancel the service availability notification
- */
- iPcktService.NotifyMbmsServiceAvailabilityChange(reqStatusMbmsService);
- iPcktService.CancelAsyncRequest(EPacketNotifyMbmsServiceAvailabilityChange);
- User::WaitForRequest(reqStatusMbmsService);
- TESTL(reqStatusMbmsService == KErrCancel);
- INFO_PRINTF1(_L("Cancellation of notification about a change in monitor service list - CANCELLED"));
-
- /**
- * Retrieve MBMS service list.
- */
- CTestRetrieveEtelPacketMonitorServices *pRetrieve = CTestRetrieveEtelPacketMonitorServices::NewLC(iPcktService,this);
- TBool startReqd = ETrue;
- // To test the 2 phase retrieval of CRetrievePcktMbmsMonitoredServices
- pRetrieve->TestRetrieve(startReqd);
- //Delete test object
- CleanupStack::PopAndDestroy();
- INFO_PRINTF1(_L("Retreive MBMS monitor list - Completed"));
-
- /**
- * Cancel retrieval of the MBMS service list
- */
- pRetrieve = CTestRetrieveEtelPacketMonitorServices::NewLC(iPcktService,this);
- pRetrieve->TestRetrieve(startReqd);
- pRetrieve->TestCancel();
- //Delete test object
- CleanupStack::PopAndDestroy(); //pRetrieve
- INFO_PRINTF1(_L("Cancel retreival of MBMS monitor list - Completed"));
- }
-
-//
-
-CTestMbmsService::CTestRetrieveEtelPacketMonitorServices* CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::NewLC(RPacketService& aService, CTestMbmsService* aTestService)
- {
- CTestRetrieveEtelPacketMonitorServices* monitorService=new(ELeave) CTestRetrieveEtelPacketMonitorServices(aService,aTestService);
- CleanupStack::PushL(monitorService);
- monitorService->ConstructL();
- return monitorService;
- }
-
-CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::CTestRetrieveEtelPacketMonitorServices(RPacketService& aService,CTestMbmsService* aTestService)
-: CActive(EPriorityNormal), iService(aService),iTestService(aTestService)
-{}
-
-void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::ConstructL()
- {
- CActiveScheduler::Add(this);
- iRetrieve=CRetrievePcktMbmsMonitoredServices::NewL(iService);
- iCanceller=new (ELeave) CTestCanceller(this);
- }
-
-CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::~CTestRetrieveEtelPacketMonitorServices()
- {
- Cancel();
- delete iRetrieve;
- delete iCanceller;
- }
-
-void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::Start()
- {
- iRetrieve->Start(iStatus);
- //Test the CompleteIfInUse case of Start API
- TRequestStatus tmpStatus;
- iRetrieve->Start(tmpStatus);
- User::WaitForRequest(tmpStatus);
- iTestService->TEST(tmpStatus.Int() == KErrInUse);
- SetActive();
- }
-
-void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::RunL()
- {
- TInt ret=iStatus.Int();
- User::LeaveIfError(ret);
- ret=CheckMonitorServicesResultsL();
- User::LeaveIfError(ret);
- ret=CheckMonitorServicesErrorResultsL();
- User::LeaveIfError(ret);
- CActiveScheduler::Stop();
- }
-
-void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::TestCancel()
- {
- Start();
- CTestCanceller* cancelMbmsService = RetrieveCancelPtr();
- cancelMbmsService->Call();
-
- CActiveScheduler::Start();
- TBool cancelled = (iStatus == KErrCancel);
-
- // Ensure that AO can be used after its previous transaction was cancelled
- Start();
- CActiveScheduler::Start();
-
- if (cancelled)
- {
- iTestService->INFO_PRINTF1(_L("Cancelled retrieval of MBMS service List"));
- iTestService->INFO_PRINTF1(_L("CRetrievePcktMbmsMonitoredServices (async & cancel (Cancelled Request)) - CANCELLED"));
- }
- else
- {
- iTestService->INFO_PRINTF1(_L("CRetrievePcktMbmsMonitoredServices (async & cancel (Request Not Cancelled))- COMPLETED"));
- }
- }
-
-CTestCanceller* CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::RetrieveCancelPtr()
- {
- return iCanceller;
- }
-
-void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::DoCancel()
- {
- iRetrieve->Cancel();
- }
-
-TInt CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::CheckMonitorServicesResultsL()
- {
- TInt ret=KErrNone;
-
- CPcktMbmsMonitoredServiceList* mbmsList =NULL;
- TInt leaveCode=KErrNone;
- TRAP(leaveCode, mbmsList=iRetrieve->RetrieveListL(););
-
- //Check that a list is returned back to the test
- iTestService->TESTL(mbmsList!=NULL);
-
-if (mbmsList)
- {
- //Check that the number of entries in the list is as expected
- iTestService->TESTL(mbmsList->Enumerate()==DPCKTTSY_MBMS_SERVICELIST_COUNT_ADD);
- // Get each entry
- RPacketService::TMbmsServiceAvailabilityV1 entry;
- for (TInt index=0; index < DPCKTTSY_MBMS_SERVICELIST_COUNT_ADD; index++)
- {
- TRAPD(ret,entry=mbmsList->GetEntryL(index));
- if (ret != KErrNone)
- break;
- switch (index)
- {
- case 0:
- iTestService->TESTL(entry.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_ONE);
- iTestService->TESTL(entry.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_ONE);
- iTestService->TESTL(entry.iMbmsAvailabilityStatus == DPCKTTSY_MBMS_AVAILABILITYSTATUS_ONE);
- iTestService->TESTL(entry.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_ONE);
- iTestService->TESTL(entry.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_ONE);
- iTestService->TESTL(entry.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_ONE);
- break;
-
- case 1:
- iTestService->TESTL(entry.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_TWO);
- iTestService->TESTL(entry.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_TWO);
- iTestService->TESTL(entry.iMbmsAvailabilityStatus == DPCKTTSY_MBMS_AVAILABILITYSTATUS_TWO);
- iTestService->TESTL(entry.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_TWO);
- iTestService->TESTL(entry.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_TWO);
- iTestService->TESTL(entry.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_TWO);
- break;
-
- case 2:
- default:
- iTestService->TESTL(entry.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_THREE);
- iTestService->TESTL(entry.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_THREE);
- iTestService->TESTL(entry.iMbmsAvailabilityStatus == DPCKTTSY_MBMS_AVAILABILITYSTATUS_THREE);
- iTestService->TESTL(entry.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_THREE);
- iTestService->TESTL(entry.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_THREE);
- iTestService->TESTL(entry.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_THREE);
- break;
- }
- }
- delete mbmsList;
- }
-return ret;
-}
-
-TInt CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::CheckMonitorServicesErrorResultsL()
- {
- TInt ret=KErrGeneral;
-
- CPcktMbmsMonitoredServiceList* mbmsList =NULL;
- TInt leaveCode=KErrNone;
- CRetrievePcktMbmsMonitoredServices* pRetrieveMbmsMonitorList = CRetrievePcktMbmsMonitoredServices::NewL(iService);
- CleanupStack::PushL(pRetrieveMbmsMonitorList);
- TRAP(leaveCode, mbmsList=iRetrieve->RetrieveListL(););
- CleanupStack::PopAndDestroy();
-
- //Check that a list is returned back to the test
- if((leaveCode == KErrNotFound) && (mbmsList==NULL))
- {
- ret = KErrNone;
- }
-
- return ret;
- }
-
-
-void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::TestRetrieve(TBool aStartReqd)
- {
- if(aStartReqd)
- {
- Start();
- }
- CActiveScheduler::Start();
- }
-void CTestMbmsService::TestMbmsServicesEnumerationL()
- {
- /**
- * Get the current and max number of active services.
- */
- TRequestStatus activeServicesStatus;
- TInt currrentActiveServices, maxActiveServices;
- iPcktService.EnumerateMbmsActiveServiceList(activeServicesStatus, currrentActiveServices, maxActiveServices);
- User::WaitForRequest(activeServicesStatus);
- TESTL(currrentActiveServices == DPCKTTSY_MBMS_ACTIVESERVICE_NUMBER_OF_CONTEXTS);
- TESTL(maxActiveServices == DPCKTTSY_MBMS_ACTIVESERVICE_MAX_NUMBER_OF_CONTEXTS);
- TESTL(activeServicesStatus == KErrNone);
- INFO_PRINTF1(_L("Enumerate MBMS active services - Completed"));
-
- /**
- * Test to cancel EnumerateMbmsActiveServiceList API
- */
- TRequestStatus activeServicesStatusCancel;
- iPcktService.EnumerateMbmsActiveServiceList(activeServicesStatusCancel, currrentActiveServices, maxActiveServices);
- iPcktService.CancelAsyncRequest(EPacketEnumerateMbmsActiveServiceList); //EPacketEnumerateMbmsActiveServiceList
- User::WaitForRequest(activeServicesStatusCancel);
- TESTL(activeServicesStatusCancel == KErrCancel);
- INFO_PRINTF1(_L("Cancel Enumerate MBMS active services - CANCELLED"));
-
- /**
- * Get the current and max number of monitor services.
- */
- TRequestStatus monitorServicesStatus;
- iPcktService.EnumerateMbmsMonitorServiceList(monitorServicesStatus, currrentActiveServices, maxActiveServices);
- User::WaitForRequest(monitorServicesStatus);
- TESTL(currrentActiveServices == DPCKTTSY_MBMS_MONITORSERVICE_NUMBER_OF_CONTEXTS);
- TESTL(maxActiveServices == DPCKTTSY_MBMS_MONITORSERVICE_MAX_NUMBER_OF_CONTEXTS);
- TESTL(monitorServicesStatus == KErrNone);
- INFO_PRINTF1(_L("Enumerate MBMS monitor services - Completed"));
-
- /**
- * Test to cancel EnumerateMbmsMonitorServiceList API
- */
- TRequestStatus monitorServicesStatusCancel;
- iPcktService.EnumerateMbmsMonitorServiceList(monitorServicesStatusCancel, currrentActiveServices, maxActiveServices);
- iPcktService.CancelAsyncRequest(EPacketEnumerateMbmsMonitorServiceList);
- User::WaitForRequest(monitorServicesStatusCancel);
- TESTL(monitorServicesStatusCancel == KErrCancel);
- INFO_PRINTF1(_L("Cancel Enumerate MBMS monitor services - CANCELLED"));
- }
-
+// 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:
+// EtelPacketMbmsService.cpp
+// This contains EtelPacket TestCase
+//
+//
+
+// Symbian OS includes
+#include <e32base.h>
+#include <etelpckt.h>
+#include "pcktretrieve.h"
+#include <pcktcs.h>
+#include "Te_EtelPacketTestStepBase.h"
+#include "testdef.h"
+#include "Te_EtelPacketMbmsService.h"
+#include "Te_etelpckt_defs.h"
+
+// constructor
+CTestMbmsService::CTestMbmsService()
+{
+ // store the name of this test case
+ SetTestStepName(_L("MBMS_SERVICE"));
+}
+
+// destructor
+CTestMbmsService::~CTestMbmsService()
+{
+}
+
+TVerdict CTestMbmsService::doTestStepPreambleL()
+ {
+ CTestStepEtelPacket::doTestStepPreambleL();
+ __UHEAP_MARK;
+ iTestScheduler=new (ELeave) CActiveScheduler;
+ CActiveScheduler::Install(iTestScheduler);
+
+ TInt ret=iPhone.Open(iTelServer,DPCKTTSY_PHONE_NAME);
+ if(ret != KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to open phone"));
+ User::Leave(ret);
+ }
+ ret=iPcktService.Open(iPhone);
+ if(ret != KErrNone)
+ {
+ INFO_PRINTF1(_L("Failed to open packet service"));
+ User::Leave(ret);
+ }
+ return TestStepResult();
+ }
+TVerdict CTestMbmsService::doTestStepPostambleL()
+ {
+ iPcktService.Close();
+ iPhone.Close();
+ delete iTestScheduler;
+ __UHEAP_MARKEND;
+ CTestStepEtelPacket::doTestStepPostambleL();
+ return TestStepResult();
+ }
+enum TVerdict CTestMbmsService::doTestStepL( void )
+/**
+ * Test step to check MBMS service availability functionality
+ */
+ {
+ TestMbmsUpdateServiceL();
+ TestMbmsRetrieveServiceListL();
+ TestMbmsServicesEnumerationL();
+ return TestStepResult();
+ }
+
+void CTestMbmsService::TestMbmsUpdateServiceL()
+ {
+ /**
+ * Add new services to be monitored to the service availability list.
+ */
+ RPacketService::TMbmsServiceAvailabilityV1 aMbmsService;
+ CPcktMbmsMonitoredServiceList* aServiceList= CPcktMbmsMonitoredServiceList::NewL();
+ CleanupStack::PushL(aServiceList);
+ TRequestStatus aReqStatusMonitorList;
+ TMbmsAction aMbmsAction=EAddEntries;
+ //First Service
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_ONE);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_ONE);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_ONE);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_ONE;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_ONE;
+ aServiceList->AddEntryL(aMbmsService);
+ //Second Service
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_TWO);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_TWO);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_TWO);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_TWO;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_TWO;
+ aServiceList->AddEntryL(aMbmsService);
+ //Third Service
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_THREE);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_THREE);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_THREE);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_THREE;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_THREE;
+ aServiceList->AddEntryL(aMbmsService);
+
+ iPcktService.UpdateMbmsMonitorServiceListL(aReqStatusMonitorList, aMbmsAction, aServiceList);
+ User::WaitForRequest(aReqStatusMonitorList);
+ TESTL(aReqStatusMonitorList == KErrNone);
+ INFO_PRINTF1(_L("Added 3 services to the Monitor list - Completed"));
+
+ /**
+ * Cancel UpdateMbmsMonitorServiceListL
+ */
+ TRequestStatus aReqStatusMonitorListCancel;
+ iPcktService.UpdateMbmsMonitorServiceListL(aReqStatusMonitorListCancel, aMbmsAction, aServiceList);
+ iPcktService.CancelAsyncRequest(EPacketUpdateMbmsMonitorServiceList);
+ User::WaitForRequest(aReqStatusMonitorListCancel);
+ CleanupStack::PopAndDestroy(aServiceList);
+ TESTL(aReqStatusMonitorListCancel == KErrCancel);
+ INFO_PRINTF1(_L("Cancellation of addition to the Monitor list - CANCELLED"));
+
+ /**
+ * Remove selected services from the service availability list.
+ */
+ TRequestStatus aReqStatusMonitorListRemove;
+ aServiceList= CPcktMbmsMonitoredServiceList::NewL();
+ CleanupStack::PushL(aServiceList);
+ aMbmsAction=ERemoveEntries;
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_TWO);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_TWO);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_TWO);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_TWO;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_TWO;
+ aServiceList->AddEntryL(aMbmsService);
+
+ iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorListRemove, aMbmsAction, aServiceList);
+ User::WaitForRequest(aReqStatusMonitorListRemove);
+ CleanupStack::PopAndDestroy(aServiceList);
+ TESTL(aReqStatusMonitorListRemove == KErrNone);
+ INFO_PRINTF1(_L("Removed a service from the Monitor list - Completed"));
+
+ /**
+ * Remove an invalid, single, service entry from the service availability list
+ */
+ TRequestStatus aReqStatusMonitorListRemoveOneInvalid;
+ aServiceList= CPcktMbmsMonitoredServiceList::NewL();
+ CleanupStack::PushL(aServiceList);
+ aMbmsAction=ERemoveEntries;
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_INVALID);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_INVALID);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_INVALID);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_INVALID;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_INVALID;
+ aServiceList->AddEntryL(aMbmsService);
+
+ iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorListRemoveOneInvalid, aMbmsAction, aServiceList);
+ User::WaitForRequest(aReqStatusMonitorListRemoveOneInvalid);
+ CleanupStack::PopAndDestroy(aServiceList);
+ TESTL(aReqStatusMonitorListRemoveOneInvalid == KErrNotFound);
+ INFO_PRINTF1(_L("Removed an invalid service entry from the Monitor list - Completed"));
+
+ /**
+ * Remove a list of services from the service availability list. A few of them are invalid services
+ */
+ aServiceList= CPcktMbmsMonitoredServiceList::NewL();
+ CleanupStack::PushL(aServiceList);
+ //TRequestStatus aReqStatusMonitorList;
+ aMbmsAction=ERemoveEntries;
+ //First Service
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_ONE);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_ONE);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_ONE);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_ONE;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_ONE;
+ aServiceList->AddEntryL(aMbmsService);
+ //Second Service
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_INVALID);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_INVALID);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_INVALID);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_INVALID;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_INVALID;
+ aServiceList->AddEntryL(aMbmsService);
+ //Third Service
+ aMbmsService.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_THREE);
+ aMbmsService.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_THREE);
+ aMbmsService.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_THREE);
+ aMbmsService.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_THREE;
+ aMbmsService.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_THREE;
+ aServiceList->AddEntryL(aMbmsService);
+
+ iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorList, aMbmsAction, aServiceList);
+ User::WaitForRequest(aReqStatusMonitorList);
+ CleanupStack::PopAndDestroy(aServiceList);
+ TESTL(aReqStatusMonitorList == KErrMbmsImpreciseServiceEntries);
+ INFO_PRINTF1(_L("Removal of list of entries (2nd entry invalid) - Completed"));
+
+ /**
+ * Remove all services from the service availability list.
+ */
+ TRequestStatus aReqStatusMonitorListRemoveAll;
+ aMbmsAction=ERemoveAllEntries;
+ iPcktService.UpdateMbmsMonitorServiceListL (aReqStatusMonitorListRemoveAll, aMbmsAction);
+ User::WaitForRequest(aReqStatusMonitorListRemoveAll);
+ TESTL(aReqStatusMonitorListRemoveAll == KErrNone);
+ INFO_PRINTF1(_L("Removed all services from the Monitor list - Completed"));
+ }
+
+void CTestMbmsService::TestMbmsRetrieveServiceListL()
+ {
+ /**
+ * Receive notification on MBMS service availability
+ */
+ TRequestStatus reqStatusMbmsService;
+ iPcktService.NotifyMbmsServiceAvailabilityChange(reqStatusMbmsService);
+ User::WaitForRequest(reqStatusMbmsService);
+ TESTL(reqStatusMbmsService == KErrNone);
+ INFO_PRINTF1(_L("Receive notification about a change in monitor service list - Completed"));
+
+ /**
+ * Cancel the service availability notification
+ */
+ iPcktService.NotifyMbmsServiceAvailabilityChange(reqStatusMbmsService);
+ iPcktService.CancelAsyncRequest(EPacketNotifyMbmsServiceAvailabilityChange);
+ User::WaitForRequest(reqStatusMbmsService);
+ TESTL(reqStatusMbmsService == KErrCancel);
+ INFO_PRINTF1(_L("Cancellation of notification about a change in monitor service list - CANCELLED"));
+
+ /**
+ * Retrieve MBMS service list.
+ */
+ CTestRetrieveEtelPacketMonitorServices *pRetrieve = CTestRetrieveEtelPacketMonitorServices::NewLC(iPcktService,this);
+ TBool startReqd = ETrue;
+ // To test the 2 phase retrieval of CRetrievePcktMbmsMonitoredServices
+ pRetrieve->TestRetrieve(startReqd);
+ //Delete test object
+ CleanupStack::PopAndDestroy();
+ INFO_PRINTF1(_L("Retreive MBMS monitor list - Completed"));
+
+ /**
+ * Cancel retrieval of the MBMS service list
+ */
+ pRetrieve = CTestRetrieveEtelPacketMonitorServices::NewLC(iPcktService,this);
+ pRetrieve->TestRetrieve(startReqd);
+ pRetrieve->TestCancel();
+ //Delete test object
+ CleanupStack::PopAndDestroy(); //pRetrieve
+ INFO_PRINTF1(_L("Cancel retreival of MBMS monitor list - Completed"));
+ }
+
+//
+
+CTestMbmsService::CTestRetrieveEtelPacketMonitorServices* CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::NewLC(RPacketService& aService, CTestMbmsService* aTestService)
+ {
+ CTestRetrieveEtelPacketMonitorServices* monitorService=new(ELeave) CTestRetrieveEtelPacketMonitorServices(aService,aTestService);
+ CleanupStack::PushL(monitorService);
+ monitorService->ConstructL();
+ return monitorService;
+ }
+
+CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::CTestRetrieveEtelPacketMonitorServices(RPacketService& aService,CTestMbmsService* aTestService)
+: CActive(EPriorityNormal), iService(aService),iTestService(aTestService)
+{}
+
+void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::ConstructL()
+ {
+ CActiveScheduler::Add(this);
+ iRetrieve=CRetrievePcktMbmsMonitoredServices::NewL(iService);
+ iCanceller=new (ELeave) CTestCanceller(this);
+ }
+
+CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::~CTestRetrieveEtelPacketMonitorServices()
+ {
+ Cancel();
+ delete iRetrieve;
+ delete iCanceller;
+ }
+
+void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::Start()
+ {
+ iRetrieve->Start(iStatus);
+ //Test the CompleteIfInUse case of Start API
+ TRequestStatus tmpStatus;
+ iRetrieve->Start(tmpStatus);
+ User::WaitForRequest(tmpStatus);
+ iTestService->TEST(tmpStatus.Int() == KErrInUse);
+ SetActive();
+ }
+
+void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::RunL()
+ {
+ TInt ret=iStatus.Int();
+ User::LeaveIfError(ret);
+ ret=CheckMonitorServicesResultsL();
+ User::LeaveIfError(ret);
+ ret=CheckMonitorServicesErrorResultsL();
+ User::LeaveIfError(ret);
+ CActiveScheduler::Stop();
+ }
+
+void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::TestCancel()
+ {
+ Start();
+ CTestCanceller* cancelMbmsService = RetrieveCancelPtr();
+ cancelMbmsService->Call();
+
+ CActiveScheduler::Start();
+ TBool cancelled = (iStatus == KErrCancel);
+
+ // Ensure that AO can be used after its previous transaction was cancelled
+ Start();
+ CActiveScheduler::Start();
+
+ if (cancelled)
+ {
+ iTestService->INFO_PRINTF1(_L("Cancelled retrieval of MBMS service List"));
+ iTestService->INFO_PRINTF1(_L("CRetrievePcktMbmsMonitoredServices (async & cancel (Cancelled Request)) - CANCELLED"));
+ }
+ else
+ {
+ iTestService->INFO_PRINTF1(_L("CRetrievePcktMbmsMonitoredServices (async & cancel (Request Not Cancelled))- COMPLETED"));
+ }
+ }
+
+CTestCanceller* CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::RetrieveCancelPtr()
+ {
+ return iCanceller;
+ }
+
+void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::DoCancel()
+ {
+ iRetrieve->Cancel();
+ }
+
+TInt CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::CheckMonitorServicesResultsL()
+ {
+ TInt ret=KErrNone;
+
+ CPcktMbmsMonitoredServiceList* mbmsList =NULL;
+ TInt leaveCode=KErrNone;
+ TRAP(leaveCode, mbmsList=iRetrieve->RetrieveListL(););
+
+ //Check that a list is returned back to the test
+ iTestService->TESTL(mbmsList!=NULL);
+
+if (mbmsList)
+ {
+ //Check that the number of entries in the list is as expected
+ iTestService->TESTL(mbmsList->Enumerate()==DPCKTTSY_MBMS_SERVICELIST_COUNT_ADD);
+ // Get each entry
+ RPacketService::TMbmsServiceAvailabilityV1 entry;
+ for (TInt index=0; index < DPCKTTSY_MBMS_SERVICELIST_COUNT_ADD; index++)
+ {
+ TRAPD(ret,entry=mbmsList->GetEntryL(index));
+ if (ret != KErrNone)
+ break;
+ switch (index)
+ {
+ case 0:
+ iTestService->TESTL(entry.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_ONE);
+ iTestService->TESTL(entry.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_ONE);
+ iTestService->TESTL(entry.iMbmsAvailabilityStatus == DPCKTTSY_MBMS_AVAILABILITYSTATUS_ONE);
+ iTestService->TESTL(entry.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_ONE);
+ iTestService->TESTL(entry.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_ONE);
+ iTestService->TESTL(entry.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_ONE);
+ break;
+
+ case 1:
+ iTestService->TESTL(entry.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_TWO);
+ iTestService->TESTL(entry.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_TWO);
+ iTestService->TESTL(entry.iMbmsAvailabilityStatus == DPCKTTSY_MBMS_AVAILABILITYSTATUS_TWO);
+ iTestService->TESTL(entry.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_TWO);
+ iTestService->TESTL(entry.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_TWO);
+ iTestService->TESTL(entry.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_TWO);
+ break;
+
+ case 2:
+ default:
+ iTestService->TESTL(entry.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_THREE);
+ iTestService->TESTL(entry.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_THREE);
+ iTestService->TESTL(entry.iMbmsAvailabilityStatus == DPCKTTSY_MBMS_AVAILABILITYSTATUS_THREE);
+ iTestService->TESTL(entry.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_THREE);
+ iTestService->TESTL(entry.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_THREE);
+ iTestService->TESTL(entry.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_THREE);
+ break;
+ }
+ }
+ delete mbmsList;
+ }
+return ret;
+}
+
+TInt CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::CheckMonitorServicesErrorResultsL()
+ {
+ TInt ret=KErrGeneral;
+
+ CPcktMbmsMonitoredServiceList* mbmsList =NULL;
+ TInt leaveCode=KErrNone;
+ CRetrievePcktMbmsMonitoredServices* pRetrieveMbmsMonitorList = CRetrievePcktMbmsMonitoredServices::NewL(iService);
+ CleanupStack::PushL(pRetrieveMbmsMonitorList);
+ TRAP(leaveCode, mbmsList=iRetrieve->RetrieveListL(););
+ CleanupStack::PopAndDestroy();
+
+ //Check that a list is returned back to the test
+ if((leaveCode == KErrNotFound) && (mbmsList==NULL))
+ {
+ ret = KErrNone;
+ }
+
+ return ret;
+ }
+
+
+void CTestMbmsService::CTestRetrieveEtelPacketMonitorServices::TestRetrieve(TBool aStartReqd)
+ {
+ if(aStartReqd)
+ {
+ Start();
+ }
+ CActiveScheduler::Start();
+ }
+void CTestMbmsService::TestMbmsServicesEnumerationL()
+ {
+ /**
+ * Get the current and max number of active services.
+ */
+ TRequestStatus activeServicesStatus;
+ TInt currrentActiveServices, maxActiveServices;
+ iPcktService.EnumerateMbmsActiveServiceList(activeServicesStatus, currrentActiveServices, maxActiveServices);
+ User::WaitForRequest(activeServicesStatus);
+ TESTL(currrentActiveServices == DPCKTTSY_MBMS_ACTIVESERVICE_NUMBER_OF_CONTEXTS);
+ TESTL(maxActiveServices == DPCKTTSY_MBMS_ACTIVESERVICE_MAX_NUMBER_OF_CONTEXTS);
+ TESTL(activeServicesStatus == KErrNone);
+ INFO_PRINTF1(_L("Enumerate MBMS active services - Completed"));
+
+ /**
+ * Test to cancel EnumerateMbmsActiveServiceList API
+ */
+ TRequestStatus activeServicesStatusCancel;
+ iPcktService.EnumerateMbmsActiveServiceList(activeServicesStatusCancel, currrentActiveServices, maxActiveServices);
+ iPcktService.CancelAsyncRequest(EPacketEnumerateMbmsActiveServiceList); //EPacketEnumerateMbmsActiveServiceList
+ User::WaitForRequest(activeServicesStatusCancel);
+ TESTL(activeServicesStatusCancel == KErrCancel);
+ INFO_PRINTF1(_L("Cancel Enumerate MBMS active services - CANCELLED"));
+
+ /**
+ * Get the current and max number of monitor services.
+ */
+ TRequestStatus monitorServicesStatus;
+ iPcktService.EnumerateMbmsMonitorServiceList(monitorServicesStatus, currrentActiveServices, maxActiveServices);
+ User::WaitForRequest(monitorServicesStatus);
+ TESTL(currrentActiveServices == DPCKTTSY_MBMS_MONITORSERVICE_NUMBER_OF_CONTEXTS);
+ TESTL(maxActiveServices == DPCKTTSY_MBMS_MONITORSERVICE_MAX_NUMBER_OF_CONTEXTS);
+ TESTL(monitorServicesStatus == KErrNone);
+ INFO_PRINTF1(_L("Enumerate MBMS monitor services - Completed"));
+
+ /**
+ * Test to cancel EnumerateMbmsMonitorServiceList API
+ */
+ TRequestStatus monitorServicesStatusCancel;
+ iPcktService.EnumerateMbmsMonitorServiceList(monitorServicesStatusCancel, currrentActiveServices, maxActiveServices);
+ iPcktService.CancelAsyncRequest(EPacketEnumerateMbmsMonitorServiceList);
+ User::WaitForRequest(monitorServicesStatusCancel);
+ TESTL(monitorServicesStatusCancel == KErrCancel);
+ INFO_PRINTF1(_L("Cancel Enumerate MBMS monitor services - CANCELLED"));
+ }
+