Create a script to run the wifi_release suite.

Due to http://crbug.com/241416 suites cannot be run from the AFE.
This script will detect which devices are ready and queue the suite
to run.  Since there are a limited amount of machines, boards and
put into groups and only one in any group is required.  The script
will notify the user if no boards in a given group are available.

TEST=Manual
BUG=None

Change-Id: I71413f65264af1326a2f998a28258ac050e97b49
Reviewed-on: https://chromium-review.googlesource.com/183573
Reviewed-by: Kris Rambish <krisr@chromium.org>
Tested-by: Kris Rambish <krisr@chromium.org>
diff --git a/provingground/run_wifi_release_suite.sh b/provingground/run_wifi_release_suite.sh
new file mode 100755
index 0000000..0aae86c
--- /dev/null
+++ b/provingground/run_wifi_release_suite.sh
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -e
+
+BRANCH=$1
+BUILD=$2
+
+ATEST='../../../third_party/autotest/files/cli/atest'
+RUN_SUITE='../../../third_party/autotest/files/site_utils/run_suite.py'
+
+USAGE_STRING='Usage: ./run_wifi_release_suite.sh <branch number> <build number>'
+
+if [[ $# -eq 0  ||  -z $2 ]] ; then
+  echo $USAGE_STRING
+  exit
+fi
+
+# atheros_ar9300 on kernel 3.4
+list_1=(alex lumpy stumpy)
+
+# atheros_ar9462 on kernel 3.4
+list_2=(parrot butterfly)
+
+# atheros_ar9462 on kernel 3.8
+list_3=(link stout peppy falco)
+
+# marvell_88w8797_2x2 on kernel 3.8
+list_4=(snow spring)
+
+DESIRED_BOARDS=(list_1 list_2 list_3 list_4)
+
+return_available_hosts() {
+  OIFS='$IFS'
+  IFS=$'\n'
+
+  boards=("${!1}")
+
+  #TODO: Filter out stderr so the user doesn't see it.
+  for host in `$ATEST host list | grep wificell` ; do
+    IFS=$' '
+    local host_info=($host)
+    for board in ${boards[@]}; do
+      if [[ $board == ${host_info[3]} && ${host_info[1]} == 'Ready' ]] ; then
+        boards_to_run+=($board)
+      fi
+    done;
+    IFS=$'\n'
+  done;
+  IFS=$OIFS
+}
+
+boards_to_run=()
+
+for sub_list in ${DESIRED_BOARDS[@]} ; do
+  previous_count=${#boards_to_run[@]}
+
+  subst="$sub_list[@]"
+  list_items=(`echo "${!subst}"`)
+  return_available_hosts list_items[@]
+
+  current_count=${#boards_to_run[@]}
+  if [ $current_count -eq $previous_count ] ; then
+    echo 'No devices from '$sub_list' were available!'
+  fi
+
+done;
+
+#TODO: Remove duplicates from the list of boards_to_run
+
+results_folder='/tmp/wifi_release_R'$BRANCH'-'$BUILD'-'`date +%Y-%m-%d-%H-%M-%S`
+if [ -e $results_folder ] ; then
+  rm -rf $results_folder
+fi
+
+#TODO: Create a wifi_release_Rx-x.latest symn link
+mkdir $results_folder
+
+for board in ${boards_to_run[@]}; do
+  # Perform the conversion from autotest platform names to board build names
+  if [ $board == 'spring' ] ; then
+    board='daisy_spring'
+  elif [ $board == 'snow' ] ; then
+    board='daisy'
+  elif [ $board == 'alex' ] ; then
+    board='x86-alex'
+  fi
+
+  run_command=$RUN_SUITE' --build='$board'-release/R'$BRANCH'-'$BUILD
+  run_command+=' --pool=wificell --board='$board' --suite_name=wifi_release'
+
+  results_file=$results_folder'/'$board'.txt'
+
+  echo 'Running: '$board
+  eval $run_command &> $results_file &
+  disown %1
+
+done;
+
+echo 'Results can be seen in: '$results_folder