1 -------------------------------------------------- 2 FakeFtpServer versus StubFtpServer 3 -------------------------------------------------- 4 5FakeFtpServer or StubFtpServer? 6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7 8 The <<MockFtpServer>> project includes two separate <mock> implementations of an FTP Server. Which one you 9 use is dependent on what kind of FTP scenario(s) you wish to simulate, and what level of control you need 10 over exact server replies. 11 12* FakeFtpServer 13~~~~~~~~~~~~~~~ 14 15 <<FakeFtpServer>> provides a high-level abstraction for an FTP Server and is suitable for most testing 16 and simulation scenarios. You define a filesystem (internal, in-memory) containing an arbitrary set of 17 files and directories. These files and directories can (optionally) have associated access permissions. 18 You also configure a set of one or more user accounts that control which users can login to the FTP server, 19 and their home (default) directories. The user account is also used when assigning file and directory 20 ownership for new files. 21 22 <<FakeFtpServer>> processes FTP client requests and responds with reply codes and reply messages 23 consistent with its configuration and the contents of its internal filesystem, including file and 24 directory permissions, if they have been configured. 25 26 <<FakeFtpServer>> can be fully configured programmatically or within a 27 {{{http://www.springframework.org/}Spring Framework}} or other dependency-injection container. 28 29 See the {{{./fakeftpserver-features.html}FakeFtpServer Features and Limitations}} page for more information on 30 which features and scenarios are supported. 31 32* StubFtpServer 33~~~~~~~~~~~~~~~ 34 35 <<StubFtpServer>> is a "stub" implementation of an FTP server. It supports the main FTP commands by 36 implementing command handlers for each of the corresponding low-level FTP server commands (e.g. RETR, 37 DELE, LIST). These <CommandHandler>s can be individually configured to return custom data or reply codes, 38 allowing simulation of a complete range of both success and failure scenarios. The <CommandHandler>s can 39 also be interrogated to verify command invocation data such as command parameters and timestamps. 40 41 <<StubFtpServer>> works out of the box with reasonable defaults, but can be fully configured programmatically 42 or within a {{{http://www.springframework.org/}Spring Framework}} or other dependency-injection container. 43 44 See the {{{./stubftpserver-features.html}StubFtpServer Features and Limitations}} page for more information on 45 which features and scenarios are supported. 46 47* So, Which One Should I Use? 48~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 49 50 In general, if your testing and simulation needs are pretty straightforward, then using <<FakeFtpServer>> is 51 probably the best choice. See the {{{./fakeftpserver-features.html}FakeFtpServer Features and Limitations}} page 52 for more information on which features and scenarios are supported. 53 54 Some reasons to use <<StubFtpServer>> include: 55 56 * If you need to simulate an FTP server scenario not supported by <<FakeFtpServer>>. 57 58 * You want to test a very specific and/or limited FTP scenario. In this case, the setup of the 59 <<StubFtpServer>> might be simpler -- you don't have to setup fake files and directories and user accounts. 60 61 * You are more comfortable with configuring and using the lower-level FTP server command reply codes and behavior. 62