Files
self bdaa292278 feat: add sender viewer metrics
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.
2026-05-14 19:00:12 +02:00

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"