mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +00:00
Add GitHub Docker action for testing UDP and HTTP file transfers
The Dockerfile works when run locally. The GitHub action plumbing may or not work in this state.
This commit is contained in:
parent
a2eff88bcb
commit
de2b7cb187
5 changed files with 159 additions and 0 deletions
119
.github/actions/test-transfer-udp-http/entrypoint.sh
vendored
Executable file
119
.github/actions/test-transfer-udp-http/entrypoint.sh
vendored
Executable file
|
|
@ -0,0 +1,119 @@
|
|||
#!/bin/bash
|
||||
# IPv6 is unfortunately disabled by default in Docker
|
||||
# (see sysctl net.ipv6.conf.lo.disable_ipv6)
|
||||
|
||||
set -e
|
||||
|
||||
# Install programs and build dependencies
|
||||
|
||||
if command -v sudo; then
|
||||
SUDO="sudo "
|
||||
else
|
||||
SUDO=""
|
||||
fi
|
||||
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get install -y cmake libssl-dev screen rtorrent mktorrent
|
||||
|
||||
rtorrent -h
|
||||
|
||||
# Build and start tracker
|
||||
|
||||
if [[ -z "${GITHUB_WORKSPACE}" ]]; then
|
||||
cd "$HOME"
|
||||
|
||||
git clone https://github.com/greatest-ape/aquatic.git
|
||||
|
||||
cd aquatic
|
||||
else
|
||||
cd "$GITHUB_WORKSPACE"
|
||||
fi
|
||||
|
||||
cargo build --bin aquatic
|
||||
|
||||
echo "log_level = 'debug'
|
||||
|
||||
[network]
|
||||
address = '127.0.0.1:3000'" > http.toml
|
||||
./target/debug/aquatic http -c http.toml &
|
||||
|
||||
echo "[network]
|
||||
address = '127.0.0.1:3000'" > udp.toml
|
||||
screen -dmS aquatic-udp ./target/debug/aquatic udp -c udp.toml
|
||||
|
||||
# Setup directories
|
||||
|
||||
cd "$HOME"
|
||||
|
||||
mkdir seed
|
||||
mkdir leech
|
||||
mkdir torrents
|
||||
|
||||
# Create torrents
|
||||
|
||||
echo "http-test-ipv4" > seed/http-test-ipv4
|
||||
echo "udp-test-ipv4" > seed/udp-test-ipv4
|
||||
|
||||
mktorrent -p -o "torrents/http-ipv4.torrent" -a "http://127.0.0.1:3000/announce" "seed/http-test-ipv4"
|
||||
mktorrent -p -o "torrents/udp-ipv4.torrent" -a "udp://127.0.0.1:3000" "seed/udp-test-ipv4"
|
||||
|
||||
cp -r torrents torrents-seed
|
||||
cp -r torrents torrents-leech
|
||||
|
||||
# Start seeding client
|
||||
|
||||
echo "directory.default.set = $HOME/seed
|
||||
schedule2 = watch_directory,5,5,load.start=$HOME/torrents-seed/*.torrent" > ~/.rtorrent.rc
|
||||
|
||||
echo "Starting seeding client"
|
||||
screen -dmS rtorrent-seed rtorrent
|
||||
|
||||
sleep 10 # Give seeding rtorrent time to load its config file
|
||||
|
||||
# Start leeching client
|
||||
|
||||
echo "directory.default.set = $HOME/leech
|
||||
schedule2 = watch_directory,5,5,load.start=$HOME/torrents-leech/*.torrent" > ~/.rtorrent.rc
|
||||
|
||||
echo "Starting leeching client.."
|
||||
screen -dmS rtorrent-leech rtorrent
|
||||
|
||||
# Check for completion
|
||||
|
||||
HTTP_IPv4="Failed"
|
||||
UDP_IPv4="Failed"
|
||||
|
||||
i="0"
|
||||
|
||||
echo "Watching for finished files.."
|
||||
|
||||
while [ $i -lt 300 ]
|
||||
do
|
||||
if test -f "leech/http-test-ipv4"; then
|
||||
if grep -q "http-test-ipv4" "leech/http-test-ipv4"; then
|
||||
HTTP_IPv4="Ok"
|
||||
fi
|
||||
fi
|
||||
if test -f "leech/udp-test-ipv4"; then
|
||||
if grep -q "udp-test-ipv4" "leech/udp-test-ipv4"; then
|
||||
UDP_IPv4="Ok"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$HTTP_IPv4" = "Ok" ] && [ "$UDP_IPv4" = "Ok" ]; then
|
||||
break
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
|
||||
i=$[$i+1]
|
||||
done
|
||||
|
||||
echo "Waited for $i seconds"
|
||||
|
||||
echo "::set-output name=http_ipv4::$HTTP_IPv4"
|
||||
echo "::set-output name=udp_ipv4::$UDP_IPv4"
|
||||
|
||||
if [ "$HTTP_IPv4" != "Ok" ] || [ "$UDP_IPv4" != "Ok" ]; then
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Add table
Add a link
Reference in a new issue