diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyserver/etelpacketdata/Te_EtelPacket/TE_EtelPacketMbmsContext.cpp --- a/telephonyserver/etelpacketdata/Te_EtelPacket/TE_EtelPacketMbmsContext.cpp Mon May 03 13:37:20 2010 +0300 +++ b/telephonyserver/etelpacketdata/Te_EtelPacket/TE_EtelPacketMbmsContext.cpp Thu May 06 15:10:38 2010 +0100 @@ -1,455 +1,455 @@ -// 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: -// EtelPacketMbmsContext.cpp -// This contains EtelPacket TestCase -// -// - -// Symbian OS includes -#include -#include -#include "pcktretrieve.h" -#include -#include "Te_EtelPacketTestStepBase.h" -#include "testdef.h" -#include "Te_EtelPacketMbmsContext.h" -#include "Te_etelpckt_defs.h" - -// constructor -CTestMbmsContext::CTestMbmsContext() - { - // store the name of this test case - SetTestStepName(_L("MBMS_CONTEXT")); - } - -// destructor -CTestMbmsContext::~CTestMbmsContext() -{ -} - -TVerdict CTestMbmsContext::doTestStepPreambleL() - { - CTestStepEtelPacket::doTestStepPreambleL(); - 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); - } - iTestScheduler=new (ELeave) CActiveScheduler; - CActiveScheduler::Install(iTestScheduler); - return TestStepResult(); - } - -TVerdict CTestMbmsContext::doTestStepPostambleL() - { - delete iTestScheduler; - iPcktService.Close(); - iPhone.Close(); - CTestStepEtelPacket::doTestStepPostambleL(); - return TestStepResult(); - } - -enum TVerdict CTestMbmsContext::doTestStepL( void ) -/** - * Test step to check MBMS service availability functionality - */ - { - TestOpenMbmsContextL(); - TestInitialiseMbmsContextL(); - TestMbmsConfigurationL(); - TestActivateMbmsContextL(); - TestMbmsServiceStatusL(); - TestMbmsUpdateSessionL(); - TestMbmsGetSessionListL(); - TestDeactivateMbmsContextL(); - return TestStepResult(); - } - -void CTestMbmsContext::TestOpenMbmsContextL() - { - /* - * Verify whether a MBMS context is opened successfully. - */ - TInt retMbmsContext; - TName contextName; - - retMbmsContext = iMbmsContext.OpenNewContext(iPcktService, contextName); - if(retMbmsContext != KErrNone) - { - INFO_PRINTF1(_L("Failed to open packet context")); - User::Leave(retMbmsContext); - } - INFO_PRINTF1(_L("Open a MBMS context - Completed")); - } - -void CTestMbmsContext::TestMbmsConfigurationL() - { - /** - * Set the MBMS context configuration successfully - */ - TRequestStatus mbmsConfigStatus; - RPacketMbmsContext::TContextConfigMbmsV1 mbmsContextConfig; - mbmsContextConfig.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_ONE); - mbmsContextConfig.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_ONE); - mbmsContextConfig.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_ONE); - mbmsContextConfig.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_ONE; - mbmsContextConfig.iMbmsServicePriority = DPCKTTSY_MBMS_SERVICEPRIORITY_ONE; - mbmsContextConfig.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_ONE; - mbmsContextConfig.iMbmsSessionFlag = DPCKTTSY_MBMS_SESSION_FLAG_TRUE; - RPacketMbmsContext::TContextConfigMbmsV1Pckg iMbmsContextConfigPckg(mbmsContextConfig); - - iMbmsContext.SetConfig(mbmsConfigStatus, iMbmsContextConfigPckg); - User::WaitForRequest(mbmsConfigStatus); - TESTL(mbmsConfigStatus == KErrNone); - INFO_PRINTF1(_L("MBMS context set configurations - Completed")); - - /** - * Set the MBMS context configuration successfully - */ - TRequestStatus mbmsConfigStatusCancel; - iMbmsContext.SetConfig(mbmsConfigStatusCancel, iMbmsContextConfigPckg); - iMbmsContext.CancelAsyncRequest(EPacketContextSetConfig); - User::WaitForRequest(mbmsConfigStatusCancel); - TESTL(mbmsConfigStatusCancel == KErrCancel); - INFO_PRINTF1(_L("Cancel MBMS context set configurations - CANCELLED")); - - /** - * Set MBMS context configuration with invalid inputs - */ - mbmsContextConfig.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_INVALID); - mbmsContextConfig.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_INVALID); - mbmsContextConfig.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_INVALID); - mbmsContextConfig.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_INVALID; - mbmsContextConfig.iMbmsSessionFlag = DPCKTTSY_MBMS_SESSION_FLAG_TRUE; - mbmsContextConfig.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_INVALID; - - iMbmsContext.SetConfig(mbmsConfigStatus, iMbmsContextConfigPckg); - User::WaitForRequest(mbmsConfigStatus); - TESTL(mbmsConfigStatus == KErrCorrupt); - INFO_PRINTF1(_L("MBMS set context invalid configurations - Completed")); - - /** - * Get MBMS context configuration. - */ - RPacketMbmsContext::TContextConfigMbmsV1 mbmsGetContextConfig; - RPacketMbmsContext::TContextConfigMbmsV1Pckg mbmsGetContextConfigPckg(mbmsGetContextConfig); - iMbmsContext.GetConfig(mbmsConfigStatus, mbmsGetContextConfigPckg); - User::WaitForRequest(mbmsConfigStatus); - mbmsGetContextConfig = mbmsGetContextConfigPckg(); - TESTL(mbmsGetContextConfig.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_ONE); - TESTL(mbmsGetContextConfig.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_ONE); - TESTL(mbmsGetContextConfig.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_ONE); - TESTL(mbmsGetContextConfig.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_ONE); - TESTL(mbmsGetContextConfig.iMbmsServicePriority == DPCKTTSY_MBMS_SERVICEPRIORITY_ONE); - TESTL(mbmsGetContextConfig.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_ONE); - TESTL(mbmsGetContextConfig.iMbmsSessionFlag = DPCKTTSY_MBMS_SESSION_FLAG_TRUE); - TESTL(mbmsConfigStatus == KErrNone); - INFO_PRINTF1(_L("MBMS get context configurations - Completed")); - } - -void CTestMbmsContext::TestActivateMbmsContextL() - { - /** - * Activate MBMS context. - */ - TRequestStatus activateStatus; - iMbmsContext.Activate(activateStatus); - User::WaitForRequest(activateStatus); - TESTL(activateStatus == KErrNone); - INFO_PRINTF1(_L("MBMS context activation - Completed")); - } - -void CTestMbmsContext::TestMbmsServiceStatusL() - { - /** - * Verify the status of the service being received - */ - TRequestStatus activateStatus; - RPacketMbmsContext::TContextStatus contextStatus; - iMbmsContext.NotifyStatusChange(activateStatus,contextStatus); - User::WaitForRequest(activateStatus); - TESTL(contextStatus == DPCKTTSY_CONTEXT_STATUS2); - TESTL(activateStatus == KErrNone); - INFO_PRINTF1(_L("MBMS context status notification - Completed")); - - /** - * Receive notification on status change of a MBMS service - */ - TInt retStatus = iMbmsContext.GetStatus(contextStatus); - TESTL(contextStatus == DPCKTTSY_CONTEXT_STATUS1); - TESTL(retStatus == KErrNone); - INFO_PRINTF1(_L("Get MBMS context status - Completed")); - - /** - * Cancel MBMS status notification on status change. - */ - iMbmsContext.NotifyStatusChange(activateStatus,contextStatus); - iMbmsContext.CancelAsyncRequest(EPacketContextNotifyStatusChange); - User::WaitForRequest(activateStatus); - TESTL( activateStatus == KErrCancel); - INFO_PRINTF1(_L("MBMS context status notification cancellation - CANCELLED")); - } - -void CTestMbmsContext::TestMbmsUpdateSessionL() - { - /** - * Add MBMS session - */ - TRequestStatus sessionStatus; - TUint sessionId = DPCKTTSY_MBMS_SESSIONID_ONE; - iMbmsContext.UpdateMbmsSessionList(sessionStatus, EAddEntries, sessionId); - User::WaitForRequest(sessionStatus); - TESTL(sessionStatus == KErrNone); - INFO_PRINTF1(_L("Add MBMS session - Completed")); - - /** - * Test cancelling the UpdateMbmsSessionList API - */ - TRequestStatus sessionStatusCancel; - sessionId = DPCKTTSY_MBMS_SESSIONID_ONE; - iMbmsContext.UpdateMbmsSessionList(sessionStatusCancel, EAddEntries, sessionId); - iMbmsContext.CancelAsyncRequest(EPacketContextUpdateMbmsSessionList); - User::WaitForRequest(sessionStatusCancel); - TESTL(sessionStatusCancel == KErrCancel); - INFO_PRINTF1(_L("Cancel UpdateMbmsSessionList - CANCELLED")); - - /** - * Remove MBMS session - */ - iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveEntries, sessionId); - User::WaitForRequest(sessionStatus); - TESTL(sessionStatus == KErrNone); - INFO_PRINTF1(_L("Remove MBMS session - Completed")); - - /** - * Remove an invalid MBMS session - */ - sessionId = DPCKTTSY_MBMS_SESSIONID_INVALID; - iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveEntries, sessionId); - User::WaitForRequest(sessionStatus); - TESTL(sessionStatus == KErrNotFound); - INFO_PRINTF1(_L("Remove invalid MBMS session - Completed")); - - /** - * Remove all MBMS sessions - */ - iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveAllEntries); - User::WaitForRequest(sessionStatus); - TESTL(sessionStatus == KErrNone); - INFO_PRINTF1(_L("Remove all MBMS sessions - Completed")); - - /** - * Remove all MBMS sessions completes with error. - */ - sessionId = DPCKTTSY_MBMS_SESSIONID_ONE; - iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveAllEntries, sessionId); - User::WaitForRequest(sessionStatus); - TESTL(sessionStatus == KErrMbmsImpreciseServiceEntries); - INFO_PRINTF1(_L("Failure scenario - Remove all MBMS sessions - Completed")); - } - -void CTestMbmsContext::TestDeactivateMbmsContextL() - { - /** - * Deactivate a MBMS context. - */ - TRequestStatus mbmsDeactivateStatus; - iMbmsContext.Deactivate(mbmsDeactivateStatus); - User::WaitForRequest(mbmsDeactivateStatus); - TESTL(mbmsDeactivateStatus == KErrNone); - INFO_PRINTF1(_L("MBMS context deactivation - Completed")); - - /** - * Delete the context - */ - TRequestStatus mbmsDeleteStatus; - iMbmsContext.Delete(mbmsDeleteStatus); - User::WaitForRequest(mbmsDeleteStatus); - TESTL(mbmsDeleteStatus == KErrNone); - INFO_PRINTF1(_L("MBMS context deleted - Completed")); - - /** - * Close the context - */ - iMbmsContext.Close(); - } - -void CTestMbmsContext::TestInitialiseMbmsContextL() - { - /** - * Initialise MBMS context. - */ - RPacketMbmsContext::TDataChannelV2 dataChannel; - RPacketMbmsContext::TDataChannelV2Pckg dataChannelPckg(dataChannel); - TRequestStatus mbmsInitContextStatus; - iMbmsContext.InitialiseContext(mbmsInitContextStatus, dataChannelPckg); - User::WaitForRequest(mbmsInitContextStatus); - TESTL(dataChannel.iCsy == DPCKTTSY_CSY_ASYNC); - TESTL(dataChannel.iPort == DPCKTTSY_PORT_ASYNC); - TESTL(dataChannel.iChannelId == DPCKTTSY_CHANNEL_ID); - TESTL(mbmsInitContextStatus == KErrNone); - INFO_PRINTF1(_L("MBMS Initialise context - Completed")); - } - -void CTestMbmsContext::TestMbmsGetSessionListL() - { - __UHEAP_MARK; - TInt ret(KErrNone); - TRequestStatus reqStatus; - TUint sessionId1=1000, sessionId2=2000, sessionId3=3000; - - /** - * Test serialization - */ - RPacketMbmsContext::CMbmsSession* mbmsSession = RPacketMbmsContext::CMbmsSession::NewL(); - CleanupStack::PushL(mbmsSession); - TESTL(mbmsSession->ExtensionId() == KETelExtPcktV1); - mbmsSession->iSessionIdList.Append(sessionId1); - mbmsSession->iSessionIdList.Append(sessionId2); - mbmsSession->iSessionIdList.Append(sessionId3); - HBufC8* buff = HBufC8::NewL(15); - mbmsSession->ExternalizeL(buff); - CleanupStack::PushL(buff); - RPacketMbmsContext::CMbmsSession* mbmsSessionCopy = RPacketMbmsContext::CMbmsSession::NewL(); - CleanupStack::PushL(mbmsSessionCopy); - - TBuf8<256> buffBig; - buffBig=*buff; - - /** - * Memory overflow test for Internalize function - */ - TInt err=KErrNone; - TInt len=0; - do - { - buffBig.SetLength(len); - TRAP(err, mbmsSessionCopy->InternalizeL(buffBig)); - if(err == KErrOverflow) - { - len++; - } - else - { - TESTL(err == KErrNone); - break; - } - } - while(len < 100); //just in case, set a limit to finish the loop. - TESTL(len<100); - TRAP(ret,mbmsSessionCopy->InternalizeL(buffBig)); - TEST(ret==KErrNone); - TESTL(mbmsSessionCopy->iSessionIdList.Count() == mbmsSession->iSessionIdList.Count()); - TESTL(mbmsSessionCopy->iSessionIdList[0] == mbmsSession->iSessionIdList[0]); - TESTL(mbmsSessionCopy->iSessionIdList[1] == mbmsSession->iSessionIdList[1]); - TESTL(mbmsSessionCopy->iSessionIdList[2] == mbmsSession->iSessionIdList[2]); - CleanupStack::PopAndDestroy(mbmsSessionCopy); - CleanupStack::PopAndDestroy(buff); - CleanupStack::PopAndDestroy(mbmsSession); - INFO_PRINTF1(_L("Test serialization of sessions - Completed")); - INFO_PRINTF1(_L("OOM test for Internalize API - Completed")); - - /** - * Retrieve a list of session ids of a MBMS service - */ - RPacketMbmsContext::CMbmsSession* mbmsSession1 = RPacketMbmsContext::CMbmsSession::NewL(); - CleanupStack::PushL(mbmsSession1); - CTestMbmsSession* testMbmsSession = CTestMbmsSession::NewLC(iMbmsContext,*mbmsSession1, this); - testMbmsSession->Start(); - CActiveScheduler::Start(); - TEST(testMbmsSession->iRetrieve != NULL); - if(testMbmsSession->iRetrieve ) - { - TESTL(mbmsSession1->iSessionIdList.Count() == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_COUNT); - TESTL(mbmsSession1->iSessionIdList[0] == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_ONE); - TESTL(mbmsSession1->iSessionIdList[1] == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_TWO); - TESTL(mbmsSession1->iSessionIdList[2] == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_THREE); - } - INFO_PRINTF1(_L("Retrieve a list of sessions IDs of a MBMS service - Completed")); - - /** - * Test cancellation of retrieval of sessions - */ - testMbmsSession->Start(); - testMbmsSession->iCanceller->Call(); - CActiveScheduler::Start(); - INFO_PRINTF1(_L("Cancel retrieval of MBMS sessions - Completed")); - - CleanupStack::PopAndDestroy(testMbmsSession); - CleanupStack::PopAndDestroy(mbmsSession1); - iPcktService.Close(); - iPhone.Close(); - __UHEAP_MARKEND; - } -// -CTestMbmsSession* CTestMbmsSession::NewLC(RPacketMbmsContext& aPcktMbmsContext,RPacketMbmsContext::CMbmsSession& aSessionIdList, CTestMbmsContext* aTestMbmsContext) - { - CTestMbmsSession* self = new(ELeave) CTestMbmsSession(aPcktMbmsContext, aSessionIdList, aTestMbmsContext); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CTestMbmsSession::CTestMbmsSession(RPacketMbmsContext& aPcktMbmsContext, RPacketMbmsContext::CMbmsSession& aSessionIdList, CTestMbmsContext* aTestMbmsContext) - : CActive(EPriorityHigh), iSessionIdList(aSessionIdList), iPcktMbmsContext(aPcktMbmsContext), iTestMbmsContext(aTestMbmsContext) - { - } - -TInt CTestMbmsSession::RunError(TInt /*aError*/) - { - return KErrNone; - } - -void CTestMbmsSession::ConstructL() - { - CActiveScheduler::Add(this); - iRetrieve=CRetrievePcktMbmsSessionList::NewL(iPcktMbmsContext, iSessionIdList); - iCanceller=new (ELeave) CTestCanceller(this); - } - -CTestMbmsSession::~CTestMbmsSession() - { - delete iCanceller; - delete iRetrieve; - } - -void CTestMbmsSession::Start() - { - iRetrieve->Start(iStatus); - //Test the CompleteIfInUse case of Start API - TRequestStatus tmpStatus; - iRetrieve->Start(tmpStatus); - User::WaitForRequest(tmpStatus); - iTestMbmsContext->TEST(tmpStatus.Int() == KErrInUse); - SetActive(); - } - -void CTestMbmsSession::RunL() - { - CActiveScheduler::Stop(); - } - -void CTestMbmsSession::DoCancel() - { - iRetrieve->Cancel(); - } - - +// 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: +// EtelPacketMbmsContext.cpp +// This contains EtelPacket TestCase +// +// + +// Symbian OS includes +#include +#include +#include "pcktretrieve.h" +#include +#include "Te_EtelPacketTestStepBase.h" +#include "testdef.h" +#include "Te_EtelPacketMbmsContext.h" +#include "Te_etelpckt_defs.h" + +// constructor +CTestMbmsContext::CTestMbmsContext() + { + // store the name of this test case + SetTestStepName(_L("MBMS_CONTEXT")); + } + +// destructor +CTestMbmsContext::~CTestMbmsContext() +{ +} + +TVerdict CTestMbmsContext::doTestStepPreambleL() + { + CTestStepEtelPacket::doTestStepPreambleL(); + 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); + } + iTestScheduler=new (ELeave) CActiveScheduler; + CActiveScheduler::Install(iTestScheduler); + return TestStepResult(); + } + +TVerdict CTestMbmsContext::doTestStepPostambleL() + { + delete iTestScheduler; + iPcktService.Close(); + iPhone.Close(); + CTestStepEtelPacket::doTestStepPostambleL(); + return TestStepResult(); + } + +enum TVerdict CTestMbmsContext::doTestStepL( void ) +/** + * Test step to check MBMS service availability functionality + */ + { + TestOpenMbmsContextL(); + TestInitialiseMbmsContextL(); + TestMbmsConfigurationL(); + TestActivateMbmsContextL(); + TestMbmsServiceStatusL(); + TestMbmsUpdateSessionL(); + TestMbmsGetSessionListL(); + TestDeactivateMbmsContextL(); + return TestStepResult(); + } + +void CTestMbmsContext::TestOpenMbmsContextL() + { + /* + * Verify whether a MBMS context is opened successfully. + */ + TInt retMbmsContext; + TName contextName; + + retMbmsContext = iMbmsContext.OpenNewContext(iPcktService, contextName); + if(retMbmsContext != KErrNone) + { + INFO_PRINTF1(_L("Failed to open packet context")); + User::Leave(retMbmsContext); + } + INFO_PRINTF1(_L("Open a MBMS context - Completed")); + } + +void CTestMbmsContext::TestMbmsConfigurationL() + { + /** + * Set the MBMS context configuration successfully + */ + TRequestStatus mbmsConfigStatus; + RPacketMbmsContext::TContextConfigMbmsV1 mbmsContextConfig; + mbmsContextConfig.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_ONE); + mbmsContextConfig.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_ONE); + mbmsContextConfig.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_ONE); + mbmsContextConfig.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_ONE; + mbmsContextConfig.iMbmsServicePriority = DPCKTTSY_MBMS_SERVICEPRIORITY_ONE; + mbmsContextConfig.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_ONE; + mbmsContextConfig.iMbmsSessionFlag = DPCKTTSY_MBMS_SESSION_FLAG_TRUE; + RPacketMbmsContext::TContextConfigMbmsV1Pckg iMbmsContextConfigPckg(mbmsContextConfig); + + iMbmsContext.SetConfig(mbmsConfigStatus, iMbmsContextConfigPckg); + User::WaitForRequest(mbmsConfigStatus); + TESTL(mbmsConfigStatus == KErrNone); + INFO_PRINTF1(_L("MBMS context set configurations - Completed")); + + /** + * Set the MBMS context configuration successfully + */ + TRequestStatus mbmsConfigStatusCancel; + iMbmsContext.SetConfig(mbmsConfigStatusCancel, iMbmsContextConfigPckg); + iMbmsContext.CancelAsyncRequest(EPacketContextSetConfig); + User::WaitForRequest(mbmsConfigStatusCancel); + TESTL(mbmsConfigStatusCancel == KErrCancel); + INFO_PRINTF1(_L("Cancel MBMS context set configurations - CANCELLED")); + + /** + * Set MBMS context configuration with invalid inputs + */ + mbmsContextConfig.iTmgi.SetMCC(DPCKTTSY_MBMS_MCC_INVALID); + mbmsContextConfig.iTmgi.SetMNC(DPCKTTSY_MBMS_MNC_INVALID); + mbmsContextConfig.iTmgi.SetServiceId(DPCKTTSY_MBMS_SERVICEID_INVALID); + mbmsContextConfig.iMbmsAccessBearer = DPCKTTSY_MBMS_ACCESSBEARER_INVALID; + mbmsContextConfig.iMbmsSessionFlag = DPCKTTSY_MBMS_SESSION_FLAG_TRUE; + mbmsContextConfig.iMbmsServiceMode = DPCKTTSY_MBMS_SERVICEMODE_INVALID; + + iMbmsContext.SetConfig(mbmsConfigStatus, iMbmsContextConfigPckg); + User::WaitForRequest(mbmsConfigStatus); + TESTL(mbmsConfigStatus == KErrCorrupt); + INFO_PRINTF1(_L("MBMS set context invalid configurations - Completed")); + + /** + * Get MBMS context configuration. + */ + RPacketMbmsContext::TContextConfigMbmsV1 mbmsGetContextConfig; + RPacketMbmsContext::TContextConfigMbmsV1Pckg mbmsGetContextConfigPckg(mbmsGetContextConfig); + iMbmsContext.GetConfig(mbmsConfigStatus, mbmsGetContextConfigPckg); + User::WaitForRequest(mbmsConfigStatus); + mbmsGetContextConfig = mbmsGetContextConfigPckg(); + TESTL(mbmsGetContextConfig.iTmgi.GetMCC() == DPCKTTSY_MBMS_MCC_ONE); + TESTL(mbmsGetContextConfig.iTmgi.GetMNC() == DPCKTTSY_MBMS_MNC_ONE); + TESTL(mbmsGetContextConfig.iTmgi.GetServiceId() == DPCKTTSY_MBMS_SERVICEID_ONE); + TESTL(mbmsGetContextConfig.iMbmsAccessBearer == DPCKTTSY_MBMS_ACCESSBEARER_ONE); + TESTL(mbmsGetContextConfig.iMbmsServicePriority == DPCKTTSY_MBMS_SERVICEPRIORITY_ONE); + TESTL(mbmsGetContextConfig.iMbmsServiceMode == DPCKTTSY_MBMS_SERVICEMODE_ONE); + TESTL(mbmsGetContextConfig.iMbmsSessionFlag = DPCKTTSY_MBMS_SESSION_FLAG_TRUE); + TESTL(mbmsConfigStatus == KErrNone); + INFO_PRINTF1(_L("MBMS get context configurations - Completed")); + } + +void CTestMbmsContext::TestActivateMbmsContextL() + { + /** + * Activate MBMS context. + */ + TRequestStatus activateStatus; + iMbmsContext.Activate(activateStatus); + User::WaitForRequest(activateStatus); + TESTL(activateStatus == KErrNone); + INFO_PRINTF1(_L("MBMS context activation - Completed")); + } + +void CTestMbmsContext::TestMbmsServiceStatusL() + { + /** + * Verify the status of the service being received + */ + TRequestStatus activateStatus; + RPacketMbmsContext::TContextStatus contextStatus; + iMbmsContext.NotifyStatusChange(activateStatus,contextStatus); + User::WaitForRequest(activateStatus); + TESTL(contextStatus == DPCKTTSY_CONTEXT_STATUS2); + TESTL(activateStatus == KErrNone); + INFO_PRINTF1(_L("MBMS context status notification - Completed")); + + /** + * Receive notification on status change of a MBMS service + */ + TInt retStatus = iMbmsContext.GetStatus(contextStatus); + TESTL(contextStatus == DPCKTTSY_CONTEXT_STATUS1); + TESTL(retStatus == KErrNone); + INFO_PRINTF1(_L("Get MBMS context status - Completed")); + + /** + * Cancel MBMS status notification on status change. + */ + iMbmsContext.NotifyStatusChange(activateStatus,contextStatus); + iMbmsContext.CancelAsyncRequest(EPacketContextNotifyStatusChange); + User::WaitForRequest(activateStatus); + TESTL( activateStatus == KErrCancel); + INFO_PRINTF1(_L("MBMS context status notification cancellation - CANCELLED")); + } + +void CTestMbmsContext::TestMbmsUpdateSessionL() + { + /** + * Add MBMS session + */ + TRequestStatus sessionStatus; + TUint sessionId = DPCKTTSY_MBMS_SESSIONID_ONE; + iMbmsContext.UpdateMbmsSessionList(sessionStatus, EAddEntries, sessionId); + User::WaitForRequest(sessionStatus); + TESTL(sessionStatus == KErrNone); + INFO_PRINTF1(_L("Add MBMS session - Completed")); + + /** + * Test cancelling the UpdateMbmsSessionList API + */ + TRequestStatus sessionStatusCancel; + sessionId = DPCKTTSY_MBMS_SESSIONID_ONE; + iMbmsContext.UpdateMbmsSessionList(sessionStatusCancel, EAddEntries, sessionId); + iMbmsContext.CancelAsyncRequest(EPacketContextUpdateMbmsSessionList); + User::WaitForRequest(sessionStatusCancel); + TESTL(sessionStatusCancel == KErrCancel); + INFO_PRINTF1(_L("Cancel UpdateMbmsSessionList - CANCELLED")); + + /** + * Remove MBMS session + */ + iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveEntries, sessionId); + User::WaitForRequest(sessionStatus); + TESTL(sessionStatus == KErrNone); + INFO_PRINTF1(_L("Remove MBMS session - Completed")); + + /** + * Remove an invalid MBMS session + */ + sessionId = DPCKTTSY_MBMS_SESSIONID_INVALID; + iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveEntries, sessionId); + User::WaitForRequest(sessionStatus); + TESTL(sessionStatus == KErrNotFound); + INFO_PRINTF1(_L("Remove invalid MBMS session - Completed")); + + /** + * Remove all MBMS sessions + */ + iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveAllEntries); + User::WaitForRequest(sessionStatus); + TESTL(sessionStatus == KErrNone); + INFO_PRINTF1(_L("Remove all MBMS sessions - Completed")); + + /** + * Remove all MBMS sessions completes with error. + */ + sessionId = DPCKTTSY_MBMS_SESSIONID_ONE; + iMbmsContext.UpdateMbmsSessionList(sessionStatus, ERemoveAllEntries, sessionId); + User::WaitForRequest(sessionStatus); + TESTL(sessionStatus == KErrMbmsImpreciseServiceEntries); + INFO_PRINTF1(_L("Failure scenario - Remove all MBMS sessions - Completed")); + } + +void CTestMbmsContext::TestDeactivateMbmsContextL() + { + /** + * Deactivate a MBMS context. + */ + TRequestStatus mbmsDeactivateStatus; + iMbmsContext.Deactivate(mbmsDeactivateStatus); + User::WaitForRequest(mbmsDeactivateStatus); + TESTL(mbmsDeactivateStatus == KErrNone); + INFO_PRINTF1(_L("MBMS context deactivation - Completed")); + + /** + * Delete the context + */ + TRequestStatus mbmsDeleteStatus; + iMbmsContext.Delete(mbmsDeleteStatus); + User::WaitForRequest(mbmsDeleteStatus); + TESTL(mbmsDeleteStatus == KErrNone); + INFO_PRINTF1(_L("MBMS context deleted - Completed")); + + /** + * Close the context + */ + iMbmsContext.Close(); + } + +void CTestMbmsContext::TestInitialiseMbmsContextL() + { + /** + * Initialise MBMS context. + */ + RPacketMbmsContext::TDataChannelV2 dataChannel; + RPacketMbmsContext::TDataChannelV2Pckg dataChannelPckg(dataChannel); + TRequestStatus mbmsInitContextStatus; + iMbmsContext.InitialiseContext(mbmsInitContextStatus, dataChannelPckg); + User::WaitForRequest(mbmsInitContextStatus); + TESTL(dataChannel.iCsy == DPCKTTSY_CSY_ASYNC); + TESTL(dataChannel.iPort == DPCKTTSY_PORT_ASYNC); + TESTL(dataChannel.iChannelId == DPCKTTSY_CHANNEL_ID); + TESTL(mbmsInitContextStatus == KErrNone); + INFO_PRINTF1(_L("MBMS Initialise context - Completed")); + } + +void CTestMbmsContext::TestMbmsGetSessionListL() + { + __UHEAP_MARK; + TInt ret(KErrNone); + TRequestStatus reqStatus; + TUint sessionId1=1000, sessionId2=2000, sessionId3=3000; + + /** + * Test serialization + */ + RPacketMbmsContext::CMbmsSession* mbmsSession = RPacketMbmsContext::CMbmsSession::NewL(); + CleanupStack::PushL(mbmsSession); + TESTL(mbmsSession->ExtensionId() == KETelExtPcktV1); + mbmsSession->iSessionIdList.Append(sessionId1); + mbmsSession->iSessionIdList.Append(sessionId2); + mbmsSession->iSessionIdList.Append(sessionId3); + HBufC8* buff = HBufC8::NewL(15); + mbmsSession->ExternalizeL(buff); + CleanupStack::PushL(buff); + RPacketMbmsContext::CMbmsSession* mbmsSessionCopy = RPacketMbmsContext::CMbmsSession::NewL(); + CleanupStack::PushL(mbmsSessionCopy); + + TBuf8<256> buffBig; + buffBig=*buff; + + /** + * Memory overflow test for Internalize function + */ + TInt err=KErrNone; + TInt len=0; + do + { + buffBig.SetLength(len); + TRAP(err, mbmsSessionCopy->InternalizeL(buffBig)); + if(err == KErrOverflow) + { + len++; + } + else + { + TESTL(err == KErrNone); + break; + } + } + while(len < 100); //just in case, set a limit to finish the loop. + TESTL(len<100); + TRAP(ret,mbmsSessionCopy->InternalizeL(buffBig)); + TEST(ret==KErrNone); + TESTL(mbmsSessionCopy->iSessionIdList.Count() == mbmsSession->iSessionIdList.Count()); + TESTL(mbmsSessionCopy->iSessionIdList[0] == mbmsSession->iSessionIdList[0]); + TESTL(mbmsSessionCopy->iSessionIdList[1] == mbmsSession->iSessionIdList[1]); + TESTL(mbmsSessionCopy->iSessionIdList[2] == mbmsSession->iSessionIdList[2]); + CleanupStack::PopAndDestroy(mbmsSessionCopy); + CleanupStack::PopAndDestroy(buff); + CleanupStack::PopAndDestroy(mbmsSession); + INFO_PRINTF1(_L("Test serialization of sessions - Completed")); + INFO_PRINTF1(_L("OOM test for Internalize API - Completed")); + + /** + * Retrieve a list of session ids of a MBMS service + */ + RPacketMbmsContext::CMbmsSession* mbmsSession1 = RPacketMbmsContext::CMbmsSession::NewL(); + CleanupStack::PushL(mbmsSession1); + CTestMbmsSession* testMbmsSession = CTestMbmsSession::NewLC(iMbmsContext,*mbmsSession1, this); + testMbmsSession->Start(); + CActiveScheduler::Start(); + TEST(testMbmsSession->iRetrieve != NULL); + if(testMbmsSession->iRetrieve ) + { + TESTL(mbmsSession1->iSessionIdList.Count() == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_COUNT); + TESTL(mbmsSession1->iSessionIdList[0] == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_ONE); + TESTL(mbmsSession1->iSessionIdList[1] == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_TWO); + TESTL(mbmsSession1->iSessionIdList[2] == DPCKTTSY_MBMS_CONTEXT_SESSION_ID_THREE); + } + INFO_PRINTF1(_L("Retrieve a list of sessions IDs of a MBMS service - Completed")); + + /** + * Test cancellation of retrieval of sessions + */ + testMbmsSession->Start(); + testMbmsSession->iCanceller->Call(); + CActiveScheduler::Start(); + INFO_PRINTF1(_L("Cancel retrieval of MBMS sessions - Completed")); + + CleanupStack::PopAndDestroy(testMbmsSession); + CleanupStack::PopAndDestroy(mbmsSession1); + iPcktService.Close(); + iPhone.Close(); + __UHEAP_MARKEND; + } +// +CTestMbmsSession* CTestMbmsSession::NewLC(RPacketMbmsContext& aPcktMbmsContext,RPacketMbmsContext::CMbmsSession& aSessionIdList, CTestMbmsContext* aTestMbmsContext) + { + CTestMbmsSession* self = new(ELeave) CTestMbmsSession(aPcktMbmsContext, aSessionIdList, aTestMbmsContext); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CTestMbmsSession::CTestMbmsSession(RPacketMbmsContext& aPcktMbmsContext, RPacketMbmsContext::CMbmsSession& aSessionIdList, CTestMbmsContext* aTestMbmsContext) + : CActive(EPriorityHigh), iSessionIdList(aSessionIdList), iPcktMbmsContext(aPcktMbmsContext), iTestMbmsContext(aTestMbmsContext) + { + } + +TInt CTestMbmsSession::RunError(TInt /*aError*/) + { + return KErrNone; + } + +void CTestMbmsSession::ConstructL() + { + CActiveScheduler::Add(this); + iRetrieve=CRetrievePcktMbmsSessionList::NewL(iPcktMbmsContext, iSessionIdList); + iCanceller=new (ELeave) CTestCanceller(this); + } + +CTestMbmsSession::~CTestMbmsSession() + { + delete iCanceller; + delete iRetrieve; + } + +void CTestMbmsSession::Start() + { + iRetrieve->Start(iStatus); + //Test the CompleteIfInUse case of Start API + TRequestStatus tmpStatus; + iRetrieve->Start(tmpStatus); + User::WaitForRequest(tmpStatus); + iTestMbmsContext->TEST(tmpStatus.Int() == KErrInUse); + SetActive(); + } + +void CTestMbmsSession::RunL() + { + CActiveScheduler::Stop(); + } + +void CTestMbmsSession::DoCancel() + { + iRetrieve->Cancel(); + } + +