8237798: rewrite vmTestbase/jit/tiered from shell to java

Reviewed-by: roland, neliasso
diff --git a/test/hotspot/jtreg/TEST.quick-groups b/test/hotspot/jtreg/TEST.quick-groups
index ce12d34..1723008 100644
--- a/test/hotspot/jtreg/TEST.quick-groups
+++ b/test/hotspot/jtreg/TEST.quick-groups
@@ -1785,7 +1785,7 @@
   vmTestbase/jit/t/t111/TestDescription.java \
   vmTestbase/jit/t/t112/TestDescription.java \
   vmTestbase/jit/t/t113/TestDescription.java \
-  vmTestbase/jit/tiered/TestDescription.java \
+  vmTestbase/jit/tiered/Test.java \
   vmTestbase/jit/verifier/VerifyInitLocal/VerifyInitLocal.java \
   vmTestbase/jit/verifier/VerifyMergeStack/VerifyMergeStack.java \
   vmTestbase/jit/wide/wide01/wide01.java \
diff --git a/test/hotspot/jtreg/vmTestbase/jit/tiered/Test.java b/test/hotspot/jtreg/vmTestbase/jit/tiered/Test.java
new file mode 100644
index 0000000..a12a64c
--- /dev/null
+++ b/test/hotspot/jtreg/vmTestbase/jit/tiered/Test.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+/*
+ * @test
+ *
+ * @summary converted from VM Testbase jit/tiered.
+ * VM Testbase keywords: [jit, quick]
+ * VM Testbase readme:
+ * Description
+ *     The test verifies that JVM prints tiered events with -XX:+PrintTieredEvents
+ *     for tiered compilation explicitly enabled with -XX:+TieredCompilation.
+ *     If tiered compilation is explicitly disabled the test verifies that there are no
+ *     output from PrintTieredEvents.
+ *
+ * @library /vmTestbase
+ *          /test/lib
+ * @run driver vmTestbase.jit.tiered.Test
+ */
+
+package vmTestbase.jit.tiered;
+
+import jtreg.SkippedException;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class Test {
+    private static String UNSUPPORTED_OPTION_MESSAGE = "-XX:TieredCompilation not supported in this VM";
+    private static String REGEXP = "^[0-9.]+: \\[compile level=\\d";
+    public static void main(String[] args) throws Exception {
+        {
+            System.out.println("TieredCompilation is enabled");
+            var pb = ProcessTools.createJavaProcessBuilder(true,
+                    "-XX:+TieredCompilation",
+                    "-XX:+PrintTieredEvents",
+                    "-version");
+            var output = new OutputAnalyzer(pb.start());
+            if (output.getStdout().contains(UNSUPPORTED_OPTION_MESSAGE)) {
+                throw new SkippedException(UNSUPPORTED_OPTION_MESSAGE);
+            }
+            output.shouldHaveExitValue(0)
+                  .stdoutShouldMatch(REGEXP);
+        }
+        {
+            System.out.println("TieredCompilation is disabled");
+            var pb = ProcessTools.createJavaProcessBuilder(true,
+                    "-XX:-TieredCompilation",
+                    "-XX:+PrintTieredEvents",
+                    "-version");
+            var output = new OutputAnalyzer(pb.start())
+                    .shouldHaveExitValue(0)
+                    .stdoutShouldNotMatch(REGEXP);
+        }
+    }
+}
diff --git a/test/hotspot/jtreg/vmTestbase/jit/tiered/TestDescription.java b/test/hotspot/jtreg/vmTestbase/jit/tiered/TestDescription.java
deleted file mode 100644
index 5ec3391..0000000
--- a/test/hotspot/jtreg/vmTestbase/jit/tiered/TestDescription.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-
-/*
- * @test
- *
- * @summary converted from VM Testbase jit/tiered.
- * VM Testbase keywords: [jit, quick]
- * VM Testbase readme:
- * Description
- *     The test verifies that JVM prints tiered events with -XX:+PrintTieredEvents
- *     for tiered compilation explicitly enabled with -XX:+TieredCompilation.
- *     If tiered compilation is explicitly disabled the test verifies that there are no
- *     output from PrintTieredEvents.
- *
- * @library /vmTestbase
- *          /test/lib
- * @run driver jdk.test.lib.FileInstaller . .
- * @run shell tieredTest.sh
- */
-
diff --git a/test/hotspot/jtreg/vmTestbase/jit/tiered/tieredTest.sh b/test/hotspot/jtreg/vmTestbase/jit/tiered/tieredTest.sh
deleted file mode 100644
index 7d3ce0d..0000000
--- a/test/hotspot/jtreg/vmTestbase/jit/tiered/tieredTest.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-JAVA_OPTS="$TESTJAVAOPTS $TESTVMOPTS"
-JAVA="$TESTJAVA/bin/java"
-
-log=output.txt
-tiered="off"
-
-if echo "$JAVA_OPTS" | grep "[-]XX:+TieredCompilation"; then
-    tiered="on"
-elif echo "$JAVA_OPTS" | grep "[-]XX:-TieredCompilation"; then
-    tiered="off"
-else
-    echo "TEST PASSED: TieredCompilation option is not specified. Nothing to test"
-    exit 0
-fi
-
-echo "Tiered is ${tiered}"
-
-$JAVA $JAVA_OPTS -XX:+PrintTieredEvents -version >$log 2>&1
-
-if grep "Client VM" $log; then
-    echo "TEST PASSED: Client VM. The test is useless"
-    exit 0
-fi
-
-if grep "TieredCompilation not supported in this VM" $log; then
-    echo "TEST PASSED: Non-tiered Server VM. The test is useless"
-    exit 0
-fi
-
-if ! egrep '^[0-9.]+: \[compile level=[0-9]' $log; then
-    if [ "${tiered}" == "on" ]; then
-        echo "TEST FAILED: No PrintTieredEvents output"
-        exit 2
-    else
-        echo "TEST PASSED: No events with TieredCompilation turned off"
-        exit 0
-    fi
-else
-    if [ "${tiered}" == "off" ]; then
-        echo "TEST FAILED: PrintTieredEvents output found but TieredCompilation is turned off"
-        exit 2
-    else
-        echo "TEST PASSED: PrintTieredEvents output found"
-        exit 0
-    fi
-fi