Skip to content
Snippets Groups Projects
all 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/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
    
    ./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)\`"