Add script to run JDWP tests against prebuilt libjdwp.so

The invocation to run the JDWP tests against the prebuilt/ libjdwp.so
was long and easy to mess up. In order to improve usability we added a
new script that will do it for you.

Bug: 62821960
Test: ./art/tools/run-prebuilt-libjdwp-tests.sh
Change-Id: Idfb9cf19dc50e34fc9ef53ee682ce1c3f86ca178
diff --git a/tools/run-prebuilt-libjdwp-tests.sh b/tools/run-prebuilt-libjdwp-tests.sh
new file mode 100755
index 0000000..46c2a15
--- /dev/null
+++ b/tools/run-prebuilt-libjdwp-tests.sh
@@ -0,0 +1,112 @@
+#!/bin/bash
+#
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+if [[ ! -d libcore ]];  then
+  echo "Script needs to be run at the root of the android tree"
+  exit 1
+fi
+
+source build/envsetup.sh >&/dev/null # for get_build_var, setpaths
+setpaths # include platform prebuilt java, javac, etc in $PATH.
+
+if [[ `uname` != 'Linux' ]];  then
+  echo "Script cannot be run on $(uname). It is Linux only."
+  exit 2
+fi
+
+jdwp_path=${ANDROID_JAVA_HOME}/jre/lib/amd64/libjdwp.so
+if [[ ! -f $jdwp_path ]];  then
+  echo "Unable to find prebuilts libjdwp.so! Did the version change from jdk8?"
+  exit 3
+fi
+
+args=("$@")
+debug="no"
+has_variant="no"
+has_mode="no"
+
+while true; do
+  if [[ $1 == "--debug" ]]; then
+    debug="yes"
+    shift
+  elif [[ "$1" == --mode=* ]]; then
+    has_mode="yes"
+    if [[ $1 != "--mode=host" ]];  then
+      # Just print out an actually helpful error message.
+      echo "Only host tests can be run against prebuilt libjdwp"
+      exit 4
+    fi
+    shift
+  elif [[ $1 == --variant=* ]]; then
+    has_variant="yes"
+    if [[ $1 != "--variant=x64" ]] && [[ $1 != "--variant=X64" ]];  then
+      # Just print out an actually helpful error message.
+      echo "Only 64bit runs can be tested against the prebuilt libjdwp!"
+      exit 5
+    fi
+    shift
+  elif [[ "$1" == "" ]]; then
+    break
+  else
+    shift
+  fi
+done
+
+if [[ "$has_mode" = "no" ]];  then
+  args+=(--mode=host)
+fi
+
+if [[ "$has_variant" = "no" ]];  then
+  args+=(--variant=X64)
+fi
+
+wrapper_name=""
+plugin=""
+if [[ "$debug" = "yes" ]];  then
+  wrapper_name=libwrapagentpropertiesd
+  plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmtid.so"
+else
+  wrapper_name=libwrapagentproperties
+  plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmti.so"
+fi
+wrapper=$ANDROID_HOST_OUT/lib64/${wrapper_name}.so
+
+if [[ ! -f $wrapper ]];  then
+  echo "need to build $wrapper to run prebuild-libjdwp-tests!"
+  echo "m -j40 ${wrapper/.so/}"
+  exit 6
+fi
+
+if [[ ! -f $plugin ]];  then
+  echo "jvmti plugin not built!"
+  exit 7
+fi
+
+props_path=$PWD/art/tools/libjdwp-compat.props
+expect_path=$PWD/art/tools/libjdwp_art_failures.txt
+
+function verbose_run() {
+  echo "$@"
+  env "$@"
+}
+
+verbose_run LD_LIBRARY_PATH="$(dirname $jdwp_path):$LD_LIBRARY_PATH" \
+            ./art/tools/run-jdwp-tests.sh                            \
+            "${args[@]}"                                             \
+            "-Xplugin:$plugin"                                       \
+            --agent-wrapper "${wrapper}"="${props_path}"             \
+            --jdwp-path "$jdwp_path"                                 \
+            --expectations "$expect_path"