Move activitypub automated test to run under a container

This commit is contained in:
Gabe Kangas
2026-03-30 12:32:04 -07:00
parent 5d4fcf9686
commit a2981903c2
7 changed files with 191 additions and 95 deletions
+44 -6
View File
@@ -1,14 +1,52 @@
#!/bin/bash
# Run the ActivityPub federation test
# Run the ActivityPub federation test inside a Docker container.
#
# Usage:
# ./run.sh # Run with 100 users
# USER_COUNT=50 ./run.sh # Run with 50 users
# KEEP_RUNNING=true ./run.sh # Keep servers running after test
# ./run.sh # Run federation test with 100 users
# ./run.sh test-follower-validation.sh # Run follower validation test
# USER_COUNT=50 ./run.sh # Run with 50 users
# KEEP_RUNNING=true ./run.sh # Keep servers running after test
#
# Prerequisites:
# Add to /etc/hosts: 127.0.0.1 owncast.local snac.local
# Docker must be installed and running.
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
exec "${SCRIPT_DIR}/test-federation.sh" "$@"
REPO_ROOT="$(git rev-parse --show-toplevel)"
IMAGE_NAME="owncast-ap-test"
echo "Building Docker image..."
docker build -t "${IMAGE_NAME}" "${SCRIPT_DIR}"
# Collect environment variables to pass through
ENV_ARGS=()
for var in USER_COUNT FOLLOW_DELAY KEEP_RUNNING CI PROXY_PORT SNAC_PORT OWNCAST_PORT CLEAR_SHARED_INBOX_PERCENT; do
if [[ -n "${!var}" ]]; then
ENV_ARGS+=("-e" "${var}=${!var}")
fi
done
# Always skip interactive prompts inside the container
ENV_ARGS+=("-e" "CI=true")
# Port-forward when KEEP_RUNNING is set so the user can access the services
EXTRA_ARGS=()
if [[ "${KEEP_RUNNING}" == "true" ]]; then
OWNCAST_PORT="${OWNCAST_PORT:-8080}"
PROXY_PORT="${PROXY_PORT:-8443}"
EXTRA_ARGS+=("-p" "${OWNCAST_PORT}:${OWNCAST_PORT}" "-p" "${PROXY_PORT}:${PROXY_PORT}")
fi
echo "Running test in Docker container..."
docker run --rm \
--add-host owncast.local:127.0.0.1 \
--add-host snac.local:127.0.0.1 \
-v "${REPO_ROOT}:/owncast" \
-v owncast-ap-test-gomod:/go/pkg/mod \
-v owncast-ap-test-gobuild:/root/.cache/go-build \
"${ENV_ARGS[@]}" \
"${EXTRA_ARGS[@]}" \
"${IMAGE_NAME}" \
"$@"