#!/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 echo 'start:' $@ >&2 python main.py \ --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 shed in $@; do 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" & done done done done wait ./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)\`"