natplugins/natpnatfwsdpprovider/tsrc/testconsole/src/nspreleasetest.cpp
changeset 0 1bce908db942
--- /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 <e32base.h>
+#include <e32cons.h>
+#include <centralrepository.h>
+#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() );
+	}
+