diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyserver/etelpacketdata/Te_EtelPacket/TE_EtelPacketMbmsService.cpp --- 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 -#include -#include "pcktretrieve.h" -#include -#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 +#include +#include "pcktretrieve.h" +#include +#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")); + } +