crash_sender: disable uploading on test images

Not sure what has changed, but we're uploading crashes now for test images
when we don't want to.  When the channel in /etc/lsb-release is marked as
a test channel (which happens for all test images), exit early.

BUG=chromium:239862
TEST=passed vmtests (logging_CrashSender & logging_UserCrash)
TEST=`cbuildbot {arm,amd64,x86}-generic-full` pass

Change-Id: I4a35aaa34b590c575de639888ed8be68bc9608b6
Reviewed-on: https://gerrit.chromium.org/gerrit/51084
Reviewed-by: Chris Masone <cmasone@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/crash_reporter/crash_sender b/crash_reporter/crash_sender
old mode 100644
new mode 100755
index bb8d04f..6bebb6e
--- a/crash_reporter/crash_sender
+++ b/crash_reporter/crash_sender
@@ -155,6 +155,17 @@
   return 1
 }
 
+# Returns 0 if we should consider ourselves to be running on a test image.
+is_test_image() {
+  # If we're testing crash reporter itself, we don't want to special-case
+  # for test images.
+  is_crash_test_in_progress && return 1
+  case $(get_channel) in
+  test*) return 0;;
+  esac
+  return 1
+}
+
 # Returns 0 if the machine booted up in developer mode.
 is_developer_mode() {
   [ ${MOCK_DEVELOPER_MODE} -ne 0 ] && return 0
@@ -229,16 +240,25 @@
 }
 
 get_key_value() {
-  if ! grep -q "$2=" "$1"; then
-    echo "undefined"
-    return
+  local file=$1 key=$2 value
+
+  if [ -f "${file}" ]; then
+    # Return the first entry.  There shouldn't be more than one anyways.
+    value=$(awk -F= '/^'"${key}"'[[:space:]]*=/ { print $NF }' "${file}")
   fi
-  grep "$2=" "$1" | cut -d = -f 2-
+
+  echo "${value:-undefined}"
 }
 
 # Return the board name.
 get_board() {
-  echo $(get_key_value "/etc/lsb-release" "CHROMEOS_RELEASE_BOARD")
+  get_key_value "/etc/lsb-release" "CHROMEOS_RELEASE_BOARD"
+}
+
+# Return the channel name (sans "-channel" suffix).
+get_channel() {
+  get_key_value "/etc/lsb-release" "CHROMEOS_RELEASE_TRACK" |
+    sed 's:-channel$::'
 }
 
 # Return the hardware class or "undefined".
@@ -268,7 +288,9 @@
   local send_payload_size="$(stat --printf=%s "${report_payload}" 2>/dev/null)"
 
   local image_type
-  if is_developer_image; then
+  if is_test_image; then
+    image_type="test"
+  elif is_developer_image; then
     image_type="dev"
   elif [ ${FORCE_OFFICIAL} -ne 0 ]; then
     image_type="force-official"
@@ -476,6 +498,11 @@
     exit 1
   fi
 
+  if is_test_image; then
+    lecho "Exiting early due to test image."
+    exit 1
+  fi
+
   check_not_already_running
 
   for dependency in "${FIND}" "${METRICS_CLIENT}" \