diff -r 000000000000 -r b16258d2340f applayerprotocols/ftpengine/ftptest/FTPTST01.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/ftpengine/ftptest/FTPTST01.CPP Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,324 @@ +// Copyright (c) 1998-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: +// Author: Philippe Gabriel +// A simple test program which uses the statically linked dll "ftpprot.dll" +// +// + +// standard example header +#include +#include +#include +#include +#include "FTPTEST.H" +#include "DEBUG.H" + +TBuf8<1500> myBuffer; + +//#define __IPV6_TESTS__ +#define __IPV4_TESTS__ + +class TTest01Params + { +public: + void SetParams(const TDesC& aInetAddr, TUint aPort, const TDesC& aHostName, + const TPtrC8& aUserName, const TPtrC8& aPassword, + const TPtrC8& aDirectoryPath, const TPtrC8& aFileName); +public: + TInetAddr iInetAddr; + THostName iHostName; + TUint iPort; + TPtrC8 iUserName; + TPtrC8 iPassword; + TPtrC8 iDirectoryPath; + TPtrC8 iFileName; + }; + +void TTest01Params::SetParams(const TDesC& aInetAddr, TUint aPort, const TDesC& aHostName, + const TPtrC8& aUserName, const TPtrC8& aPassword, const TPtrC8& aDirectoryPath, + const TPtrC8& aFileName) + { + iInetAddr.Input(aInetAddr); + iInetAddr.SetPort(aPort); + iPort = aPort; + iHostName = aHostName; + iUserName.Set(aUserName); + iPassword.Set(aPassword); + iDirectoryPath.Set(aDirectoryPath); + iFileName.Set(aFileName); + } + +class CFtpTest01 : public CBase, public MFtpProtocolNotifier + { +public: + static CFtpTest01* NewL(); + ~CFtpTest01(); + void DoTest(); + void TestMain(); + void ServerPositiveAnswerNotification(const TOpComp aStatus); + void ServerXFerNotification(const TOpComp aStatus); + void ServerNegativeAnswerNotification(const TOpComp aStatus); + void ErrorNotification(const TOpComp aStatus); + void ServerMessage(const class TDesC8&); + +private: + void PasvTest(); + void ListTest(); + void RetrTest(); + void StorTest(); + void DeleTest(); + void MkdTest(); + + void StartScheduler(); + void StopSchedulerIfNecessary(); +private: + TBool iSchedulerStarted; + TTest01Params iParams; + CFtpProtocol* iCFtpProtocol; + TBool iErrorOccured; + }; + +CFtpTest01* CFtpTest01::NewL() + { + CFtpTest01* self = new(ELeave) CFtpTest01; + CleanupStack::PushL(self); + self->iCFtpProtocol = CFtpProtocol::NewL(self); + CleanupStack::Pop(self); + return self; + } + +CFtpTest01::~CFtpTest01() + { + delete iCFtpProtocol; + } + +void CFtpTest01::StartScheduler() + { + iSchedulerStarted=ETrue; + CActiveScheduler::Start(); + } + +void CFtpTest01::StopSchedulerIfNecessary() + { + if(iSchedulerStarted) + CActiveScheduler::Stop(); + iSchedulerStarted=EFalse; + } + +void CFtpTest01::ErrorNotification(const TOpComp aStatus) + { + FTPPROTDEBUG1(0xffff,_L("CFtpTest01::ErrorNotification called aStatus:%d\n"),aStatus); + (void) aStatus; + iErrorOccured = ETrue; + StopSchedulerIfNecessary(); + } + +void CFtpTest01::ServerPositiveAnswerNotification(const TOpComp aStatus) + { + FTPPROTDEBUG1(0xffff,_L("CFtpTest01::ServerPositiveAnswerNotification called aStatus:%d\n"),aStatus); + (void) aStatus; + StopSchedulerIfNecessary(); + } + +void CFtpTest01::ServerNegativeAnswerNotification(const TOpComp aStatus) + { + FTPPROTDEBUG1(0xffff,_L("CFtpTest01::ServerNegativeAnswerNotification called aStatus:%d\n"),aStatus); + (void) aStatus; + StopSchedulerIfNecessary(); + } + +void CFtpTest01::ServerXFerNotification(const TOpComp aStatus) + { + FTPPROTDEBUG1(0xffff,_L("CFtpTest01::ServerXFerNotification called aStatus:%d\n"),aStatus); + (void) aStatus; + StopSchedulerIfNecessary(); + } + +void CFtpTest01::ServerMessage(const class TDesC8& /*aMessage*/) + { + FTPPROTDEBUG(0xffff,_L("CFtpTest01::ServerMessage called\n")); + } + +LOCAL_C void doExampleL() + { + CActiveScheduler* exampleScheduler=new (ELeave) CActiveScheduler; + CleanupStack::PushL(exampleScheduler); + CActiveScheduler::Install(exampleScheduler); + +#ifdef __IPV4_TESTS__ + __FTPDebugConsole->Printf(_L("FTP Test 01 (Ipv4) \n\n")); +#else + __FTPDebugConsole->Printf(_L("FTP Test 01 (Ipv6) \n\n")); +#endif + + __FTPDebugConsole->Printf(_L("statically linked DLL example \n\n")); + + CFtpTest01* myTest01 = CFtpTest01::NewL(); + CleanupStack::PushL(myTest01); + myTest01->TestMain(); + CleanupStack::PopAndDestroy(myTest01); + + CleanupStack::PopAndDestroy(exampleScheduler); + } + +void CFtpTest01::TestMain() + { +#ifdef __IPV6_TESTS__ + iParams.SetParams(_L("2001:618:400:6a:2c0:4fff:fe8a:a918"), //params for snus6 + 21, _L("snus6.intra6"), _L8("karlm"), _L8("karlm"), + _L8("/usr/home/karlm"), _L8("test.cpp")); + DoTest(); + + iParams.SetParams(_L("2001:618:400:6a:210:5aff:febf:531"), //params for 6pack6 + 21, _L("6pack6.intra6"), _L8("anonymous"), _L8("karlm"), + _L8("/usr"), _L8("anything")); + DoTest(); +#endif + +#ifdef __IPV4_TESTS__ + iParams.SetParams(_L("207.46.133.140"), 21, _L("ftp.microsoft.com"), //params for ftp.micorsoft.com + _L8("anonymous"), _L8("philippe@symbian.com"), _L8("/peropsys"), + _L8("readme.txt")); + DoTest(); + + iParams.SetParams(_L("192.18.99.73"), 21, _L("ftp.sun.com"), //params for ftp.sun.com + _L8("anonymous"), _L8("philippe@symbian.com"), _L8("/pub"), + _L8("index.html")); + DoTest(); + +#endif +// TPtrC DNSName(_L("philippeg_nt")); +// TPtrC8 userName(_L8("phil")); + +// TPtrC8 passwd(_L8("phil")); + + +// TInetAddr myaddr(INET_ADDR(64,12,168,249),21);// ftp.netscape.com +// TPtrC DNSName(_L("ftp.netscape.com")); +// TPtrC userName(_L("anonymous")); +// TPtrC passwd(_L("philippe@symbian.com")); +// TInetAddr myaddr(INET_ADDR(209,77,154,25),21);// ftp.insignia.com (home of the braves) +// TPtrC DNSName(_L("ftp.insignia.com")); +// TPtrC8 userName(_L8("anonymous")); +// TPtrC8 passwd(_L8("philippe@symbian.com")); +// TPtrC directoryPath(_L("special/ntrigue/")); +// TPtrC fileName(_L("read5.txt")); +// +// TInetAddr myaddr(INET_ADDR(155,198,143,16),21);// ftp.radian.ee.ic.ac.uk +// TPtrC DNSName(_L("radian.ee.ic.ac.uk")); +// + __FTPDebugConsole->Printf(_L("Finished tests\n")); + } + +void CFtpTest01::DoTest() + { + iErrorOccured = EFalse; + iCFtpProtocol->Connect(iParams.iInetAddr); //Just do a normal connect. + StartScheduler(); + if(iErrorOccured) + return; + +//Removed temporarily due to problems with host resolution +// iCFtpProtocol->Quit(); +// StartScheduler(); + +// iCFtpProtocol->Connect(iParams.iHostName, iParams.iPort); //Now try using a host name to test resolver. +// StartScheduler(); +// if(iErrorOccured) +// return; + + iCFtpProtocol->Help(); + StartScheduler(); + iCFtpProtocol->User(iParams.iUserName); + StartScheduler(); + iCFtpProtocol->Pass(iParams.iPassword); + StartScheduler(); + + PasvTest(); + __FTPDebugConsole->Printf(_L("FTP PasvTest \n")); + + ListTest(); + __FTPDebugConsole->Printf(_L("FTP ListTest \n")); + + RetrTest(); + __FTPDebugConsole->Printf(_L("FTP RetrTest \n")); + + StorTest(); + __FTPDebugConsole->Printf(_L("FTP StorTest \n")); + + DeleTest(); + __FTPDebugConsole->Printf(_L("FTP DeleTest \n")); + + MkdTest(); + __FTPDebugConsole->Printf(_L("FTP MkdTest \n")); + +//QUIT// + + iCFtpProtocol->Quit(); + StartScheduler(); + } + + +void CFtpTest01::PasvTest() + { + iCFtpProtocol->Pasv(); + StartScheduler(); + } + +void CFtpTest01::ListTest() + { + iCFtpProtocol->Port(); + StartScheduler(); + iCFtpProtocol->RecvBuffer(&myBuffer); + iCFtpProtocol->List(iParams.iDirectoryPath); + StartScheduler(); + } + +void CFtpTest01::RetrTest() + { + iCFtpProtocol->Port(); + StartScheduler(); + iCFtpProtocol->Cwd(iParams.iDirectoryPath); + StartScheduler(); + iCFtpProtocol->RecvBuffer(&myBuffer); + iCFtpProtocol->Retr(iParams.iFileName); + StartScheduler(); + } + +void CFtpTest01::StorTest() + { + myBuffer = _L8("This is a test file:\n\ + Sous le Pont Mirabeau coule la Seine\n\ + et nos amours, faut il qu'il m'en souvienne\n\ + la joie venait toujours apres la peine\n"); + iCFtpProtocol->Port(); + StartScheduler(); + iCFtpProtocol->SendBuffer(&myBuffer); + iCFtpProtocol->Stor(_L8("ftptst01.txt")); + StartScheduler(); + } + +void CFtpTest01::DeleTest() + { + iCFtpProtocol->Dele(_L8("ftptst01.txt")); + StartScheduler(); + } + +void CFtpTest01::MkdTest() + { + iCFtpProtocol->Cwd(iParams.iDirectoryPath); + StartScheduler(); + iCFtpProtocol->Mkd(_L8("test")); + StartScheduler(); + }