65 lines
1.8 KiB
Bash
65 lines
1.8 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
set -euo pipefail
|
||
|
|
||
|
RUN_TIME=${RUN_TIME:-20} # seconds
|
||
|
ITERATIONS=${ITERATIONS:-49}
|
||
|
BUILD_SCRIPT=${BUILD_SCRIPT:-"./build_run_copy.sh"}
|
||
|
TIMER_MODES=${TIMER_MODES:-"direct timed"}
|
||
|
THREADING_MODES=${THREADING_MODES:-"single multi"}
|
||
|
BOOSTS=${BOOSTS:-"1000 500 100 50 10"} # 1000 equals disabled, 500, 100, 50, 10
|
||
|
|
||
|
log() {
|
||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a batch_run.log
|
||
|
}
|
||
|
|
||
|
cleanup() {
|
||
|
log "Script interrupted or completed. Cleaning up..."
|
||
|
# Add any cleanup tasks here
|
||
|
}
|
||
|
trap cleanup EXIT INT TERM
|
||
|
|
||
|
# Check if build_run_copy.sh exists and is executable
|
||
|
if [[ ! -x "./build_run_copy.sh" ]]; then
|
||
|
log "ERROR: build_run_copy.sh not found or not executable"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
declare -g total_runs=$((2 * 2 * 50 + 5 * 2 * 2 * 50)) # 200 + 1000 = 1200
|
||
|
declare -g current_run=0
|
||
|
|
||
|
run_with_progress() {
|
||
|
current_run=$((current_run + 1))
|
||
|
log "Progress: $current_run/$total_runs - Running: $*"
|
||
|
if ! ./build_run_copy.sh "$@"; then
|
||
|
log "ERROR: Failed at run $current_run with args: $*"
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
run_test_suite() {
|
||
|
local scheduler=$1
|
||
|
local boost=$2
|
||
|
local time_mode=$3
|
||
|
local thread_mode=$4
|
||
|
|
||
|
# First run with rebuild
|
||
|
run_with_progress "$scheduler" "$thread_mode" "$time_mode" "$boost" "$RUN_TIME" false
|
||
|
|
||
|
# Subsequent runs without rebuild
|
||
|
for run in $(seq 1 $ITERATIONS); do
|
||
|
run_with_progress "$scheduler" "$thread_mode" "$time_mode" "$boost" "$RUN_TIME" true
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# Main execution starts here
|
||
|
for time_mode in $TIMER_MODES; do
|
||
|
for thread_mode in $THREADING_MODES; do
|
||
|
run_test_suite "ros" "1000" "$time_mode" "$thread_mode"
|
||
|
done
|
||
|
|
||
|
for boost in $BOOSTS; do
|
||
|
for thread_mode in $THREADING_MODES; do
|
||
|
run_test_suite "edf" "$boost" "$time_mode" "$thread_mode"
|
||
|
done
|
||
|
done
|
||
|
done
|