#!/bin/bash
#
# Starts the telemetry_slave_scripts/vm_run_run_on_skps.sh script on all slaves.
#
# The script should be run from the cluster-telemetry-master GCE instance's
# /b/skia-repo/buildbot/cluster_telemetry/telemetry_master_scripts
# directory.
#
# Copyright 2013 Google Inc. All Rights Reserved.
# Author: rmistry@google.com (Ravi Mistry)

if [ $# -lt 6 ]; then
  echo
  echo "Usage: `basename $0` /tmp/test.lua" \
       "rmistry-2013-05-24.07-34-05 rmistry@google.com 1001"
  echo
  echo "The first argument is the local location of the Lua script."
  echo "The second argument is a unique run id (typically requester + timestamp)."
  echo "The third argument is the type of pagesets to create from the 1M list" \
       "Eg: All, Filtered, 100k, 10k, Deeplinks."
  echo "The fourth argument is the name of the directory where the chromium" \
       "build which will be used for this run is stored."
  echo "The fifth argument is the email address of the requester."
  echo "The sixth argument is the key of the appengine lua task."
  echo "The seventh argument is the local location of the Lua aggregator script.(optional)"
  echo
  exit 1
fi

LUA_SCRIPT_LOCAL_LOCATION=$1
RUN_ID=$2
PAGESETS_TYPE=$3
CHROMIUM_BUILD_DIR=$4
REQUESTER_EMAIL=$5
APPENGINE_KEY=$6
LUA_AGGREGATOR_LOCAL_LOCATION=$7

source ../config.sh

# Start the timer.
TIMER="$(date +%s)"

# Copy the local lua script to Google Storage.
LUA_SCRIPT_GS_LOCATION=gs://chromium-skia-gm/telemetry/lua-scripts/$RUN_ID.lua.txt
gsutil cp -a public-read $LUA_SCRIPT_LOCAL_LOCATION $LUA_SCRIPT_GS_LOCATION 

# Update buildbot.
gclient sync

LOGS_DIR=/b/storage/lua_logs
mkdir $LOGS_DIR

# Run vm_run_lua_on_skps.sh on all the slaves.
for SLAVE_NUM in $(seq 1 $NUM_SLAVES); do
  CMD="bash vm_run_lua_on_skps.sh $SLAVE_NUM $LUA_SCRIPT_GS_LOCATION $RUN_ID $PAGESETS_TYPE $CHROMIUM_BUILD_DIR"
  ssh -f -X -o UserKnownHostsFile=/dev/null -o CheckHostIP=no \
    -o StrictHostKeyChecking=no \
    -A -p 22 build${SLAVE_NUM}-m5 -- "source .bashrc; cd /b/skia-repo/buildbot/cluster_telemetry/telemetry_slave_scripts; $CMD > /tmp/lua_output.$RUN_ID.txt 2>&1"
done

# Check to see if all slaves are done
COMPLETED_COUNT=$( gsutil ls -l gs://chromium-skia-gm/telemetry/lua-outputs/*/${RUN_ID}.lua-output | grep -v TOTAL | wc -l )
while [ $COMPLETED_COUNT -lt $NUM_SLAVES ]; do
  echo "$COMPLETED_COUNT are done with the lua script, sleeping for 10 seconds."
  sleep 10
  COMPLETED_COUNT=$( gsutil ls -l gs://chromium-skia-gm/telemetry/lua-outputs/*/$RUN_ID.lua-output | grep -v TOTAL | wc -l )
done

# Copy everything locally and combine it into one file.
for SLAVE_NUM in $(seq 1 $NUM_SLAVES); do
  gsutil cp gs://chromium-skia-gm/telemetry/lua-outputs/slave$SLAVE_NUM/$RUN_ID.lua-output \
    $LOGS_DIR/$RUN_ID-$SLAVE_NUM.lua-output
  cat $LOGS_DIR/$RUN_ID-$SLAVE_NUM.lua-output >> $LOGS_DIR/$RUN_ID.lua-output
done

# Run the aggregator if specified.
if [ -n "$LUA_AGGREGATOR_LOCAL_LOCATION" ]; then
  cp $LOGS_DIR/$RUN_ID.lua-output /tmp/lua-output
  lua $LUA_AGGREGATOR_LOCAL_LOCATION &> $LOGS_DIR/$RUN_ID.lua-output

  # Copy the original slave output to Google Storage.
  gsutil cp -a public-read /tmp/lua-output \
    gs://chromium-skia-gm/telemetry/lua-outputs/consolidated-outputs/$RUN_ID.original-output.txt
  ORIGINAL_OUTPUT_LINK=https://storage.cloud.google.com/chromium-skia-gm/telemetry/lua-outputs/consolidated-outputs/$RUN_ID.original-output.txt
  ORIGINAL_OUTPUT_TXT="The pre-aggregated output is available <a href='$ORIGINAL_OUTPUT_LINK'>here</a>.<br/><br/>"
  rm /tmp/lua-output

  # Copy the aggregator file into Google Storage.
  gsutil cp -a public-read $LUA_AGGREGATOR_LOCAL_LOCATION \
    gs://chromium-skia-gm/telemetry/lua-outputs/consolidated-outputs/$RUN_ID.aggregator.txt
  AGGREGATOR_LINK=https://storage.cloud.google.com/chromium-skia-gm/telemetry/lua-outputs/consolidated-outputs/$RUN_ID.aggregator.txt
fi

# Copy the consolidated file into Google Storage.
gsutil cp -a public-read $LOGS_DIR/$RUN_ID.lua-output \
  gs://chromium-skia-gm/telemetry/lua-outputs/consolidated-outputs/$RUN_ID.lua-output.txt

# Delete all tmp files.
rm -rf $LOGS_DIR/$RUN_ID*
rm -rf /tmp/$RUN_ID*

# End the timer.
TIMER="$(($(date +%s)-TIMER))"

# Email results to the requester and admins (should be comma separated).
ADMINS=rmistry@google.com
OUTPUT_LINK=https://storage.cloud.google.com/chromium-skia-gm/telemetry/lua-outputs/consolidated-outputs/$RUN_ID.lua-output.txt
SCRIPT_LINK=https://storage.cloud.google.com/chromium-skia-gm/telemetry/lua-scripts/$RUN_ID.lua.txt
BOUNDARY=`date +%s|md5sum`
BOUNDARY=${BOUNDARY:0:32}
sendmail $REQUESTER_EMAIL,$ADMINS <<EOF
subject:Results of your Lua script run
to:$REQUESTER_EMAIL,$ADMINS
Content-Type: multipart/mixed; boundary=\"$BOUNDARY\";

This is a MIME-encapsulated message

--$BOUNDARY
Content-Type: text/html

<html>
  <head/>
  <body>
  Time taken for the <a href='$SCRIPT_LINK'>script</a> run: $TIMER seconds.<br/>
  The output of your script is available <a href='$OUTPUT_LINK'>here</a>.<br/>
  $ORIGINAL_OUTPUT_TXT
  You can schedule more runs <a href='https://skia-tree-status.appspot.com/skia-telemetry/lua_script'>here</a>.<br/><br/>
  Thanks!
  </body>
</html>

--$BOUNDARY--

EOF

# Mark this task as completed on AppEngine.
PASSWORD=`cat /b/skia-repo/buildbot/cluster_telemetry/telemetry_master_scripts/appengine_password.txt`
wget --post-data "key=$APPENGINE_KEY&lua_script_link=$SCRIPT_LINK&lua_output_link=$OUTPUT_LINK&lua_aggregator_link=$AGGREGATOR_LINK&password=$PASSWORD" "https://skia-tree-status.appspot.com/skia-telemetry/update_lua_task" -O /dev/null

