1abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair/* 2abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * Copyright 2007 the original author or authors. 3abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * 4abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * Licensed under the Apache License, Version 2.0 (the "License"); 5abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * you may not use this file except in compliance with the License. 6abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * You may obtain a copy of the License at 7abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * 8abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * http://www.apache.org/licenses/LICENSE-2.0 9abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * 10abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * Unless required by applicable law or agreed to in writing, software 11abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * distributed under the License is distributed on an "AS IS" BASIS, 12abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * See the License for the specific language governing permissions and 14abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * limitations under the License. 15abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair */ 16abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismairpackage org.mockftpserver.core.server; 17abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 18abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismairimport org.apache.commons.net.ftp.FTPClient; 1940658190151b7ded3489ff89c301b470155c95f4chrismairimport org.mockftpserver.test.*; 2040658190151b7ded3489ff89c301b470155c95f4chrismairimport org.mockftpserver.test.AbstractTestCase; 21abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 22abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair/** 23abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * Abstract superclass for tests of AbstractFtpServer subclasses that require the server thread to be started. 24abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * 25abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * @author Chris Mair 26abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * @version $Revision$ - $Date$ 27abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair */ 2840658190151b7ded3489ff89c301b470155c95f4chrismairpublic abstract class AbstractFtpServer_StartTestCase extends AbstractTestCase { 29abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 30abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair private static final String SERVER = "localhost"; 31abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 32abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair private AbstractFtpServer ftpServer; 33abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 34abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair /** 35abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * Test the start() and stop() methods. Start the server and then stop it immediately. 36abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair */ 37abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair public void testStartAndStop() throws Exception { 38abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpServer.setServerControlPort(PortTestUtil.getFtpServerControlPort()); 39abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair assertEquals("started - before", false, ftpServer.isStarted()); 40abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 41abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpServer.start(); 42abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair Thread.sleep(200L); // give it some time to get started 43abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair assertEquals("started - after start()", true, ftpServer.isStarted()); 44abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair assertEquals("shutdown - after start()", false, ftpServer.isShutdown()); 45abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 46abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpServer.stop(); 47abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 48abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair assertEquals("shutdown - after stop()", true, ftpServer.isShutdown()); 49abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair } 50abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 51abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair /** 52abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair * Test setting a non-default port number for the StubFtpServer control connection socket. 53abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair */ 54abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair public void testCustomServerControlPort() throws Exception { 55abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair final int SERVER_CONTROL_PORT = 9187; 56abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 57abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpServer.setServerControlPort(SERVER_CONTROL_PORT); 58abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpServer.start(); 59abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 60abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair try { 61abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair FTPClient ftpClient = new FTPClient(); 62abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpClient.connect(SERVER, SERVER_CONTROL_PORT); 63abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair } 64abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair finally { 65abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpServer.stop(); 66abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair } 67abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair } 68abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 69abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair //------------------------------------------------------------------------- 70abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair // Test setup 71abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair //------------------------------------------------------------------------- 72abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 73abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair /** 7440658190151b7ded3489ff89c301b470155c95f4chrismair * @see org.mockftpserver.test.AbstractTestCase#setUp() 75abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair */ 76abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair protected void setUp() throws Exception { 77abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair super.setUp(); 78abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair ftpServer = createFtpServer(); 79abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair } 80abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 81abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair //------------------------------------------------------------------------- 82abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair // Abstract method declarations 83abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair //------------------------------------------------------------------------- 84abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 85abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair protected abstract AbstractFtpServer createFtpServer(); 86abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair 87abc66ab652b34d39ea5a00a75b1d7c7cc157a84fchrismair}