#!/bin/bash

# Get the IP addresses
p0addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' prac_p0)
p1addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' prac_p1)

# Gather options and arguments
opts=""
while getopts paot:ex arg; do
    opts+=" -${arg} ${OPTARG}"
done
shift $((OPTIND-1))

echo ===== Running prac $opts -- $*
date "+===== Start %s %F %T"

# Run, saving the output
savefile0=$$.p0.out
savefile1=$$.p1.out
savefile2=$$.p2.out
docker exec -w /root/prac prac_p0 bash -c "$PRAC_NUMA_P0 stdbuf -o 0 ./prac $opts 0 $* > $savefile0" &
docker exec -w /root/prac prac_p1 bash -c "$PRAC_NUMA_P1 stdbuf -o 0 ./prac $opts 1 $p0addr $* > $savefile1" &
docker exec -w /root/prac prac_p2 bash -c "$PRAC_NUMA_P2 stdbuf -o 0 ./prac $opts 2 $p0addr $p1addr $* > $savefile2" &
wait
echo ===== P0 output
docker exec -w /root/prac prac_p0 cat $savefile0
docker exec -w /root/prac prac_p0 rm -f $savefile0
echo ===== P1 output
docker exec -w /root/prac prac_p1 cat $savefile1
docker exec -w /root/prac prac_p1 rm -f $savefile1
echo ===== P2 output
docker exec -w /root/prac prac_p2 cat $savefile2
docker exec -w /root/prac prac_p2 rm -f $savefile2
date "+===== End %s %F %T"
