diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCESIPManager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCESIPManager.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,627 @@ +/* +* Copyright (c) 2004 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: +* +*/ + + + + +// CLASS HEADER +#include "ut_cmcesipmanager.h" + +// EXTERNAL INCLUDES +#include +#include + + +// INTERNAL INCLUDES +#include "MCETestHelper.h" + +#include "mceactionset.h" +#include "mcesipsession.h" +#include "mceservercore.h" +#include "mcecssession.h" +#include "mcecssessionimplementation.h" +#include "mcesipconnection.h" +#include "mcecomsession.h" + + +#define MCE_INCOMING_REQUEST_POSTCONDITION \ + MCE_CHECK_MEMORY_LEAVE( iStorage->iSipSentResponse && \ + iStorage->iSipSentResponse->StatusCode() == KMceSipServerInternalError ) + +// CONSTRUCTION +UT_CMceSipManager* UT_CMceSipManager::NewL() + { + UT_CMceSipManager* self = UT_CMceSipManager::NewLC(); + CleanupStack::Pop(); + + return self; + } + +UT_CMceSipManager* UT_CMceSipManager::NewLC() + { + UT_CMceSipManager* self = new( ELeave ) UT_CMceSipManager(); + CleanupStack::PushL( self ); + + self->ConstructL(); + + return self; + } + +// Destructor (virtual by CBase) +UT_CMceSipManager::~UT_CMceSipManager() + { + } + +// Default constructor +UT_CMceSipManager::UT_CMceSipManager() + { + } + +// Second phase construct +void UT_CMceSipManager::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + +// METHODS + + + +void UT_CMceSipManager::SetupL( ) + { + CMCETls::OpenL(); + SdpCodecStringPool::OpenL(); + + iIds.iAppUID = 1; + + + iStorage = CMCETls::Storage(); + iServerCore = CMceServerCore::NewL(); + iSession = CMceCsSession::NewL( *iServerCore ); + iSession->SetClientUidL( iIds, RMessage2() ); + + iManager = &iServerCore->Manager(); + + iManager->ConnectionL( iManager->ProfileL( 1 ) ); + + } + +void UT_CMceSipManager::Teardown( ) + { + CMCETls::Close(); + delete iSession; + delete iServerCore; + + SdpCodecStringPool::Close(); + + } + + +void UT_CMceSipManager::UT_CMceSipManager_ProfileL_1_L() + { + TInt error = KErrNone; + + CSIPProfile& profile = iManager->ProfileL( 1 ); + EUNIT_ASSERT( &profile != NULL ); + + TRAP( error, CSIPProfile& profile1 = iManager->ProfileL( 100 ) ); + EUNIT_ASSERT( error != KErrNone ); + + CSIPProfile& profile1 = iManager->ProfileL( 1 ); + EUNIT_ASSERT( &profile1 != NULL ); + + TRAP( error, CSIPProfile& profile2 = iManager->ProfileL( 100 ) ); + EUNIT_ASSERT( error != KErrNone ); + + } + + +void UT_CMceSipManager::UT_CMceSipManager_ProfileL_2_L() + { + TInt error = KErrNone; + + CSIPAddress* defAor = CSIPAddress::DecodeL( KSIPProfileDefAOR ); + CleanupStack::PushL( defAor ); + + CSIPAddress* reqUri = CSIPAddress::DecodeL( KRequestUri ); + CleanupStack::PushL( reqUri ); + + CSIPAddress* forwarded = CSIPAddress::DecodeL( KForwarded ); + CleanupStack::PushL( forwarded ); + + // Matches with existing profile by to header + + CSIPProfile& profile1 = iManager->ProfileL( 1, reqUri->Uri8() ); + EUNIT_ASSERT( &profile1 != NULL ); + EUNIT_ASSERT( iManager->iProfiles.Count() == 1 ); + + // Matches with existing profile by request uri + CSIPProfile& profile2 = iManager->ProfileL( 1, reqUri->Uri8() ); + EUNIT_ASSERT( &profile2 != NULL ); + EUNIT_ASSERT( iManager->iProfiles.Count() == 1 ); + + + // Matches with not existing profile by to header + iManager->iProfiles.ResetAndDestroy(); + CSIPProfile& profile3 = iManager->ProfileL( 1, reqUri->Uri8() ); + EUNIT_ASSERT( &profile3 != NULL ); + EUNIT_ASSERT( iManager->iProfiles.Count() == 1 ); + + // Matches with not existing profile by request uri + iManager->iProfiles.ResetAndDestroy(); + CSIPProfile& profile4 = iManager->ProfileL( 1, reqUri->Uri8() ); + EUNIT_ASSERT( &profile4 != NULL ); + EUNIT_ASSERT( iManager->iProfiles.Count() == 1 ); + + // Does not match + TRAP( error, CSIPProfile& profile5 = iManager->ProfileL( 1, forwarded->Uri8() ) ); + EUNIT_ASSERT( error != KErrNone ); + + CleanupStack::PopAndDestroy( forwarded ); + CleanupStack::PopAndDestroy( reqUri ); + CleanupStack::PopAndDestroy( defAor ); + } + +void UT_CMceSipManager::UT_CMceSipManager_ConnectionLL() + { + CSIPProfile& profile = iManager->ProfileL( 1 ); + CMceSipConnection& connection = iManager->ConnectionL( profile ); + EUNIT_ASSERT( &connection != NULL ); + } + +void UT_CMceSipManager::UT_CMceSipManager_IncomingRequestL() + { + + CSIPServerTransaction* srvtransaction = + MCETestHelper::ServerTransactionL( SipStrConsts::EInvite, ETrue ); + + EUNIT_ASSERT( iManager->iClients[0]->Implementation().SubSessions().Count() == 0 ); + + iManager->IncomingRequest( 1, srvtransaction ); + MCE_INCOMING_REQUEST_POSTCONDITION + + iStorage->ExecuteCallback(); + MCE_INCOMING_REQUEST_POSTCONDITION + + EUNIT_ASSERT( iManager->iClients[0]->Implementation().SubSessions().Count() == 1 ); + + srvtransaction = + MCETestHelper::ServerTransactionL( SipStrConsts::EMessage, EFalse ); + + iManager->IncomingRequest( 1, srvtransaction ); + EUNIT_ASSERT( iManager->iClients[0]->Implementation().SubSessions().Count() == 1 ); + + + srvtransaction = + CSIPServerTransaction::NewL( SIPStrings::StringF( SipStrConsts::EInvite )); + CleanupStack::PushL( srvtransaction ); + + CUri8* uri = CUri8::NewLC(); //OK + MCE_SET_URIL( uri ); + + CSIPRequestElements* requestelements = CSIPRequestElements::NewL( uri ); + CleanupStack::Pop( uri ); + CleanupStack::PushL( requestelements ); + + CSIPFromHeader* fromheader = CSIPFromHeader::DecodeL(_L8("User ")); + CleanupStack::PushL( fromheader ); + + requestelements->SetFromHeaderL(fromheader); + CleanupStack::Pop( fromheader ); + + requestelements->SetMethodL( SIPStrings::StringF( SipStrConsts::EInvite ) ); + srvtransaction->SetRequestElements( requestelements ); + CleanupStack::Pop( requestelements ); + CleanupStack::Pop( srvtransaction ); + + iManager->IncomingRequest( 1, srvtransaction ); + EUNIT_ASSERT( iManager->iClients[0]->Implementation().SubSessions().Count() == 1 ); + } + +void UT_CMceSipManager::UT_CMceSipManager_TimedOutL() + { + CSIPServerTransaction* trx = NULL; + iManager->TimedOut( *trx ); + + } + +void UT_CMceSipManager::UT_CMceSipManager_ProfileRegistryEventOccurredL() + { + + iManager->ProfileRegistryEventOccurred( 1, MSIPProfileRegistryObserver::EProfileUpdated ); + + } + +void UT_CMceSipManager::UT_CMceSipManager_ProfileRegistryErrorOccurredL() + { + + iManager->ProfileRegistryErrorOccurred( 1, KErrServerTerminated ); + + } + +void UT_CMceSipManager::UT_CMceSipManager_MediaErrorL() + { + + iManager->MediaError( KErrServerTerminated ); + + } + +void UT_CMceSipManager::UT_CMceSipManager_NextDialogIdL() + { + + iManager->iNextDialogId = 0; + EUNIT_ASSERT( iManager->NextDialogId() == 1 ); + EUNIT_ASSERT( iManager->NextDialogId() == 2 ); + EUNIT_ASSERT( iManager->NextDialogId() == 3 ); + EUNIT_ASSERT( iManager->NextDialogId() == 4 ); + + + } + + +void UT_CMceSipManager::UT_CMceSipManager_UnRegisterClientL() + { + EUNIT_ASSERT( iManager->iClients.Count() == 1 ); + + CMceCsSession* session = CMceCsSession::NewL( *iServerCore ); + CleanupStack::PushL( session ); + iIds.iAppUID = 2; + session->SetClientUidL( iIds, RMessage2() ); + + CMceCsSession* session2 = CMceCsSession::NewL( *iServerCore ); + CleanupStack::PushL( session2 ); + iIds.iAppUID = 3; + session2->SetClientUidL( iIds, RMessage2() ); + + + EUNIT_ASSERT( iManager->iClients.Count() == 3 ); + + CleanupStack::PopAndDestroy( session2 ); + + EUNIT_ASSERT( iManager->iClients.Count() == 2 ); + + session = iManager->iClients[1]; + iManager->UnRegisterClient( *session ); + EUNIT_ASSERT( iManager->iClients.Count() == 1 ); + + CleanupStack::PopAndDestroy( session ); + + EUNIT_ASSERT( iManager->iClients.Count() == 1 ); + + + } + +void UT_CMceSipManager::UT_CMceSipManager_CreateSubSessionL_1L() + { + + iIds.iProfileID = 1; + iIds.iManagerType = KMceCSSIPSession; + iIds.iDialogType = KMceDlgTypeInvite; + + CDesC8ArrayFlat* params = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity ); + CleanupStack::PushL( params ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("User ") ); + + CMceCsSubSession* session = + iManager->CreateSubSessionL( *iSession, iIds, *params ); + + CleanupStack::PopAndDestroy( params ); + CleanupStack::PushL( session ); + EUNIT_ASSERT( session != NULL ); + EUNIT_ASSERT( session->Dialog() != NULL ); + EUNIT_ASSERT( session->DialogId() > 0 ); + EUNIT_ASSERT( &session->SIPConnection() != NULL ); + EUNIT_ASSERT( session->SIPConnection().iSessions.Count() == 1 ); + + CleanupStack::PopAndDestroy( session ); + } + +void UT_CMceSipManager::UT_CMceSipManager_CreateSubSessionL_2L() + { + iIds.iProfileID = 1; + iIds.iManagerType = KMceCSSIPSession; + iIds.iDialogType = KMceDlgTypeInvite; + + CDesC8ArrayFlat* params = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity ); + CleanupStack::PushL( params ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("User ") ); + + CMceCsSubSession* session = + iManager->CreateSubSessionL( *iSession, iIds, *params ); + + CleanupStack::PopAndDestroy( params ); + CleanupStack::PushL( session ); + EUNIT_ASSERT( session != NULL ); + EUNIT_ASSERT( session->Dialog() != NULL ); + EUNIT_ASSERT( session->DialogId() > 0 ); + EUNIT_ASSERT( &session->SIPConnection() != NULL ); + EUNIT_ASSERT( session->SIPConnection().iSessions.Count() == 1 ); + + CleanupStack::PopAndDestroy( session ); + } + +void UT_CMceSipManager::UT_CMceSipManager_CreateSubSessionL_3L() + { + CMceSipConnection& connection = iManager->ConnectionL( iManager->ProfileL( 1 ) ); + + CSIPServerTransaction* srvtransaction = + MCETestHelper::ServerTransactionL( SipStrConsts::EInvite, ETrue ); + CleanupStack::PushL( srvtransaction ); + iManager->CreateSubSessionL( srvtransaction, *iSession, connection ); + CleanupStack::Pop( srvtransaction ); + } + +void UT_CMceSipManager::UT_CMceSipManager_CreateSubSessionNoProfileL() + { + + iIds.iProfileID = 0; + iIds.iManagerType = KMceCSSIPSession; + iIds.iDialogType = KMceDlgTypeInvite; + + CDesC8ArrayFlat* params = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity ); + CleanupStack::PushL( params ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("6") ); + + CMceCsSubSession* session = + iManager->CreateSubSessionL( *iSession, iIds, *params ); + + CleanupStack::PopAndDestroy( params ); + CleanupStack::PushL( session ); + EUNIT_ASSERT( session != NULL ); + EUNIT_ASSERT( session->Dialog() != NULL ); + EUNIT_ASSERT( session->DialogId() > 0 ); + EUNIT_ASSERT( &session->SIPConnection() != NULL ); + EUNIT_ASSERT( session->SIPConnection().iSessions.Count() == 1 ); + + CleanupStack::PopAndDestroy( session ); + } + +void UT_CMceSipManager::UT_CMceSipManager_UnRegisterSubSessionL() + { + iIds.iProfileID = 1; + iIds.iManagerType = KMceCSSIPSession; + iIds.iDialogType = KMceDlgTypeInvite; + + CMceSipConnection& connection = iManager->ConnectionL( iManager->ProfileL( 1 ) ); + + + CDesC8ArrayFlat* params = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity ); + CleanupStack::PushL( params ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("User ") ); + TInt i = 0; + for( i = 0;i<4;i++ ) + { + CMceCsSubSession* session = + iManager->CreateSubSessionL( *iSession, iIds, *params ); + CleanupStack::PushL( session ); + EUNIT_ASSERT( &session->SIPConnection() == &connection ); + EUNIT_ASSERT( connection.iSessions.Count() == 1+i ); + } + + for( i = 0;i<4;i++ ) + { + EUNIT_ASSERT( connection.iSessions.Count() == 4-i ); + CleanupStack::PopAndDestroy(); + } + //After all CMceCsSubSession have been delete, all profile has been delete + EUNIT_ASSERT( iManager->iProfiles.Count() == 0 ); + CleanupStack::PopAndDestroy( params ); + + } + +void UT_CMceSipManager::UT_CMceSipManager_UnRegisterSubSessionNoProfileL() + { + iIds.iProfileID = 0; + iIds.iManagerType = KMceCSSIPSession; + iIds.iDialogType = KMceDlgTypeInvite; + + CMceSipConnection& connection = iManager->ConnectionL( 6 ); + + + CDesC8ArrayFlat* params = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity ); + CleanupStack::PushL( params ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("6") ); + TInt i = 0; + for( i = 0;i<4;i++ ) + { + CMceCsSubSession* session = + iManager->CreateSubSessionL( *iSession, iIds, *params ); + CleanupStack::PushL( session ); + EUNIT_ASSERT( &session->SIPConnection() == &connection ); + EUNIT_ASSERT( connection.iSessions.Count() == 1+i ); + } + + for( i = 0;i<4;i++ ) + { + EUNIT_ASSERT( connection.iSessions.Count() == 4-i ); + CleanupStack::PopAndDestroy(); + } + + CleanupStack::PopAndDestroy( params ); + + } + +void UT_CMceSipManager::UT_CMceSipManager_MediaManagerL() + { + EUNIT_ASSERT( &iManager->MediaManager() != NULL ); + + } + +void UT_CMceSipManager::UT_CMceSipManager_SIPClientL() + { + EUNIT_ASSERT( &iManager->SIPClient() != NULL ); + } + +void UT_CMceSipManager::UT_CMceSipManager_OrphanSubSessionCountL() + { + EUNIT_ASSERT( iManager->OrphanSubSessionCount() == 0 ); + } + + +// TEST TABLE + +EUNIT_BEGIN_TEST_TABLE( + UT_CMceSipManager, + "UT_CMceSipManager", + "UNIT" ) + +EUNIT_TEST( + "ProfileL - test ", + "CMceSipManager", + "ProfileL", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_ProfileL_1_L, Teardown) + +EUNIT_TEST( + "ProfileL - test ", + "CMceSipManager", + "ProfileL", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_ProfileL_2_L, Teardown) + +EUNIT_TEST( + "ConnectionL - test ", + "CMceSipManager", + "ConnectionL", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_ConnectionLL, Teardown) + + +EUNIT_TEST( + "IncomingRequest - test ", + "CMceSipManager", + "IncomingRequest", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_IncomingRequestL, Teardown) + +EUNIT_TEST( + "TimedOut - test ", + "CMceSipManager", + "TimedOut", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_TimedOutL, Teardown) + +EUNIT_TEST( + "ProfileRegistryEventOccurred - test ", + "CMceSipManager", + "ProfileRegistryEventOccurred", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_ProfileRegistryEventOccurredL, Teardown) + +EUNIT_TEST( + "ProfileRegistryErrorOccurred - test ", + "CMceSipManager", + "ProfileRegistryErrorOccurred", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_ProfileRegistryErrorOccurredL, Teardown) + +EUNIT_TEST( + "MediaError - test ", + "CMceSipManager", + "MediaError", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_MediaErrorL, Teardown) + +EUNIT_TEST( + "NextDialogId - test ", + "CMceSipManager", + "NextDialogId", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_NextDialogIdL, Teardown) + +EUNIT_TEST( + "UnRegisterClient - test ", + "CMceSipManager", + "UnRegisterClient", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_UnRegisterClientL, Teardown) + +EUNIT_TEST( + "CreateSubSessionL - MO test ", + "CMceSipManager", + "CreateSubSessionL", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_CreateSubSessionL_1L, Teardown) + +EUNIT_TEST( + "CreateSubSessionL - MO test ", + "CMceSipManager", + "CreateSubSessionL", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_CreateSubSessionL_2L, Teardown) +EUNIT_TEST( + "CreateSubSessionL - MT test ", + "CMceSipManager", + "CreateSubSessionL", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_CreateSubSessionL_3L, Teardown) + +EUNIT_TEST( + "CreateSubSessionL - MT test ", + "CMceSipManager", + "CreateSubSessionL", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_CreateSubSessionNoProfileL, Teardown) + +EUNIT_TEST( + "UnRegisterSubSession - test ", + "CMceSipManager", + "UnRegisterSubSession", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_UnRegisterSubSessionL, Teardown) + +EUNIT_TEST( + "UnRegisterSubSessionNoProfile - test ", + "CMceSipManager", + "UnRegisterSubSessionNoProfile", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_UnRegisterSubSessionNoProfileL, Teardown) + +EUNIT_TEST( + "MediaManager - test ", + "CMceSipManager", + "MediaManager", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_MediaManagerL, Teardown) + +EUNIT_TEST( + "SIPClient - test ", + "CMceSipManager", + "SIPClient", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_SIPClientL, Teardown) + +EUNIT_TEST( + "OrphanSubSessionCount - test ", + "CMceSipManager", + "OrphanSubSessionCount", + "FUNCTIONALITY", + SetupL, UT_CMceSipManager_OrphanSubSessionCountL, Teardown) + + +EUNIT_END_TEST_TABLE + +// END OF FILE