Check device is setup correctly in cassandra lab.

Change-Id: Ic399624a2e130cac0cc2b02fcf63d2e181d7f6df
Reviewed-on: https://chromium-review.googlesource.com/453323
Commit-Ready: danny chan <dchan@chromium.org>
Tested-by: danny chan <dchan@chromium.org>
Reviewed-by: Tyler Reid <twreid@google.com>
diff --git a/provingground/firmware/labcheck.sh b/provingground/firmware/labcheck.sh
new file mode 100755
index 0000000..9d7a1b4
--- /dev/null
+++ b/provingground/firmware/labcheck.sh
@@ -0,0 +1,125 @@
+#!/bin/bash
+#
+# Copyright 2016 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.
+#
+# Usage Example:
+# cd ~/chromiumos; labcheck.sh chromeos1-row2-rack11-host1 buddy pool:stress3
+
+if [ ! -d chroot ]; then
+  echo "ERROR: You must run this script from your chromiumos directory."
+  exit 1
+fi
+if [ $# != 3 ]; then
+  echo "ERROR: Missing arguments"
+  echo "$0 hostname board_name stress_pool_label"
+  echo "Example: labcheck.sh chromeos1-row2-rack11-host1 buddy pool:stress3"
+  exit 1
+fi
+CHROOT=$(pwd)
+HOST=$1
+BOARD=$2
+STRESS_POOL=$3
+TMPFILE=/tmp/stresslab.out
+
+log()
+{
+  echo "$HOST:$BOARD:$STRESS_POOL  $*"
+}
+
+check_label()
+{
+  label_pat=$1
+
+  label=$(awk '/^'"$label_pat"'/{print $1}' $TMPFILE)
+  label_cnt=$(grep -c "^$label_pat" $TMPFILE)
+  if [ $label_cnt -gt 1 ]; then
+    log "ERROR: you have $label_cnt label ($label), expected one."
+    return
+  fi
+  if [ $label_cnt = 0 ]; then
+    log "ERROR: label $label_pat setup FAIL."
+    return 
+  fi
+  log "INFO: label $label_pat setup OK"
+}
+
+
+check_labels()
+{
+  ./src/third_party/autotest/files/cli/atest label list -m $HOST > $TMPFILE 2>/dev//null
+
+  check_label "$STRESS_POOL "
+  check_label "board:$BOARD "
+  check_label "servo "
+  log "INFO: atest label list -m $HOST:"
+  sed 's/^/    /g' $TMPFILE
+}
+
+
+check_ssh()
+{
+  RSA=~/.ssh/testing_rsa
+  sum_value=$(sum $RSA | awk '{print $1}')
+  if [ "$sum_value" -ne "30218" ]; then
+    log "WARNING: your $RSA file checksum mismatch."
+    log "WARNING: Please check that it is the same as $CHROOT/chromite/ssh_keys/testing_rsa"
+    return
+  fi
+  ssh -oBatchMode=yes root@$HOST pwd > /dev/null 2>&1
+  if [ $? -ne 0 ]; then
+    log "ERROR: ssh setup FAILED"
+    return 
+  fi
+  log "INFO: ssh setup OK"
+}
+
+check_rpm()
+{
+  cros_sdk ../third_party/autotest/files/contrib/manage_powerunit_info.py list -m $HOST > $TMPFILE
+  rpm_cnt=$(grep -c . $TMPFILE)
+  if [ $rpm_cnt -ne 1 ]; then
+    log "ERROR: RPM setup FAIL"
+    cat $TMPFILE
+    return
+  fi
+  log "INFO: RPM setup OK"
+}
+
+
+check_servo()
+{
+  sshcmd="ssh -oBatchMode=yes"
+  board=$($sshcmd root@${HOST}-servo ps -ef | grep servod  | sed 's/^.*--board //g' | awk '{print $1}' | sort -u)
+  if [ "$board" != "$BOARD" ]; then
+    log "ERROR: servo ${HOST}-servo setup FAIL (expects $BOARD, got $board)"
+    return
+  fi
+  log "INFO: servo ${HOST}-servo setup OK"
+}
+ 
+
+check_host()
+{
+  ssh -oBatchMode=yes root@$HOST pwd > /dev/null 2>&1
+  if [ $? -ne 0 ]; then
+    log "ERROR: $HOST connection setup FAIL"
+    return
+  fi
+  log "INFO: $HOST connection setup OK"
+
+}
+
+
+if [ ! -z "$STRESS_POOL" ]; then
+  check_labels
+fi
+check_ssh
+check_rpm
+check_servo
+check_host
+
+log "INFO: Auto check done"
+log "INFO: Press the reverify button in http://cautotest to verify your setup."
+log "INFO: Follow the 'Monitoriing your Setup' section in http://go/cassandra-lab doc."