updatetesting.sh raw
1 #!/bin/bash
2 set -euo pipefail
3
4 # updatetesting.sh - Rebuild the relay and restart it. Smesh hot-reloads automatically.
5 #
6 # Requires localtesting.sh to have been run first.
7
8 TESTDIR="/tmp/orly-localtest"
9 PIDDIR="$TESTDIR/pids"
10 LOGDIR="$TESTDIR/logs"
11 BINARY="$TESTDIR/orly"
12 SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)"
13 REPODIR="$(cd "$SCRIPTDIR/.." && pwd)"
14
15 if [[ ! -f "$PIDDIR/relay.pid" ]]; then
16 echo "error: no local testing instance found"
17 echo "Run scripts/localtesting.sh first"
18 exit 1
19 fi
20
21 RELAY_PID=$(cat "$PIDDIR/relay.pid")
22
23 if ! kill -0 "$RELAY_PID" 2>/dev/null; then
24 echo "warning: relay process $RELAY_PID is not running"
25 echo "Will rebuild and start fresh"
26 fi
27
28 # Rebuild relay
29 echo "Building relay..."
30 cd "$REPODIR"
31 CGO_ENABLED=0 go build -o "$BINARY" ./cmd/orly
32 echo "Relay built: $BINARY"
33
34 # Kill relay process tree (launcher + all children)
35 if kill -0 "$RELAY_PID" 2>/dev/null; then
36 echo "Stopping relay (PID $RELAY_PID)..."
37 # Kill the entire process group spawned by the launcher
38 kill -- -"$RELAY_PID" 2>/dev/null || kill "$RELAY_PID" 2>/dev/null || true
39 # Wait for it to exit
40 for i in $(seq 1 10); do
41 if ! kill -0 "$RELAY_PID" 2>/dev/null; then
42 break
43 fi
44 sleep 0.5
45 done
46 # Force kill if still alive
47 if kill -0 "$RELAY_PID" 2>/dev/null; then
48 echo "Force killing relay..."
49 kill -9 -- -"$RELAY_PID" 2>/dev/null || kill -9 "$RELAY_PID" 2>/dev/null || true
50 fi
51 fi
52
53 if [[ -z "${SUPERUSER:-}" ]]; then
54 echo "error: SUPERUSER environment variable not set"
55 exit 1
56 fi
57
58 # Restart relay with same config
59 echo "Starting relay..."
60 ORLY_DATA_DIR="$TESTDIR/data" \
61 ORLY_PORT=3334 \
62 ORLY_LISTEN=127.0.0.1 \
63 ORLY_LOG_LEVEL=info \
64 ORLY_ADMINS="$SUPERUSER" \
65 ORLY_OWNERS="$SUPERUSER" \
66 ORLY_AUTH_REQUIRED=false \
67 ORLY_AUTH_TO_WRITE=false \
68 ORLY_LAUNCHER_DB_DRIVER=badger \
69 ORLY_LAUNCHER_DB_LISTEN=127.0.0.1:50061 \
70 ORLY_LAUNCHER_ACL_ENABLED=true \
71 ORLY_LAUNCHER_ACL_LISTEN=127.0.0.1:50062 \
72 ORLY_LAUNCHER_ACL_READY_TIMEOUT=600s \
73 ORLY_ACL_MODE=follows \
74 ORLY_DB_TYPE=grpc \
75 ORLY_GRPC_SERVER=127.0.0.1:50061 \
76 ORLY_ACL_TYPE=grpc \
77 ORLY_GRPC_ACL=127.0.0.1:50062 \
78 ORLY_NEGENTROPY_ENABLED=false \
79 ORLY_LAUNCHER_SYNC_NEGENTROPY_ENABLED=false \
80 ORLY_FOLLOW_LIST_FREQUENCY=1h \
81 ORLY_DB_BLOCK_CACHE_MB=256 \
82 ORLY_DB_INDEX_CACHE_MB=128 \
83 ORLY_QUERY_CACHE_DISABLED=false \
84 ORLY_QUERY_CACHE_SIZE_MB=64 \
85 ORLY_SERIAL_CACHE_PUBKEYS=50000 \
86 ORLY_SERIAL_CACHE_EVENT_IDS=200000 \
87 ORLY_GC_ENABLED=false \
88 ORLY_MAX_CONN_PER_IP=50 \
89 ORLY_QUERY_RESULT_LIMIT=256 \
90 ORLY_WEB_DISABLE=true \
91 "$BINARY" launcher > "$LOGDIR/relay.log" 2>&1 &
92
93 NEW_PID=$!
94 echo "$NEW_PID" > "$PIDDIR/relay.pid"
95
96 # Wait for relay to be ready
97 echo -n "Waiting for relay..."
98 for i in $(seq 1 30); do
99 if curl -s -o /dev/null http://127.0.0.1:3334 2>/dev/null; then
100 echo " ready"
101 break
102 fi
103 if ! kill -0 "$NEW_PID" 2>/dev/null; then
104 echo " failed (process exited)"
105 echo "Check logs: $LOGDIR/relay.log"
106 exit 1
107 fi
108 echo -n "."
109 sleep 1
110 done
111
112 echo "Relay updated and running (PID $NEW_PID)"
113