From: Razvan Deaconescu Date: Tue, 3 Aug 2010 12:45:23 +0000 (+0300) Subject: ControlScripts: add client_schedule.sh - script for scheduling clients; runs on test... X-Git-Tag: classic-scenario-config~8 X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=4c2698bf1d198a1d13febe5f654a7411c741b691;p=p2p-testing-infrastructure.git ControlScripts: add client_schedule.sh - script for scheduling clients; runs on test station/container --- diff --git a/ControlScripts/client_schedule.sh b/ControlScripts/client_schedule.sh new file mode 100755 index 0000000..538dbfe --- /dev/null +++ b/ControlScripts/client_schedule.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# +# 2010 Razvan Deaconescu, razvan.deaconescu@cs.pub.ro +# +# Schedule clients +# The script +# * starts/stops a client +# * manages when client completes + +if [ ! $# -le 3 ]; then + echo "usage: $0 client-type torrent-file periods" + exit 1 +fi + +# Read the global configuration variables +source ../ConfigFiles/globalconfig.txt + +client_type=$1 +torrent_file=$2 + +shift 2 +periods=$@ + +client_pid=0 + +declare start_time +declare stop_time +declare -a suspend_resume + +parse_periods() +{ + local tmp_array=($(echo "$periods" | sed 's/[,()]/ /g')) + start_time=${tmp_array[0]} + local len=${#tmp_array[@]} + + stop_time=${tmp_array[$(($len-1))]} + + for ((i = 1; i < $len-1; i++)); do + suspend_resume[$(($i - 1))]=${tmp_array[$i]} + done +} + +start_client() +{ + echo "starting client ..." +} + +stop_client() +{ + echo "stopping client ..." +} + +suspend_client() +{ + echo "suspending client ..." +} + +resume_client() +{ + echo "resuming client ..." +} + +to_sleep=${start_time} +sleep ${to_sleep} +start_client +old_time=${start_time} + +for ((i = 0; i < ${#suspend_resume[@]}; i += 2)); do + to_sleep=$((${suspend_resume[$i]} - ${old_time})) + sleep ${to_sleep} + suspend_client + old_time=${suspend_resume[$i]} + + to_sleep=$((${suspend_resume[$(($i+1))]} - ${old_time})) + sleep ${to_sleep} + resume_client + old_time=${suspend_resume[$(($i+1))]} +done + +to_sleep=$((${stop_time} - ${old_time})) +sleep ${to_sleep} +stop_client