FluentFTP has an extensive automated test suite that includes unit tests for modules, and integration tests which test FluentFTP against many supported FTP servers using Docker containers to locally mount and configure these servers portably.
All credits for the development of our excellent integration test system go to Tommy Sørbråten, Michael Stiemke and Robin Rodricks.
FluentFTP.Tests
- XUnit test suite that performs:
FluentFTP.Dockers
- Dockerfiles for our customized FTP servers used by the test suite.
FluentFTP.Xunit
- Containerized FTP server management used by the test suite.
We have an extensive automated test suite that tests FluentFTP against these servers. We use docker to locally manage containerized FTP servers that are used for testing.
The supported servers are listed below.
Note: You don't need to download these projects manually, everything you need is in the FluentFTP repo.
Server Type Credits VsFTPd First-party Created by the FluentFTP team in this PR. Bftpd First-party Created by the FluentFTP team in this PR. ProFTPD First-party Created by the FluentFTP team in this PR. glFTPd First-party Created by the FluentFTP team in this PR. PureFTPd First-party Created by the FluentFTP team in this PR. Apache FTP First-party Created by the FluentFTP team in this PR. PyFtpdLib Third-party Created by Andrii Kohut.You can help! Please file an issue if you can develop or find docker images for more FTP servers!
How do I run the test suite?Build.bat
or Build.sh
script inside the FluentFTP.Dockers
folder to create the docker images. See below for tips.FluentFTP.Tests
project. It will automatically start and stop the docker FTP servers as required.How it works:
DockerFtpContainer
DockerFtpContainer
has a Build
method responsible for building a test container (DockerContainer
)DockerImage
and sets the default port binding for port 21Docker on Windows takes up a lot of space due to this issue. WSL2 virtual disks are "dynamic" .vhdx
images, which means they:
See this stackoverflow answer for more details.
If you're willing to wipe all of your docker data, open the Docker Desktop client, click the bug icon in the top bar, and then click Clean/Purge data.
Consider using docker builder prune --all -f
and docker image prune -f
commands. Although Docker tries to handle caching of build steps correctly, there are many cases where you would fare better when "starting from scratch". It is not so easy to convince Docker to forgo its cached layers, so use these commands when needed.
If you are using Docker Desktop, you can add the Disk Usage extension to clean up unused disk space.
What are the design philosophies behind the containerized servers?Our First-party images are all based on debian:bullseye-slim for consistancy and common behaviour and the Dockerfiles run bash
, have a common structure and lend themselves to modifications.
The builds for our First-party images contain a preliminary step that tries to identify the closest, most up to date and hi-bandwidth mirror for debian bullseye and sets that in the etc/apt/source.list
of the building step. If you have problems, disable that behaviour in the Dockerfiles and use the standard "http://deb.debian.org/debian" url for debian bullseye.
The docker build batch file will build all the available images:
Typically, these images will be built once, only the developers of such an image will value a speedy build process when they do many iterations. Be prepared for a very long running build process depending on the bandwidth of the source repo mirrors.
You might want to use "REM" to comment out images that you do not want to use or that you already have built. You might want to "totally rebuild" from scratch in some cases and you might want to see more explicit progress reports when building test images. Look up the possible options for docker build
and the possible commands to prune or delete existing caches or images.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4