diff -r 000000000000 -r 1bce908db942 natplugins/natpnatfwsdpprovider/tsrc/testconsole/src/nspreleasetest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/natplugins/natpnatfwsdpprovider/tsrc/testconsole/src/nspreleasetest.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,600 @@ +/* +* Copyright (c) 2008 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: NAT FW SDP Provider test console release tests impl. +* +*/ + +#include +#include +#include +#include "nspplugin.h" +#include "nspreleasetest.h" +#include "nsptestconsolesession.h" +#include "nsptestconsolestream.h" +#include "nsptestasyncservice.h" +#include "nsptestconsolemacros.h" + +_LIT( KRelease, "Release test" ); +_LIT( KNewSession, "NewSession test" ); +_LIT( KCreateOffer, "CreateOffer test" ); +_LIT( KDecodeAnswer, "DecodeAnswer test" ); +_LIT( KResolve, "Resolve test" ); +_LIT( KUpdate, "Update test" ); + +#define PTR_DEL( aPtr ) delete aPtr; aPtr = NULL + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::NewL +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest* CNSPReleaseTest::NewL( CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPReleaseTest* self = CNSPReleaseTest::NewLC( aApi, aRep ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::NewLC +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest* CNSPReleaseTest::NewLC( CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPReleaseTest* self = new ( ELeave ) CNSPReleaseTest; + CleanupStack::PushL( self ); + self->ConstructL( aApi, aRep ); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::~CNSPReleaseTest +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::~CNSPReleaseTest() + { + iTestArray.ResetAndDestroy(); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPReleaseTest +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPReleaseTest() + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::ConstructL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::ConstructL( CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPTest* test = NULL; + + test = CNSPTestNewSession::NewLC( aApi, aRep ); + iTestArray.AppendL( test ); + CleanupStack::Pop( test ); + + test = CNSPTestCreateOffer::NewLC( aApi, aRep ); + iTestArray.AppendL( test ); + CleanupStack::Pop( test ); + + test = CNSPTestDecodeAnswer::NewLC( aApi, aRep ); + iTestArray.AppendL( test ); + CleanupStack::Pop( test ); + + /* + test = CNSPTestResolve::NewLC( aApi, aRep ); + iTestArray.AppendL( test ); + CleanupStack::Pop( test ); + + test = CNSPTestUpdate::NewLC( aApi, aRep ); + iTestArray.AppendL( test ); + CleanupStack::Pop( test ); + */ + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::SetupL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::SetupL() + { + iResult.iDescription.Copy( KRelease() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::Teardown +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::Teardown() + { + TResult::TState result; + iResult.iState = TResult::EPass; + + for ( TInt i = 0; i < iTestArray.Count(); i++ ) + { + result = iTestArray[i]->State(); + iResult.iState = ( TResult::EPass != result ? + TResult::EFail : iResult.iState ); + } + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::ExecuteL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::ExecuteL( CConsoleBase& aConsole ) + { + for ( TInt i = 0; i < iTestArray.Count(); i++ ) + { + iTestArray[i]->StartL( aConsole ); + } + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::Cancel +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::Cancel() + { + for ( TInt i = 0; i < iTestArray.Count(); i++ ) + { + iTestArray[i]->Cancel(); + } + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::AcceptL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::AcceptL( MNSPTestVisitor& aVisitor ) + { + aVisitor.VisitL( *this ); + + for ( TInt i = 0; i < iTestArray.Count(); i++ ) + { + iTestArray[i]->AcceptL( aVisitor ); + } + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::NewLC +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestNewSession* CNSPReleaseTest::CNSPTestNewSession::NewLC( + CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPReleaseTest::CNSPTestNewSession* self = + new ( ELeave ) CNSPReleaseTest::CNSPTestNewSession( aApi, aRep ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::ConstructL +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestNewSession::CNSPTestNewSession( CNSPPlugin& aApi, CRepository& aRep ) + : iApi( aApi ), + iRep( aRep ) + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::ConstructL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestNewSession::ConstructL() + { + iAsyncService = CNSPTestAsyncService::NewL( iTimerStatus ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::CNSPTestNewSession +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestNewSession::~CNSPTestNewSession() + { + PTR_DEL( iAsyncService ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::SetupL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestNewSession::SetupL() + { + iResult.iDescription.Copy( KNewSession() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::Teardown +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestNewSession::Teardown() + { + PTR_DEL( iSession ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::ExecuteL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestNewSession::ExecuteL( CConsoleBase& aConsole ) + { + PTR_DEL( iSession ); + iSession = CNSPTestConsoleSession::NewL( iApi, iRep, *iAsyncService ); + WAIT( aConsole, "INITIALIZED" ); + iAsyncService->StartScheduler(); // BLOCKING until callback(Initialized) + COMPLETED_L( aConsole, "INITIALIZED", iTimerStatus ); + __ASSERT( CNSPTestConsoleSession::EIdle == iSession->State() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::Cancel +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestNewSession::Cancel() + { + iAsyncService->Cancel(); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestCreateOffer::NewLC +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestCreateOffer* CNSPReleaseTest::CNSPTestCreateOffer::NewLC( + CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPReleaseTest::CNSPTestCreateOffer* self = + new ( ELeave ) CNSPReleaseTest::CNSPTestCreateOffer( aApi, aRep ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestCreateOffer::ConstructL +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestCreateOffer::CNSPTestCreateOffer( CNSPPlugin& aApi, CRepository& aRep ) + : CNSPTestNewSession( aApi, aRep ) + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestCreateOffer::ConstructL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestCreateOffer::ConstructL() + { + CNSPTestNewSession::ConstructL(); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestNewSession::CNSPTestCreateOffer +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestCreateOffer::~CNSPTestCreateOffer() + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestCreateOffer::SetupL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestCreateOffer::SetupL() + { + iResult.iDescription.Copy( KCreateOffer() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestCreateOffer::Teardown +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestCreateOffer::Teardown() + { + PTR_DEL( iSession ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestCreateOffer::ExecuteL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestCreateOffer::ExecuteL( CConsoleBase& aConsole ) + { + CNSPTestNewSession::ExecuteL( aConsole ); // BLOCKING until callback.(Initialized) + + CTestConsoleStream* outStream = CTestConsoleStream::NewL(); + iSession->StoreOutStream( outStream ); // ownership changed. + TNatReturnStatus status = iSession->CreateOfferL( *outStream ); + + if ( KNatAsync == status ) + { + __ASSERT( CNSPTestConsoleSession::ECreateOffer == iSession->State() ); + WAIT( aConsole, "OFFER READY" ); + iAsyncService->StartScheduler(); // BLOCKING until callback(OfferReady) + COMPLETED_L( aConsole, "OFFER READY", iTimerStatus ); + } + + __ASSERT( CNSPTestConsoleSession::EIdle == iSession->State() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestCreateOffer::NewLC +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestDecodeAnswer* CNSPReleaseTest::CNSPTestDecodeAnswer::NewLC( + CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPReleaseTest::CNSPTestDecodeAnswer* self = + new ( ELeave ) CNSPReleaseTest::CNSPTestDecodeAnswer( aApi, aRep ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestDecodeAnswer::CNSPTestDecodeAnswer +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestDecodeAnswer::CNSPTestDecodeAnswer( CNSPPlugin& aApi, CRepository& aRep ) + : CNSPTestCreateOffer( aApi, aRep ) + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestDecodeAnswer::ConstructL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestDecodeAnswer::ConstructL() + { + CNSPTestCreateOffer::ConstructL(); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestDecodeAnswer::CNSPTestDecodeAnswer +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestDecodeAnswer::~CNSPTestDecodeAnswer() + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestDecodeAnswer::SetupL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestDecodeAnswer::SetupL() + { + iResult.iDescription.Copy( KDecodeAnswer() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestDecodeAnswer::Teardown +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestDecodeAnswer::Teardown() + { + PTR_DEL( iSession ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestDecodeAnswer::ExecuteL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestDecodeAnswer::ExecuteL( CConsoleBase& aConsole ) + { + CNSPTestCreateOffer::ExecuteL( aConsole ); // BLOCKING until callback.(OfferReady) + + CTestConsoleStream* inStream = CTestConsoleStream::NewL(); + iSession->StoreInStream( inStream ); // ownership changed. + TNatReturnStatus status = iSession->DecodeAnswerL( *inStream ); + + if ( KNatAsync == status ) + { + __ASSERT( CNSPTestConsoleSession::EDecodeAnswer == iSession->State() ); + WAIT( aConsole, "ANSWER READY" ); + iAsyncService->StartScheduler(); // BLOCKING until callback(AnswerReady) + COMPLETED_L( aConsole, "ANSWER READY", iTimerStatus ); + } + + __ASSERT( CNSPTestConsoleSession::EIdle == iSession->State() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestResolve::NewLC +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestResolve* CNSPReleaseTest::CNSPTestResolve::NewLC( + CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPReleaseTest::CNSPTestResolve* self = + new ( ELeave ) CNSPReleaseTest::CNSPTestResolve( aApi, aRep ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestResolve::CNSPTestResolve +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestResolve::CNSPTestResolve( CNSPPlugin& aApi, CRepository& aRep ) + : CNSPTestNewSession( aApi, aRep ) + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestResolve::ConstructL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestResolve::ConstructL() + { + CNSPTestNewSession::ConstructL(); + } + + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestResolve::~CNSPTestResolve +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestResolve::~CNSPTestResolve() + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestResolve::SetupL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestResolve::SetupL() + { + iResult.iDescription.Copy( KResolve() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestResolve::Teardown +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestResolve::Teardown() + { + PTR_DEL( iSession ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestResolve::ExecuteL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestResolve::ExecuteL( CConsoleBase& aConsole ) + { + CNSPTestNewSession::ExecuteL( aConsole ); // BLOCKING until callback.(Initialized) + + CTestConsoleStream* inStream = CTestConsoleStream::NewL(); + iSession->StoreInStream( inStream ); // ownership changed. + CTestConsoleStream* outStream = CTestConsoleStream::NewL(); + iSession->StoreInStream( outStream ); // ownership changed. + + TNatReturnStatus status = iSession->ResolveL( *inStream, *outStream ); + + if ( KNatAsync == status ) + { + __ASSERT( CNSPTestConsoleSession::ECreateAnswer == iSession->State() ); + WAIT( aConsole, "ANSWER READY" ); + iAsyncService->StartScheduler(); // BLOCKING until callback(AnswerReady) + COMPLETED_L( aConsole, "ANSWER READY", iTimerStatus ); + + __ASSERT( CNSPTestConsoleSession::EDecodeOffer == iSession->State() ); + WAIT( aConsole, "OFFER READY" ); + iAsyncService->StartScheduler(); // BLOCKING until callback(OfferReady) + COMPLETED_L( aConsole, "OFFER READY", iTimerStatus ); + } + + __ASSERT( CNSPTestConsoleSession::EIdle == iSession->State() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestUpdate::NewLC +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestUpdate* CNSPReleaseTest::CNSPTestUpdate::NewLC( + CNSPPlugin& aApi, CRepository& aRep ) + { + CNSPReleaseTest::CNSPTestUpdate* self = + new ( ELeave ) CNSPReleaseTest::CNSPTestUpdate( aApi, aRep ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestUpdate::CNSPTestUpdate +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestUpdate::CNSPTestUpdate( CNSPPlugin& aApi, CRepository& aRep ) + : CNSPTestNewSession( aApi, aRep ) + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestUpdate::ConstructL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestUpdate::ConstructL() + { + CNSPTestNewSession::ConstructL(); + } + + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestUpdate::~CNSPTestUpdate +// ----------------------------------------------------------------------------- +// +CNSPReleaseTest::CNSPTestUpdate::~CNSPTestUpdate() + { + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestUpdate::SetupL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestUpdate::SetupL() + { + iResult.iDescription.Copy( KResolve() ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestUpdate::Teardown +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestUpdate::Teardown() + { + PTR_DEL( iSession ); + } + +// ----------------------------------------------------------------------------- +// CNSPReleaseTest::CNSPTestUpdate::ExecuteL +// ----------------------------------------------------------------------------- +// +void CNSPReleaseTest::CNSPTestUpdate::ExecuteL( CConsoleBase& aConsole ) + { + CNSPTestNewSession::ExecuteL( aConsole ); // BLOCKING until callback.(Initialized) + + CTestConsoleStream* inStream = CTestConsoleStream::NewL(); + iSession->StoreInStream( inStream ); // ownership changed. + CTestConsoleStream* outStream = CTestConsoleStream::NewL(); + iSession->StoreInStream( outStream ); // ownership changed. + + TNatReturnStatus status = iSession->ResolveL( *inStream, *outStream ); + + if ( KNatAsync == status ) + { + __ASSERT( CNSPTestConsoleSession::ECreateAnswer == iSession->State() ); + WAIT( aConsole, "ANSWER READY" ); + iAsyncService->StartScheduler(); // BLOCKING until callback(AnswerReady) + COMPLETED_L( aConsole, "ANSWER READY", iTimerStatus ); + + inStream = CTestConsoleStream::NewL(); + iSession->StoreInStream( inStream ); // ownership changed. + iSession->UpdateL( *inStream ); // TBD: ASSERT NO LEAVE + + __ASSERT( CNSPTestConsoleSession::EDecodeOffer == iSession->State() ); + WAIT( aConsole, "OFFER READY" ); + iAsyncService->StartScheduler(); // BLOCKING until callback(OfferReady) + COMPLETED_L( aConsole, "OFFER READY", iTimerStatus ); + } + + __ASSERT( CNSPTestConsoleSession::EIdle == iSession->State() ); + } +