mirror of
https://github.com/azaion/detections.git
synced 2026-04-26 00:46:31 +00:00
This commit is contained in:
@@ -58,10 +58,36 @@ services:
|
||||
aliases:
|
||||
- detections
|
||||
|
||||
detections-jetson:
|
||||
profiles:
|
||||
- jetson
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: Dockerfile.jetson
|
||||
runtime: nvidia
|
||||
depends_on:
|
||||
- mock-loader
|
||||
- mock-annotations
|
||||
environment:
|
||||
LOADER_URL: http://mock-loader:8080
|
||||
ANNOTATIONS_URL: http://mock-annotations:8081
|
||||
JWT_SECRET: test-secret-e2e-only
|
||||
CLASSES_JSON_PATH: /app/classes.json
|
||||
volumes:
|
||||
- ./fixtures/classes.json:/app/classes.json:ro
|
||||
- ./fixtures:/media:ro
|
||||
- ./logs:/app/Logs
|
||||
shm_size: 512m
|
||||
networks:
|
||||
e2e-net:
|
||||
aliases:
|
||||
- detections
|
||||
|
||||
e2e-runner:
|
||||
profiles:
|
||||
- cpu
|
||||
- gpu
|
||||
- jetson
|
||||
build: .
|
||||
depends_on:
|
||||
- mock-loader
|
||||
|
||||
+31
-4
@@ -1,7 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
COMPOSE="docker compose -f docker-compose.test.yml --profile cpu"
|
||||
PROFILE="${E2E_PROFILE:-cpu}"
|
||||
case "$PROFILE" in
|
||||
cpu)
|
||||
DETECTIONS_SERVICE="detections"
|
||||
;;
|
||||
gpu)
|
||||
DETECTIONS_SERVICE="detections-gpu"
|
||||
;;
|
||||
jetson)
|
||||
DETECTIONS_SERVICE="detections-jetson"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: unsupported E2E_PROFILE=$PROFILE (expected: cpu, gpu, jetson)"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
COMPOSE="docker compose -f docker-compose.test.yml --profile $PROFILE"
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 <test_path> [pytest_args...]"
|
||||
@@ -11,27 +28,37 @@ usage() {
|
||||
echo " $0 tests/test_video.py::test_ft_p_10_frame_sampling_ac1 # run single test"
|
||||
echo " $0 tests/test_video.py -k 'frame_sampling' # run by keyword"
|
||||
echo ""
|
||||
echo "Environment:"
|
||||
echo " E2E_PROFILE=cpu|gpu|jetson compose profile to run (default: cpu)"
|
||||
echo ""
|
||||
echo "Flags -v -x -s are always included."
|
||||
exit 1
|
||||
}
|
||||
|
||||
[[ $# -lt 1 ]] && usage
|
||||
|
||||
$COMPOSE up -d --build detections
|
||||
$COMPOSE up -d --build "$DETECTIONS_SERVICE"
|
||||
echo "--- Waiting for detections service to become healthy..."
|
||||
for i in $(seq 1 60); do
|
||||
if $COMPOSE exec -T detections python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:8080/health')" 2>/dev/null; then
|
||||
if $COMPOSE exec -T "$DETECTIONS_SERVICE" python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:8080/health')" 2>/dev/null; then
|
||||
echo "--- Detections service is healthy"
|
||||
break
|
||||
fi
|
||||
if [[ "$i" == "60" ]]; then
|
||||
echo "ERROR: detections service did not become healthy"
|
||||
$COMPOSE logs "$DETECTIONS_SERVICE" --tail 100
|
||||
exit 1
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "--- Running: pytest $* -v -x -s --csv=/results/report.csv"
|
||||
set +e
|
||||
$COMPOSE run --rm --no-deps e2e-runner pytest "$@" -v -x -s --csv=/results/report.csv
|
||||
EXIT_CODE=$?
|
||||
set -e
|
||||
|
||||
echo "--- Test finished with exit code $EXIT_CODE"
|
||||
echo "--- Detections logs (last 100 lines):"
|
||||
$COMPOSE logs detections --tail 100
|
||||
$COMPOSE logs "$DETECTIONS_SERVICE" --tail 100
|
||||
exit $EXIT_CODE
|
||||
|
||||
Reference in New Issue
Block a user