Create a new task runner
This commit is contained in:
parent
502880061b
commit
c153476e5c
1 changed files with 109 additions and 0 deletions
109
scripts/run-3
Executable file
109
scripts/run-3
Executable file
|
@ -0,0 +1,109 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
## EXPERIMENT RUNNER
|
||||||
|
# ex: sudo ./scripts/run-3 2 . orig-client 100 100 100, orig-client 100 100 100 . orig-server, orig-server
|
||||||
|
|
||||||
|
die() { echo "$*" 1>&2 ; exit 1; }
|
||||||
|
|
||||||
|
WAITFOR=2280 # 38min
|
||||||
|
|
||||||
|
# SPLIT CLIENT AND SERVER TARGETS
|
||||||
|
OLD_IFS=$IFS; IFS="."
|
||||||
|
read -a PARTS <<< "$@"
|
||||||
|
IFS=$OLD_IFS
|
||||||
|
[[ ${#PARTS[@]} == 3 ]] || die "Separate count, clients and servers experiments by starts. I expect 3 parts but got ${#PARTS[@]}"
|
||||||
|
|
||||||
|
# EXTRACT DATA
|
||||||
|
OLD_IFS=$IFS; IFS=","
|
||||||
|
read -a CONFIG <<< "${PARTS[0]}"
|
||||||
|
read -a CLIENT_TARGETS <<< "${PARTS[1]}"
|
||||||
|
read -a SERVER_TARGETS <<< "${PARTS[2]}"
|
||||||
|
IFS=$OLD_IFS
|
||||||
|
|
||||||
|
[[ ${#CLIENT_TARGETS[@]} == ${#SERVER_TARGETS[@]} ]] \
|
||||||
|
|| die "Same number of experiments is required. Got ${#CLIENT_TARGETS[@]} clients and ${#SERVER_TARGETS[@]} servers"
|
||||||
|
instances=${#CLIENT_TARGETS[@]}
|
||||||
|
REPEAT=${CONFIG[0]}
|
||||||
|
|
||||||
|
echo ":: Configuration Summary"
|
||||||
|
echo "repeat=$REPEAT"
|
||||||
|
for i in $(seq 0 $(expr $instances - 1)); do
|
||||||
|
echo " instance=$i - server=${SERVER_TARGETS[$i]} - client=${CLIENT_TARGETS[$i]}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ":: Clear Resources"
|
||||||
|
for i in $(seq 0 $(expr $instances - 1)); do
|
||||||
|
echo "clear $i"
|
||||||
|
docker container inspect donarxp_server_${i} > /dev/null 2>&1 && docker kill donarxp_server_${i}
|
||||||
|
docker container inspect donarxp_client_${i} > /dev/null 2>&1 && docker kill donarxp_client_${i}
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ":: Bootstrap"
|
||||||
|
echo "Create output folder..."
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
--user root \
|
||||||
|
-v `pwd`/out:/home/donar \
|
||||||
|
registry.gitlab.inria.fr/qdufour/donar \
|
||||||
|
chown -R `id -u`:`id -g` /home/donar
|
||||||
|
|
||||||
|
for i in $(seq 0 $(expr $instances - 1)); do
|
||||||
|
echo "Spawning container for instance=$i..."
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
-d \
|
||||||
|
--name "donarxp_server_${i}" \
|
||||||
|
-e HOME='/tmp' \
|
||||||
|
-v `pwd`/out:/home/donar \
|
||||||
|
registry.gitlab.inria.fr/qdufour/donar \
|
||||||
|
tor -f /etc/torrc
|
||||||
|
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
-d \
|
||||||
|
--name "donarxp_client_${i}" \
|
||||||
|
-e HOME='/tmp' \
|
||||||
|
-v `pwd`/out:/home/donar \
|
||||||
|
registry.gitlab.inria.fr/qdufour/donar \
|
||||||
|
tor -f /etc/torrc
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
echo ":: Start experiment..."
|
||||||
|
for j in $(seq 1 $REPEAT); do
|
||||||
|
run_fold=`mktemp -up . XXXXXXXXXXXXXXXX`
|
||||||
|
echo "start - batch_count=$j - id=$run_fold"
|
||||||
|
|
||||||
|
echo " reset containers"
|
||||||
|
for i in $(seq 0 $(expr $instances - 1)); do
|
||||||
|
docker exec donarxp_client_${i} sh -c 'killall --quiet -9 bash; killall --quiet -9 donar; killall --quiet -9 measlat; killall --quiet -9 udpecho; killall --quiet -9 torecho'
|
||||||
|
docker exec donarxp_server_${i} sh -c 'killall --quiet -9 bash; killall --quiet -9 donar; killall --quiet -9 measlat; killall --quiet -9 udpecho; killall --quiet -9 torecho'
|
||||||
|
done
|
||||||
|
|
||||||
|
echo " launch servers"
|
||||||
|
for i in $(seq 0 $(expr $instances - 1)); do
|
||||||
|
echo " instance=$i - exec=${SERVER_TARGETS[$i]}"
|
||||||
|
docker exec donarxp_server_$i ${SERVER_TARGETS[$i]} ${run_fold}-$i &
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
echo " launch clients"
|
||||||
|
|
||||||
|
(subshellpid=$BASHPID
|
||||||
|
(sleep $WAITFOR; echo " timeout"; kill -9 $subshellpid) &
|
||||||
|
(for i in $(seq 0 $(expr $instances - 1)); do
|
||||||
|
echo " instance=$i - exec=${CLIENT_TARGETS[$i]}"
|
||||||
|
docker exec donarxp_client_$i ${CLIENT_TARGETS[$i]} ${run_fold}-$i &
|
||||||
|
sleep 10
|
||||||
|
done; wait; echo " ok"; kill -9 $subshellpid)) 2>/dev/null
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ":: Clear Resources"
|
||||||
|
for i in $(seq 0 $(expr $instances - 1)); do
|
||||||
|
echo "clear $i"
|
||||||
|
docker kill "donarxp_server_${i}"
|
||||||
|
docker kill "donarxp_client_${i}"
|
||||||
|
done
|
Loading…
Reference in a new issue