Newer
Older
#!/usr/bin/env bash
set -euo pipefail
epoch=$((7*24*60*60))
ticks_per_packet=$((60*120))
time_to_live=$((3*$epoch))
buffer_size=$((3*7*24*60*60))
duty=300
run() {
local router=$1
local community=$2
local seed=$3
local shed=$4
--router "$router" \
--community "$community" \
--seed "$seed" \
--community-args \
"epoch=${epoch}" \
--trace "csv" \
--trace-args \
"path=shed/data/pp_${shed}_reduced.csv" \
--node-args \
"tick_time=${duty}" \
"buffer_size=${buffer_size}" \
--packet-args \
"ticks_per_packet=${ticks_per_packet}" \
"time_to_live=${time_to_live}" \
"start_delay=${epoch}"
echo 'done:' $@ >&2
}
nproc=$(nproc)
for seed in {1..10}; do
for router in direct epidemic; do
[[ "$(jobs | wc -l)" -ge "$nproc" ]] && wait -n
mkdir -p "logs/${router}"
run "$router" "none" "$seed" "$shed" > "logs/${router}/${shed}_${seed}.log" &
done
for router in bubble hcbf; do
for community in kclique louvain; do
[[ "$(jobs | wc -l)" -ge "$nproc" ]] && wait -n
mkdir -p "logs/${router}_${community}"
run "$router" "$community" "$seed" "$shed" > "logs/${router}_${community}/${shed}_${seed}.log" &
./util/runner_all_summary logs/*/*.log
# send slack notification if the script exists
status=$?
notify=$HOME/dev/slack-notifier/send_notification_via_slack.py
[[ -e "$notify" ]] && $notify "\`$shed done: exit($status)\`"