-------------------------------------------------- | |
FakeFtpServer versus StubFtpServer | |
-------------------------------------------------- | |
FakeFtpServer or StubFtpServer? | |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
The <<MockFtpServer>> project includes two separate <mock> implementations of an FTP Server. Which one you | |
use is dependent on what kind of FTP scenario(s) you wish to simulate, and what level of control you need | |
over exact server replies. | |
* FakeFtpServer | |
~~~~~~~~~~~~~~~ | |
<<FakeFtpServer>> provides a high-level abstraction for an FTP Server and is suitable for most testing | |
and simulation scenarios. You define a filesystem (internal, in-memory) containing an arbitrary set of | |
files and directories. These files and directories can (optionally) have associated access permissions. | |
You also configure a set of one or more user accounts that control which users can login to the FTP server, | |
and their home (default) directories. The user account is also used when assigning file and directory | |
ownership for new files. | |
<<FakeFtpServer>> processes FTP client requests and responds with reply codes and reply messages | |
consistent with its configuration and the contents of its internal filesystem, including file and | |
directory permissions, if they have been configured. | |
<<FakeFtpServer>> can be fully configured programmatically or within a | |
{{{http://www.springframework.org/}Spring Framework}} or other dependency-injection container. | |
See the {{{./fakeftpserver-features.html}FakeFtpServer Features and Limitations}} page for more information on | |
which features and scenarios are supported. | |
* StubFtpServer | |
~~~~~~~~~~~~~~~ | |
<<StubFtpServer>> is a "stub" implementation of an FTP server. It supports the main FTP commands by | |
implementing command handlers for each of the corresponding low-level FTP server commands (e.g. RETR, | |
DELE, LIST). These <CommandHandler>s can be individually configured to return custom data or reply codes, | |
allowing simulation of a complete range of both success and failure scenarios. The <CommandHandler>s can | |
also be interrogated to verify command invocation data such as command parameters and timestamps. | |
<<StubFtpServer>> works out of the box with reasonable defaults, but can be fully configured programmatically | |
or within a {{{http://www.springframework.org/}Spring Framework}} or other dependency-injection container. | |
See the {{{./stubftpserver-features.html}StubFtpServer Features and Limitations}} page for more information on | |
which features and scenarios are supported. | |
* So, Which One Should I Use? | |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
In general, if your testing and simulation needs are pretty straightforward, then using <<FakeFtpServer>> is | |
probably the best choice. See the {{{./fakeftpserver-features.html}FakeFtpServer Features and Limitations}} page | |
for more information on which features and scenarios are supported. | |
Some reasons to use <<StubFtpServer>> include: | |
* If you need to simulate an FTP server scenario not supported by <<FakeFtpServer>>. | |
* You want to test a very specific and/or limited FTP scenario. In this case, the setup of the | |
<<StubFtpServer>> might be simpler -- you don't have to setup fake files and directories and user accounts. | |
* You are more comfortable with configuring and using the lower-level FTP server command reply codes and behavior. |