A Python port of the Invisible Internet Project (I2P)
at main 92 lines 2.4 kB view raw
1#!/usr/bin/env bash 2# I2P Python Router — Integration Test Runner 3# 4# Builds the container, starts the pod, runs the test, collects logs. 5# Usage: ./run_test.sh [duration_seconds] 6# 7# Default duration: 10800 (3 hours) 8 9set -euo pipefail 10 11SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" 12PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" 13IMAGE_NAME="localhost/i2p-python-test:latest" 14POD_NAME="i2p-python-test" 15DATA_DIR="/tmp/i2p-integration-data" 16DURATION="${1:-10800}" 17LOG_FILE="${DATA_DIR}/integration-test.log" 18 19echo "=== I2P Python Router — Integration Test ===" 20echo "Project root: ${PROJECT_ROOT}" 21echo "Duration: ${DURATION}s ($(echo "scale=1; ${DURATION}/3600" | bc)h)" 22echo "Data dir: ${DATA_DIR}" 23echo "" 24 25# 1. Create data directory 26mkdir -p "${DATA_DIR}" 27 28# 2. Build container image 29echo "Building container image..." 30podman build \ 31 -t "${IMAGE_NAME}" \ 32 -f "${SCRIPT_DIR}/Containerfile" \ 33 "${PROJECT_ROOT}" 34 35echo "Image built: ${IMAGE_NAME}" 36 37# 3. Clean up any previous pod 38podman pod rm -f "${POD_NAME}" 2>/dev/null || true 39 40# 4. Start the pod with duration override 41echo "Starting pod..." 42podman play kube "${SCRIPT_DIR}/pod.yaml" 43 44# Override the test duration via env 45podman exec "${POD_NAME}-router" \ 46 env I2P_TEST_DURATION="${DURATION}" \ 47 python -m tests.integration.network_test \ 48 2>&1 | tee "${LOG_FILE}" & 49 50TEST_PID=$! 51 52echo "Test running (PID ${TEST_PID}), logs at: ${LOG_FILE}" 53echo "" 54echo "Monitor with:" 55echo " tail -f ${LOG_FILE}" 56echo " podman logs -f ${POD_NAME}-router" 57echo "" 58echo "Stop early with:" 59echo " kill ${TEST_PID}" 60echo " podman pod stop ${POD_NAME}" 61 62# 5. Wait for completion 63wait ${TEST_PID} 64EXIT_CODE=$? 65 66# 6. Collect results 67echo "" 68echo "=== Test Complete ===" 69echo "Exit code: ${EXIT_CODE}" 70 71if [ -f "${DATA_DIR}/test_results.json" ]; then 72 echo "" 73 echo "Results summary:" 74 python3 -c " 75import json, sys 76with open('${DATA_DIR}/test_results.json') as f: 77 r = json.load(f) 78print(f' Max peers: {r[\"max_peers\"]}') 79print(f' Sites resolved: {r[\"sites_resolved\"]}') 80print(f' Total polls: {r[\"total_polls\"]}') 81print(f' Duration: {r[\"duration_seconds\"]}s') 82" 83fi 84 85# 7. Cleanup 86echo "" 87echo "Cleaning up pod..." 88podman pod stop "${POD_NAME}" 2>/dev/null || true 89podman pod rm -f "${POD_NAME}" 2>/dev/null || true 90 91echo "Done. Data preserved at: ${DATA_DIR}" 92exit ${EXIT_CODE}