applayerprotocols/ftpengine/ftptest/FTPTST01.CPP
changeset 0 b16258d2340f
--- /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 <e32base.h>
+#include <f32file.h>
+#include <in_sock.h>
+#include <ftpprot.h>
+#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();
+	}