diff -r 000000000000 -r 1bce908db942 natfw/natfwconnectionmultiplexer/tsrc/muxtestconsole/src/muxtestconsole.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/natfw/natfwconnectionmultiplexer/tsrc/muxtestconsole/src/muxtestconsole.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,428 @@ +/* +* 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: Part of TestConsole application. +** Methods for the class CTestAppConsole +** +*/ + + + +#include +#include +#include +#include "muxtestconsole.h" +#include "testdefinitions.hrh" +#include "muxtestconsolestubs.h" +#include "multiplexerudptests.h" +#include "multiplexertcptests.h" + + + +//******************************************************************************* +// Method : CTestAppConsole::NewL() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +CTestAppConsole* CTestAppConsole::NewLC() + { + CTestAppConsole* self = new ( ELeave ) CTestAppConsole(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +//******************************************************************************* +// Method : CTestAppConsole::CTestAppConsole() +// Purpose : Constructor +// Parameters : +// Return Value: +//******************************************************************************* +CTestAppConsole::CTestAppConsole() + : CActive( EPriorityStandard ) + { + CActiveScheduler::Add( this ); + } + +//******************************************************************************* +// Method : CTestAppConsole::ConstructL() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::ConstructL() + + { + + iConsole = Console::NewL( KMainTitle, TSize(KConsFullScreen, KConsFullScreen) ); + this->DisplayConsoleMenuL( KTxtMainInstructions ); + } + +//******************************************************************************* +// Method : CTestAppConsole::~CTestAppConsole() +// Purpose : Destructor +// Parameters : +// Return Value: +//******************************************************************************* +CTestAppConsole::~CTestAppConsole() + { + Cancel(); + delete iConsole; + delete iInstruct; + delete iMux; + delete iMuxStub; + } + + + +//******************************************************************************* +// Method : CTestAppConsole::StartTesting() +// Purpose : start this AO +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::StartTesting() + { + DoRead(); + } + +//******************************************************************************* +// Method : CTestAppConsole::DoRead() +// Purpose : get the user's option and send request to scheduler +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::DoRead() + { + iConsole->Read( iStatus ); + SetActive(); + } + +//******************************************************************************* +// Method : CTestAppConsole::RunL() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::RunL() + { + // According to current test case and direct the user's command + // to proper command handler. + ProcessMainInput(); + } + +//******************************************************************************* +// Method : CTestAppConsole::DoCancel() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::DoCancel() + { + iConsole->ReadCancel(); + } + + +//******************************************************************************* +// Method : CTestAppConsole::DisplayConsoleMenu() +// Purpose : Display main or sub console menus for different test cases +// Parameters : TDesc &aInstructions +// Return Value: void +//******************************************************************************* + +void CTestAppConsole::DisplayConsoleMenuL( const TDesC &aInstructions ) + { + if ( iInstruct ) + { + delete iInstruct; + iInstruct = NULL; + } + + iInstruct = aInstructions.AllocL(); + iConsole->ClearScreen(); + iConsole->Write( *iInstruct ); + } + + +//******************************************************************************* +// Method : CTestAppConsole::ProcessMainInput() +// Purpose : Obtain user's option and decide which test case to run next. +// Parameters : +// Return Value: +//******************************************************************************* +void CTestAppConsole::ProcessMainInput() + { + TBuf<80> line; + GetStringFromConsole(line); + + if ( line.Length() > 0 ) + { + TChar inputChar = line[0]; + + TInt err( KErrNone ); + TBool testsRun( ETrue ); + switch( inputChar ) + { + case '1': + err = RunMuxUdpTests(); + break; + case '2': + err = RunMuxTcpTests(); + break; + case '3': + RunUdpAudioStreaming(); + break; + case '4': + StopUdpAudioStreaming(); + break; + case '0': + testsRun = EFalse; + CActiveScheduler::Stop(); + break; + default: + testsRun = EFalse; + DisplayMsg( KTxtWrongOption ); + break; + } + + if ( iAudioTest ) + { + iConsole->Printf( _L( "Audio test ongoing, Press 4 to stop\n" ) ); + } + else + { + if ( err ) + { + iConsole->Printf( _L("Some tests failed: %d, check logs\n"), err ); + RDebug::Print( _L("\nSome tests failed: %d, check logs\n"), err ); + } + else if ( testsRun ) + { + iConsole->Printf( _L( "ALL TESTS OK\n" ) ); + RDebug::Print( _L( "\nAll tests OK\n" ) ); + } + else + { + + } + } + + } + + // Ready to get next input option. + DoRead(); + } + + +//******************************************************************************* +// Method : CTestAppConsole::DisplayMsg() +// Purpose : Display testing message on screen +// Parameters : TDesC & +// Return Value: +//******************************************************************************* +void CTestAppConsole::DisplayMsg(const TDesC &aMsg) + { + iConsole->ClearScreen(); + iConsole->Write( *iInstruct ); + iConsole->Printf( KTxtLineBreak ); + iConsole->Printf( aMsg ); + iConsole->Printf( KTxtLineBreak ); + } + +//******************************************************************************* +// Method : CTestAppConsole::GetAddrFromConsole() +// Purpose : +// Parameters : +// Return Value: +//******************************************************************************* +TKeyCode CTestAppConsole::GetStringFromConsole( TDes &aAddr ) + { + // Get a line from console + TKeyCode input = EKeyNull; + const TInt start_pos = iConsole->WhereX(); + aAddr.Zero(); + + // loop until descriptor full or EKeyEnter or EKeyEscape entered + do { + // get one character + input = iConsole->Getch(); + // process it + if(input == EKeyBackspace || input == EKeyDelete) + { + // backspace or delete + if(iConsole->WhereX() > start_pos) + { + iConsole->SetPos(iConsole->WhereX() - 1); + iConsole->ClearToEndOfLine(); + if(aAddr.Length() > 0) + { + aAddr.SetLength(aAddr.Length() - 1); + } + } + } + else + { + // other than backspace or delete + TChar ch(input); + if(ch.IsPrint()) + { + aAddr.Append(ch); + iConsole->Printf(_L("%c"), input); + } + } + } + while(aAddr.Length() < aAddr.MaxLength() && input != EKeyEnter && input != EKeyEscape); + + DisplayMsg( KTxtLineBreak ); + return input; + } + + +//******************************************************************************* +// Method : CTestAppConsole::RunInterfaceTests() +// Purpose : Test the Mcc Interface functions +// Parameters : +// Return Value: System wide error code +//******************************************************************************* +// +TInt CTestAppConsole::RunMuxUdpTests() + { + TInt err( KErrNone ); + + TRAP( err, MccInterfacePreambleUdpL() ); + if ( KErrNone != err ) + { + iConsole->Printf( _L("TESTSETUP FAILED: %d\n"), err ); + RDebug::Print( _L("TESTSETUP FAILED: %d\n"), err ); + return err; + } + + CMultiplexerUdpTests* intTest = CMultiplexerUdpTests::NewL( *iConsole, + *iMux, *iMuxStub ); + CleanupStack::PushL( intTest ); + + + TRAP( err, intTest->DoRunUdpMuxtTests() ); + + CleanupStack::PopAndDestroy( intTest ); + MccInterfacePostamble(); + return err; + } + +//******************************************************************************* +// Method : CTestAppConsole::RunInterfaceTests() +// Purpose : Test the Mcc Interface functions +// Parameters : +// Return Value: System wide error code +//******************************************************************************* +// +TInt CTestAppConsole::RunMuxTcpTests() + { + TInt err( KErrNone ); + + TRAP( err, MccInterfacePreambleTcpL() ); + if ( KErrNone != err ) + { + iConsole->Printf( _L("TESTSETUP FAILED: %d\n"), err ); + RDebug::Print( _L("TESTSETUP FAILED: %d\n"), err ); + return err; + } + + CMultiplexerTcpTests* intTest = CMultiplexerTcpTests::NewL( *iConsole, + *iMux, *iMuxStub ); + CleanupStack::PushL( intTest ); + + + TRAP( err, intTest->DoRunTcpMuxTestsL() ); + + CleanupStack::PopAndDestroy( intTest ); + MccInterfacePostamble(); + return err; + } + +//******************************************************************************* +// Method : CTestAppConsole::RunUdpAudioStreaming() +//******************************************************************************* +// +void CTestAppConsole::RunUdpAudioStreaming() + { + iAudioTest = ETrue; + + TInt err( KErrNone ); + __UHEAP_MARK; + + TRAP( err, MccInterfacePreambleUdpL() ); + + iIntTest = CMultiplexerUdpTests::NewL( *iConsole, + *iMux, *iMuxStub ); + + + TRAP( err, iIntTest->TestUdpAudioStreamingL() ); + + //MccInterfacePostamble(); + //return err; + } + + //******************************************************************************* +// Method : CTestAppConsole::StopUdpAudioStreaming() +//******************************************************************************* +// +void CTestAppConsole::StopUdpAudioStreaming() + { + iAudioTest = EFalse; + delete iIntTest; + MccInterfacePostamble(); + __UHEAP_MARKEND; + } + +// --------------------------------------------------------------------------- +// CTestAppConsole::MccInterfacePreambleL +// +// --------------------------------------------------------------------------- +// +void CTestAppConsole::MccInterfacePreambleUdpL() + { + iMuxStub = CMuxTestConsoleStubs::NewL(); + __UHEAP_MARK; + iMux = CNcmConnectionMultiplexer::NewL( *iMuxStub ); + }; + + // --------------------------------------------------------------------------- +// CTestAppConsole::MccInterfacePreambleL +// +// --------------------------------------------------------------------------- +// +void CTestAppConsole::MccInterfacePreambleTcpL() + { + iMuxStub = CMuxTestConsoleStubs::NewL(); + __UHEAP_MARK; + iMux = CNcmConnectionMultiplexer::NewL( *iMuxStub ); + }; + +// --------------------------------------------------------------------------- +// CTestAppConsole::MccInterfacePostamble +// +// --------------------------------------------------------------------------- +// +void CTestAppConsole::MccInterfacePostamble() + { + + delete iMux; + iMux = NULL; + __UHEAP_MARKEND; + + delete iMuxStub; + iMuxStub = NULL; + } +