#!/bin/sh

clients='192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5'
server='192.168.1.1'
timeout='10'
keepalive_max='5'
uri='/test.html'
ports='80:tux 1080:x15 8080:apache 20080:ese'

bench_one ()
{
  # Must be in /etc/sudoers
  for i in $clients; do echo "$i" ; done | \
  /usr/sbin/rsh_parallel sudo rdate -s "$server"

  atstr=`date '+%s' --date '3 sec'`
  for i in $clients; do echo "$i" ; done | \
  sh -c \
  "( /usr/sbin/rsh_parallel /usr/sbin/eseclient server=$server at=$atstr $* )"
}

bench_port ()
{
  for kalen in `seq 1 $keepalive_max`; do
    out=`bench_one timeout=$timeout requests=$kalen $*`
    err=`echo "$out" | grep Error`
    res=`echo "$out" | grep 'Total Responses'`
    if [ -n "$err" ]; then
      echo "$err" 1>&2
    else
      # echo "$res"
      values=`echo "$res" | awk '{print $4;}'`
      restotal=0
      for i in $values; do
	restotal=$((restotal + i))
      done
      res_per_sec=$((restotal / timeout))
      echo "$kalen $res_per_sec"
    fi
  done
}


mkdir -p out

for i in $ports; do
  port=`echo $i | awk -F ':' '{print $1}'`
  name=`echo $i | awk -F ':' '{print $2}'`
  echo "$name : port $port" 1>&2
  bench_port port=$port uri=$uri > out/$name
done

if [ -f "out/Makefile" ]; then
  ( cd out; make )
fi

