diff -r 000000000000 -r b16258d2340f applayerprotocols/ftpengine/ftptest/FTPTST02.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/ftpengine/ftptest/FTPTST02.CPP Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,454 @@ +// 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 "DEBUG.H" +#include +#include +#include +#include +#include "FTPTEST.H" + +TBuf8<955> myBuffer8; +TBuf<2000> myBuffer; +TInt total; + +#define __CONSOLE_OUTPUT__ + +#define __FILERETR_TESTS__ +//#define __IPV4_TESTS__ +//#define __IPV6_TESTS__ + +class TFtpTest02Params + { +public: + void SetParams(const TDesC& aInetAddr, TUint aPort, const TDesC& aHostName, + const TDesC8& aUserName, const TDesC8& aPassword, const TDesC8& aDirectoryPath, + const TDesC8& aRemoteFileName, const TDesC& aLocalFileName); +public: + TInetAddr iInetAddr; + TUint iPort; + THostName iHostName; + TPtrC8 iUserName; + TPtrC8 iPassword; + TPtrC8 iDirectoryPath; + TPtrC8 iRemoteFileName; + TPtrC iLocalFileName; + }; + +void TFtpTest02Params::SetParams(const TDesC& aInetAddr, TUint aPort, const TDesC& aHostName, + const TDesC8& aUserName, const TDesC8& aPassword, const TDesC8& aDirectoryPath, + const TDesC8& aRemoteFileName, const TDesC& aLocalFileName) + { + iInetAddr.Input(aInetAddr); + iInetAddr.SetPort(aPort); + iPort=aPort; + iHostName=aHostName; + iUserName.Set(aUserName); + iDirectoryPath.Set(aDirectoryPath); + iPassword.Set(aPassword); + iRemoteFileName.Set(aRemoteFileName); + iLocalFileName.Set(aLocalFileName); + } + +// + +class CFtpTest02 : public CBase, public MFtpSessionNotifier + { +public: + static CFtpTest02* NewL(); + ~CFtpTest02(); + void DoTest(); + void TestMain(); + void StartScheduler(); + void StopSchedulerIfNecessary(); + + void Complete(void); + // Operation completed, more data to follow + void MoreData(void); + // Transfer Progress report + void TransferProgress(TUint aProgress); + // User canceled ongoing operation + void Cancel(void); + // Peer reset the connection + void ConnReset(void); + // Connection error + void ConnectionError(TOpComp aTConnectionError); + // FTP server does not implement the operation requested + void OperationNotSupported(void); + // Local File system error + void LocalFileSystemError(TOpComp aTLocalFileSystemError); + // Remote File system error + void RemoteFileSystemError(TOpComp aTRemoteFileSystemError); + // Not specified yet + void EUnknownError(); + // Message reported by server + void ServerMessage(const TDesC8&); + + void ListTest(); + void RestartTest(); + void FailedRetrievalTest(); + void FailedRetrievalTestOverwrite(); + void RetriveveTestOverwrite(); + void RenameTest(); + void DeleteFileTest(); + void StoreTest(); + void DirectoryTest(); + +protected: + CFtpTest02(); +private: + CFTPSession* iCFTPSession; + TFtpTest02Params iTestParams; + TBool iSchedulerStarted; + }; + +CFtpTest02* CFtpTest02::NewL() + { + CFtpTest02* self = new(ELeave) CFtpTest02(); + CleanupStack::PushL(self); + self->iCFTPSession = CFTPSession::NewL(self); + CleanupStack::Pop(self); + return self; + } + +CFtpTest02::CFtpTest02() +{} + +CFtpTest02::~CFtpTest02() + { + delete iCFTPSession; + } + +void CFtpTest02::StartScheduler() + { + iSchedulerStarted=ETrue; + CActiveScheduler::Start(); + } + +void CFtpTest02::StopSchedulerIfNecessary() + { + if(iSchedulerStarted) + CActiveScheduler::Stop(); + iSchedulerStarted=EFalse; + } + +void CFtpTest02::ServerMessage(const TDesC8& aMessage) + { + myBuffer.Copy(aMessage); +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(myBuffer); +#endif + + FTPPROTDEBUG(0xffff,myBuffer); + } + +void CFtpTest02::TransferProgress(TUint aProgress) + { + total += aProgress; +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Printf(_L("CFtpTest02::TransferProgress total:>%d< Packet:>%d<\n"),total,aProgress); +#endif + + FTPPROTDEBUG3(0xffff, _L("CFtpTest02::TransferProgress total:>%d< Packet:>%d<\n"),total,aProgress); + + } + +void CFtpTest02::Complete(void) + { +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(_L("CFtpTest02::Complete\n")); +#endif + + FTPPROTDEBUG(0xffff, _L("CFtpTest02::Complete\n")); + StopSchedulerIfNecessary(); + } + +void CFtpTest02::Cancel(void){} + +void CFtpTest02::ConnReset(void) + { +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(_L("CFtpTest02::ConnReset\n")); +#endif + + FTPPROTDEBUG(0xffff, _L("CFtpTest02::ConnReset\n")); + StopSchedulerIfNecessary(); + } + +void CFtpTest02::ConnectionError(TOpComp /*aTConnectionError*/) + { +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(_L("CFtpTest02::ConnectionError\n")); +#endif + + FTPPROTDEBUG(0xffff, _L("CFtpTest02::ConnectionError\n")); + StopSchedulerIfNecessary(); + } + +void CFtpTest02::OperationNotSupported(void){} + +void CFtpTest02::LocalFileSystemError(TOpComp /*aTLocalFileSystemError*/) + { +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(_L("CFtpTest02::LocalFileSystemError\n")); +#endif + + FTPPROTDEBUG(0xffff, _L("CFtpTest02::LocalFileSystemError\n")); + StopSchedulerIfNecessary(); + } + +void CFtpTest02::RemoteFileSystemError(TOpComp /*aTRemoteFileSystemError*/) + { + StopSchedulerIfNecessary(); +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(_L("CFtpTest02::RemoteFileSystemError\n")); +#endif + + FTPPROTDEBUG(0xffff, _L("CFtpTest02::RemoteFileSystemError\n")); + } + +void CFtpTest02::EUnknownError(void) + { +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(_L("Test02Notifier::EUnknownError\n")); +#endif + + FTPPROTDEBUG(0xffff, _L("Test02Notifier::EUnknownError\n")); + StopSchedulerIfNecessary(); + } + +void CFtpTest02::MoreData(void) + { +#ifdef __CONSOLE_OUTPUT__ + __FTPDebugConsole->Write(_L("CFtpTest02::Notification called EPacketReceived\n")); + __FTPDebugConsole->Write(_L("----------Packet from DTP Channel---------\n")); + __FTPDebugConsole->Write(myBuffer); + __FTPDebugConsole->Write(_L("\n----------End of Packet from DTP Channel---------\n")); +#endif + + FTPPROTDEBUG(0xffff,_L("CFtpTest02::Notification called EPacketReceived\n")); + FTPPROTDEBUG(0xffff,_L("----------Packet from DTP Channel---------\n")); + FTPPROTDEBUG(0xffff,myBuffer); + FTPPROTDEBUG(0xffff,_L("\n----------End of Packet from DTP Channel---------\n")); + + iCFTPSession->ListDirectory(_L8(""),myBuffer8); + return; + } + + + +LOCAL_C void doExampleL() + { + + CActiveScheduler* exampleScheduler=new (ELeave) CActiveScheduler; + CleanupStack::PushL(exampleScheduler); + CActiveScheduler::Install(exampleScheduler); + + CFtpTest02* myFtpTest02 = CFtpTest02::NewL(); + CleanupStack::PushL(myFtpTest02); + +#ifdef __IPV4_TESTS__ + __FTPDebugConsole->Printf(_L("FTP Test 02 Ipv4 \n\n")); +#else +#ifdef __FILERETR_TESTS__ + __FTPDebugConsole->Printf(_L("FTP Test 02 File retreive \n\n")); +#else + __FTPDebugConsole->Printf(_L("FTP Test 02 Ipv6 \n\n")); +#endif +#endif + + __FTPDebugConsole->Printf(_L("FTP Session client \n\n")); + + myFtpTest02->TestMain(); + + __FTPDebugConsole->Printf(_L("Finished test\n")); + + CleanupStack::PopAndDestroy(myFtpTest02); + CleanupStack::PopAndDestroy(exampleScheduler); + } + +void CFtpTest02::TestMain() + { +#ifdef __IPV4_TESTS__ + iTestParams.SetParams(_L("207.46.133.140"), 21, _L("ftp.microsoft.com"), //params for microsoft ftp site + _L8("anonymous"), _L8("philippe@symbian.com"), _L8("misc"), _L8("index.txt"), + _L("index.txt")); + DoTest(); + + iTestParams.SetParams(_L("192.18.99.73"), 21, _L("ftp.sun.com"), + _L8("anonymous"), _L8("karl.mcdowall@symbian.com"), _L8("/"), _L8("swec.dat"), + _L("swec.dat")); + DoTest(); +#endif + +#ifdef __FILERETR_TESTS__ + iTestParams.SetParams(_L("10.16.113.6"), 21, _L("ftp-images"), + _L8("roms"), _L8("integrator"), _L8("/"), _L8("psdagt_udeb.htm"), + _L("psdagt_udeb.htm")); + + iCFTPSession->Connect(iTestParams.iInetAddr,iTestParams.iUserName, //Login using passive mode + iTestParams.iPassword,CFTPSession::Epassive); + StartScheduler(); + + RetriveveTestOverwrite(); + FailedRetrievalTestOverwrite(); + FailedRetrievalTest(); + + iCFTPSession->Close(); + StartScheduler(); +#endif + +#ifdef __IPV6_TESTS__ + iTestParams.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"), _L("test.cpp")); + DoTest(); + + iTestParams.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"), _L("anything")); + DoTest(); +#endif + } + +void CFtpTest02::DoTest() + { +//Removed teporarily due to problem with host resolution +// iCFTPSession->Connect(iTestParams.iHostName,iTestParams.iUserName, //Login using hostname +// iTestParams.iPassword,CFTPSession::EActive,iTestParams.iPort); +// StartScheduler(); +// iCFTPSession->Close(); +// StartScheduler(); + + iCFTPSession->Connect(iTestParams.iInetAddr,iTestParams.iUserName, //Login using Active mode + iTestParams.iPassword,CFTPSession::EActive); + StartScheduler(); + iCFTPSession->Close(); + StartScheduler(); + + iCFTPSession->Connect(iTestParams.iInetAddr,iTestParams.iUserName, //Login using passive mode + iTestParams.iPassword,CFTPSession::Epassive); + StartScheduler(); + + iCFTPSession->ChangeDirectory(iTestParams.iDirectoryPath); //Move to appropriate directory. + StartScheduler(); + + ListTest(); + RetriveveTestOverwrite(); + FailedRetrievalTest(); + FailedRetrievalTestOverwrite(); + RenameTest(); + DeleteFileTest(); + StoreTest(); + RestartTest(); + DirectoryTest(); + + + iCFTPSession->Close(); + StartScheduler(); + + } + +void CFtpTest02::ListTest() + { + iCFTPSession->ListDirectory(_L8("."),myBuffer8); + StartScheduler(); + } + +void CFtpTest02::RestartTest() + { +// Note: Restart is a synchronous function + iCFTPSession->Restart(50000); + } + +void CFtpTest02::RetriveveTestOverwrite() + { + total =0; + iCFTPSession->Retrieve(iTestParams.iRemoteFileName,iTestParams.iLocalFileName, + CFTPSession::EOverwrite,CFTPSession::EBinary,CFTPSession::EStream); + StartScheduler(); + } + +void CFtpTest02::FailedRetrievalTest() + { + iCFTPSession->Retrieve(_L8("NoExist"),_L("NoExist"),CFTPSession::ENoOverwrite,CFTPSession::EBinary,CFTPSession::EStream); + StartScheduler(); + } + +void CFtpTest02::FailedRetrievalTestOverwrite() + { + iCFTPSession->Retrieve(_L8("NoExist"),iTestParams.iLocalFileName,CFTPSession::EOverwrite,CFTPSession::EBinary,CFTPSession::EStream); + StartScheduler(); + } + +void CFtpTest02::DeleteFileTest() + { + iCFTPSession->DeleteFile(iTestParams.iRemoteFileName); + StartScheduler(); + } + +void CFtpTest02::StoreTest() + { + iCFTPSession->Store(iTestParams.iLocalFileName,iTestParams.iRemoteFileName, + EFalse, CFTPSession::EBinary,CFTPSession::EStream); + StartScheduler(); + } + +void CFtpTest02::RenameTest() + { + iCFTPSession->RenameFile(iTestParams.iRemoteFileName, _L8("tempName")); + StartScheduler(); + iCFTPSession->RenameFile(_L8("tempName"), iTestParams.iRemoteFileName); + StartScheduler(); + } + +void CFtpTest02::DirectoryTest() + { + iCFTPSession->CreateDirectory(_L8("TestDir0")); + StartScheduler(); + iCFTPSession->DeleteDirectory(_L8("TestDir1")); + StartScheduler(); + } + +//Old IP4 ftp sites. Might be worth keeping as a record in case the ones currently being used +//stop working. +// +// TInetAddr myaddr(INET_ADDR(207,200,71,59),21);// ftp.netscape.com +// TPtrC DNSName(_L("ftp.netscape.com")); +// TPtrC userName(_L("anonymous")); +// TPtrC passwd(_L("philippe@symbian.com")); +// TPtrC directoryPath(_L("pub/communicator/extras/import/eudora")); +// TPtrC fileName(_L("Readme.txt")); +// +// TInetAddr myaddr(INET_ADDR(209,77,154,25),21);// ftp.insignia.com (home of the braves) +// TPtrC DNSName(_L("ftp.insignia.com")); +// TPtrC userName(_L("anonymous")); +// TPtrC passwd(_L("philippe@symbian.com")); +// TPtrC directoryPath(_L("special/ntrigue/")); +// TPtrC fileName(_L("read4a.txt")); +// +// TInetAddr myaddr(INET_ADDR(194,129,2,201),21);// sparky +// TPtrC DNSName(_L("sparky")); +// TPtrC userName(_L("philippe")); +// TPtrC passwd(_L("massilia")); +// TPtrC directoryPath(_L("ftptest")); +// TPtrC fileName(_L("testfile.bin")); +// TPtrC fileName(_L("map.gif")); +// TPtrC localFile(_L("motodemo.zip")); +//