-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_benchmark.sh
More file actions
executable file
·71 lines (60 loc) · 1.88 KB
/
run_benchmark.sh
File metadata and controls
executable file
·71 lines (60 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env bash
#
# Coordinates the Kafka streamer with blocking and reactive Java applications
# for a defined duration each. Run from the project root.
#
# Usage: ./run_benchmark.sh [DURATION_SECONDS]
# DURATION_SECONDS: How long to run each Java app (default: 60)
#
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
DURATION="${1:-60}"
STREAMER_PID=""
cleanup() {
if [[ -n "$STREAMER_PID" ]] && kill -0 "$STREAMER_PID" 2>/dev/null; then
echo ""
echo "Stopping Kafka streamer (PID $STREAMER_PID)..."
kill -TERM "$STREAMER_PID" 2>/dev/null || true
wait "$STREAMER_PID" 2>/dev/null || true
fi
}
trap cleanup EXIT
# Ensure JARs are built
echo "Building applications..."
(cd blocking_java && mvn -q package -DskipTests)
(cd reactive_java && mvn -q package -DskipTests)
# Start Kafka streamer
echo ""
echo "Starting Kafka streamer (rate 1000 msg/s)..."
cd streamer
./stratux-simulator --rate 1000 &
STREAMER_PID=$!
cd ..
# Allow Kafka and streamer to initialize
echo "Waiting 10 seconds for Kafka and streamer to initialize..."
sleep 10
# Run blocking application
echo ""
echo "=== Running blocking application for ${DURATION} seconds ==="
java -jar blocking_java/target/blocking-java-adsb-processor-1.0.0.jar &
BLOCKING_PID=$!
sleep "$DURATION"
echo "Stopping blocking application..."
kill -TERM "$BLOCKING_PID" 2>/dev/null || true
wait "$BLOCKING_PID" 2>/dev/null || true
# Brief pause between runs
echo ""
echo "Pausing 5 seconds before reactive run..."
sleep 5
# Run reactive application
echo ""
echo "=== Running reactive application for ${DURATION} seconds ==="
java -jar reactive_java/target/reactive-java-adsb-processor-1.0.0.jar &
REACTIVE_PID=$!
sleep "$DURATION"
echo "Stopping reactive application..."
kill -TERM "$REACTIVE_PID" 2>/dev/null || true
wait "$REACTIVE_PID" 2>/dev/null || true
echo ""
echo "Benchmark complete."