6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test 26 * @summary Checks that the jshdb debugd utility sucessfully starts 27 * and tries to attach to a running process 28 * @requires vm.hasSAandCanAttach 29 * @modules java.base/jdk.internal.misc 30 * @library /test/lib 31 * 32 * @run main/othervm SADebugDTest 33 */ 34 35 import java.util.concurrent.TimeUnit; 36 37 import jdk.test.lib.apps.LingeredApp; 38 import jdk.test.lib.JDKToolLauncher; 39 import static jdk.test.lib.process.ProcessTools.startProcess; 40 41 public class SADebugDTest { 42 43 private static final String GOLDEN = "Attaching to process"; 44 45 public static void main(String[] args) throws Exception { 46 LingeredApp app = null; 47 48 try { 49 app = LingeredApp.startApp(); 50 System.out.println("Started LingeredApp with pid " + app.getPid()); 51 52 JDKToolLauncher jhsdbLauncher = JDKToolLauncher.createUsingTestJDK("jhsdb"); 53 jhsdbLauncher.addToolArg("debugd"); 54 jhsdbLauncher.addToolArg("--pid"); 55 jhsdbLauncher.addToolArg(Long.toString(app.getPid())); 56 ProcessBuilder pb = new ProcessBuilder(jhsdbLauncher.getCommand()); 57 58 // The startProcess will block untl the 'golden' string appears in either process' stdout or stderr 59 // In case of timeout startProcess kills the debugd process 60 Process debugd = startProcess("debugd", pb, null, l -> l.contains(GOLDEN), 0, TimeUnit.SECONDS); 61 62 // If we are here, this means we have received the golden line and the test has passed 63 // The debugd remains running, we have to kill it 64 debugd.destroy(); 65 } finally { 66 if (app != null) { 67 LingeredApp.stopApp(app); 68 } 69 } 70 71 } 72 73 } | 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test 26 * @bug 8163805 8224252 27 * @summary Checks that the jshdb debugd utility sucessfully starts 28 * and tries to attach to a running process 29 * @requires vm.hasSAandCanAttach 30 * @requires os.family != "windows" 31 * @modules java.base/jdk.internal.misc 32 * @library /test/lib 33 * 34 * @run main/othervm SADebugDTest 35 */ 36 37 import java.util.concurrent.TimeUnit; 38 39 import jdk.test.lib.apps.LingeredApp; 40 import jdk.test.lib.JDKToolLauncher; 41 import static jdk.test.lib.process.ProcessTools.startProcess; 42 43 public class SADebugDTest { 44 45 private static final String GOLDEN = "Debugger attached"; 46 47 public static void main(String[] args) throws Exception { 48 LingeredApp app = null; 49 50 try { 51 app = LingeredApp.startApp(); 52 System.out.println("Started LingeredApp with pid " + app.getPid()); 53 54 JDKToolLauncher jhsdbLauncher = JDKToolLauncher.createUsingTestJDK("jhsdb"); 55 jhsdbLauncher.addToolArg("debugd"); 56 jhsdbLauncher.addToolArg("--pid"); 57 jhsdbLauncher.addToolArg(Long.toString(app.getPid())); 58 ProcessBuilder pb = new ProcessBuilder(jhsdbLauncher.getCommand()); 59 60 // The startProcess will block untl the 'golden' string appears in either process' stdout or stderr 61 // In case of timeout startProcess kills the debugd process 62 Process debugd = startProcess("debugd", pb, null, l -> l.contains(GOLDEN), 0, TimeUnit.SECONDS); 63 64 // If we are here, this means we have received the golden line and the test has passed 65 // The debugd remains running, we have to kill it 66 debugd.destroy(); 67 debugd.waitFor(); 68 } finally { 69 LingeredApp.stopApp(app); 70 } 71 72 } 73 74 } |