ControlScripts: add client_schedule.sh - script for scheduling clients; runs on test...
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Tue, 3 Aug 2010 12:45:23 +0000 (15:45 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Tue, 3 Aug 2010 12:45:23 +0000 (15:45 +0300)
ControlScripts/client_schedule.sh [new file with mode: 0755]

diff --git a/ControlScripts/client_schedule.sh b/ControlScripts/client_schedule.sh
new file mode 100755 (executable)
index 0000000..538dbfe
--- /dev/null
@@ -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