test-socket-signal: add test/folder
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 24 Oct 2010 12:29:32 +0000 (15:29 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 24 Oct 2010 12:29:32 +0000 (15:29 +0300)
command_test is top script to start experiments; runs on
command station and starts clients on remote stations

Utils/test-socket-signal/test/command_test [new file with mode: 0755]

diff --git a/Utils/test-socket-signal/test/command_test b/Utils/test-socket-signal/test/command_test
new file mode 100755 (executable)
index 0000000..a682e73
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/bash
+
+if test $# -ne 3; then
+       echo "Usage: $0 type host1 host2" 1>&2
+       exit 1
+fi
+
+# toggle _DEBUG ("on"/"off") when necessary
+_DEBUG="on"
+
+experiment_type="$1"
+hostname1="$2"
+hostname2="$3"
+
+DEBUG()
+{
+       test "$_DEBUG" = "on" && $@
+}
+
+# convert host_id and veid to veth IP address in 10.0.0.0/8 network
+host_veid_to_eth_ip()
+{
+       host_id=$1
+       veid=$2
+       ip_part1=$(($veid / 100))
+       ip_part2=$(($veid % 100))
+       id=$(echo "$host_id" | awk '{printf "%d", $1;}')
+       echo "10.$ip_part1.$id.$ip_part2"
+}
+
+hostname_to_veth_ip()
+{
+       host=$1
+
+       veid=${host##*-}
+       tmp=${host%-*}
+       host_id=${tmp##*-}
+
+       host_veid_to_eth_ip $host_id $veid
+}
+
+
+run_remote()
+{
+       host=$1
+       port=$2
+
+       client_type="$3"
+       listen_port="$4"
+       buffer_size="$5"
+       frequency="$6"
+       remote_ip="$7"
+       remote_port="$8"
+       remote_buffer_size="$9"
+
+       ssh -n -p $port p2p@$host "nohup /home/p2p/signal-socket/local_run_$experiment_type $client_type $listen_port $buffer_size $frequency $remote_ip $remote_port $remote_buffer_size &"
+}
+
+# TODO: rsync
+
+base_host1=${hostname1%-*}.grid.pub.ro
+base_host2=${hostname2%-*}.grid.pub.ro
+ssh_port1=${hostname1##*-}22
+ssh_port2=${hostname2##*-}22
+
+DEBUG echo "host1: p2p@$base_host1:$ssh_port1"
+DEBUG echo "host2: p2p@$base_host2:$ssh_port2"
+
+leader_ip=$(hostname_to_veth_ip $hostname1)
+follower_ip=$(hostname_to_veth_ip $hostname2)
+
+DEBUG echo "leader_ip = $leader_ip"
+DEBUG echo "follower_ip = $follower_ip"
+
+DEBUG echo "running remote leader ..."
+run_remote $base_host1 $ssh_port1 "leader" $leader_port $leader_buffer_size $leader_frequency $follower_ip $follower_port $follower_buffer_size
+DEBUG echo "running remote follower ..."
+run_remote $base_host2 $ssh_port2 "follower" $follower_port $follower_buffer_size $follower_frequency $leader_ip $leader_port $leader_buffer_size