You've already forked tribes-plugin-sender
forked from tribes/tribes-plugin-template
bdaa292278
Track active Sender viewers from browser heartbeats and HLS IP fallback, filtering localhost access and exporting a low-cardinality plugin metric for Tribes rollups. Extend the Docker origin/edge E2E harness with VictoriaMetrics/vmagent scraping and assertions for live /metrics export plus compact rollup storage. Update docs for the host metrics path.
80 lines
2.3 KiB
Bash
Executable File
80 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
|
|
HOST_ROOT="${TRIBES_HOST_ROOT:-$ROOT_DIR/../tribes}"
|
|
HOST_ROOT="$(cd "$HOST_ROOT" && pwd -P)"
|
|
COMPOSE_FILE="$ROOT_DIR/test/e2e/compose.sender.yaml"
|
|
PROJECT="sender-e2e-$(date +%s)"
|
|
IMAGE_LINK="$ROOT_DIR/.sender-e2e-image"
|
|
|
|
export COMPOSE_PROJECT_NAME="$PROJECT"
|
|
export E2E_COMPOSE_FILE="$COMPOSE_FILE"
|
|
export SENDER_PLUGIN_ROOT="$ROOT_DIR"
|
|
export TRIBES_HOST_ROOT="$HOST_ROOT"
|
|
export TRIBES_SENDER_IMAGE="${TRIBES_SENDER_IMAGE:-tribes-sender-e2e:latest}"
|
|
|
|
cleanup() {
|
|
if [[ "${TRIBES_E2E_KEEP_RUNNING:-0}" == "1" ]]; then
|
|
echo "==> keeping sender e2e compose stack running"
|
|
else
|
|
docker compose -f "$COMPOSE_FILE" down -v || true
|
|
fi
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
command -v docker >/dev/null 2>&1 || {
|
|
echo "docker is required for sender e2e" >&2
|
|
exit 1
|
|
}
|
|
|
|
command -v ffmpeg >/dev/null 2>&1 || {
|
|
echo "ffmpeg is required on the host for sender e2e pushing" >&2
|
|
exit 1
|
|
}
|
|
|
|
if [[ "${SKIP_BUILD:-0}" != "1" ]]; then
|
|
echo "==> building sender e2e image"
|
|
image_path="$(
|
|
nix build --impure "$ROOT_DIR#senderDockerE2E" \
|
|
--override-input tribes "$HOST_ROOT" \
|
|
--no-write-lock-file \
|
|
--out-link "$IMAGE_LINK" \
|
|
--print-out-paths \
|
|
--no-link
|
|
)"
|
|
|
|
echo "==> loading image tarball: $image_path"
|
|
docker load < "$image_path"
|
|
else
|
|
echo "==> skipping image build (SKIP_BUILD=1)"
|
|
fi
|
|
|
|
echo "==> starting sender e2e databases and VictoriaMetrics"
|
|
docker compose -f "$COMPOSE_FILE" up -d db-origin db-edge vm-origin vm-edge
|
|
|
|
echo "==> migrating sender e2e databases"
|
|
docker compose -f "$COMPOSE_FILE" run --rm migrate-origin
|
|
docker compose -f "$COMPOSE_FILE" run --rm migrate-edge
|
|
|
|
echo "==> starting sender e2e nodes"
|
|
docker compose -f "$COMPOSE_FILE" up -d sender-origin sender-edge
|
|
|
|
echo "==> starting sender e2e metrics scrapers"
|
|
docker compose -f "$COMPOSE_FILE" up -d vmagent-origin vmagent-edge
|
|
|
|
echo "==> running sender e2e assertions"
|
|
set +e
|
|
mix run --no-start "$ROOT_DIR/scripts/sender_e2e_runner.exs"
|
|
E2E_STATUS=$?
|
|
set -e
|
|
|
|
if [[ "$E2E_STATUS" -ne 0 ]]; then
|
|
echo "sender docker e2e failed (exit $E2E_STATUS)"
|
|
docker compose -f "$COMPOSE_FILE" logs sender-origin sender-edge --tail=200 || true
|
|
exit "$E2E_STATUS"
|
|
fi
|
|
|
|
echo "sender docker e2e passed"
|