changeset 60762:cbdb35a487d6

8252403: rewrite serviceability/7170638/SDTProbesGNULinuxTest.sh to java Reviewed-by: sspitsyn, amenkov
author iignatyev
date Tue, 01 Sep 2020 12:25:10 -0700
parents 68a7defc6710
children d71f9854101c
files test/hotspot/jtreg/serviceability/7170638/SDTProbesGNULinuxTest.java test/hotspot/jtreg/serviceability/7170638/SDTProbesGNULinuxTest.sh
diffstat 2 files changed, 76 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/hotspot/jtreg/serviceability/7170638/SDTProbesGNULinuxTest.java	Tue Sep 01 12:25:10 2020 -0700
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2012, Red Hat, Inc.
+ * Copyright (c) 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
+ * @bug 7170638
+ * @summary Test SDT probes available on GNU/Linux when DTRACE_ENABLED
+ * @requires os.family == "linux"
+ *
+ * @library /test/lib
+ * @run driver SDTProbesGNULinuxTest
+ */
+
+import jdk.test.lib.Utils;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+import jtreg.SkippedException;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+public class SDTProbesGNULinuxTest {
+    public static void main(String[] args) throws Throwable {
+        {
+            var pb = ProcessTools.createJavaProcessBuilder(
+                    "-XX:+ExtendedDTraceProbes",
+                    "-version");
+            var oa = new OutputAnalyzer(pb.start());
+            // This test only matters when build with DTRACE_ENABLED.
+            if (oa.getExitValue() != 0) {
+                throw new SkippedException("Not build using DTRACE_ENABLED");
+            }
+        }
+
+        try (var libjvms = Files.walk(Paths.get(Utils.TEST_JDK))) {
+            libjvms.filter(p -> "libjvm.so".equals(p.getFileName().toString()))
+                   .map(Path::toAbsolutePath)
+                   .forEach(SDTProbesGNULinuxTest::testLibJvm);
+        }
+    }
+
+    private static void testLibJvm(Path libjvm) {
+        System.out.println("Testing " + libjvm);
+        // We could iterate over all SDT probes and test them individually
+        // with readelf -n, but older readelf versions don't understand them.
+        try {
+            ProcessTools.executeCommand("readelf", "-S", libjvm.toString())
+                        .shouldHaveExitValue(0)
+                        .stdoutShouldContain(".note.stapsd");
+        } catch (Throwable t) {
+            throw new Error(t);
+        }
+    }
+}
--- a/test/hotspot/jtreg/serviceability/7170638/SDTProbesGNULinuxTest.sh	Tue Sep 01 14:31:18 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-# 
-#  Copyright (c) 2012, Red Hat, Inc.
-#  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 SDTProbesGNULinuxTest.sh
-# @bug 7170638
-# @summary Test SDT probes available on GNU/Linux when DTRACE_ENABLED
-# @run shell SDTProbesGNULinuxTest.sh
-
-# This test only matters on GNU/Linux, others trivially PASS.
-OS=`uname -s`
-case "$OS" in
-  Linux )
-    ;;
-  *)
-    echo "Not testing on anything but GNU/Linux. PASSED"
-    exit 0;
-    ;;
-esac
-
-# Where is our java (parent) directory? 
-if [ "${TESTJAVA}" = "" ]; then
-  PARENT=$(dirname $(readlink -f $(which java)))
-  TESTJAVA=`dirname ${PARENT}`
-  echo "TESTJAVA directory not set, using " ${TESTJAVA}
-fi
-
-# This test only matters when build with DTRACE_ENABLED. 
-${TESTJAVA}/bin/java -XX:+ExtendedDTraceProbes -version
-if [ "$?" != "0" ]; then
-  echo "Not build using DTRACE_ENABLED. PASSED"
-  exit 0
-fi
-
-# Test all available libjvm.so variants
-for libjvm in $(find ${TESTJAVA} -name libjvm.so); do
-  echo "Testing ${libjvm}"
-  # Check whether the SDT probes are compiled in.
-  readelf -S ${libjvm} | grep '.note.stapsdt'
-  if [ "$?" != "0" ]; then
-    echo "Failed: ${libjvm} doesn't contain SDT probes."
-    exit 1
-  fi
-  # We could iterate over all SDT probes and test them individually
-  # with readelf -n, but older readelf versions don't understand them.
-done
-
-echo "Passed."
-exit 0