< prev index next >

test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/HelloDynamic.java

Print this page

        

*** 30,39 **** --- 30,43 ---- * @build Hello * @run driver ClassFileInstaller -jar hello.jar Hello * @run driver HelloDynamic */ + import java.io.IOException; + import java.net.ServerSocket; + import jtreg.SkippedException; + public class HelloDynamic extends DynamicArchiveTestBase { public static void main(String[] args) throws Exception { runTest(HelloDynamic::testDefaultBase); runTest(HelloDynamic::testCustomBase); }
*** 50,59 **** --- 54,87 ---- String baseArchiveName = getNewArchiveName("base"); dumpBaseArchive(baseArchiveName); doTest(baseArchiveName, topArchiveName); } + private static int jdwpPort = -1; + + private static String getJdwpOptions() throws Exception { + return "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=" + getJdwpPort(); + } + + public static int getJdwpPort() throws Exception { + if (jdwpPort == -1) { + jdwpPort = findFreePort(); + if (jdwpPort == -1) { + throw new SkippedException("Can not find available port for JDWP"); + } + } + return jdwpPort; + } + + private static int findFreePort() { + try (ServerSocket socket = new ServerSocket(0)) { + return socket.getLocalPort(); + } catch (IOException e) { + } + return -1; + } + private static void doTest(String baseArchiveName, String topArchiveName) throws Exception { String appJar = ClassFileInstaller.getJarPath("hello.jar"); String mainClass = "Hello"; dump2(baseArchiveName, topArchiveName, "-Xlog:cds",
*** 69,75 **** --- 97,117 ---- "-cp", appJar, mainClass) .assertNormalExit(output -> { output.shouldContain("Hello source: shared objects file") .shouldHaveExitValue(0); }); + + // Sanity test with JDWP options. + // Test with the default base archive should be sufficient. + if (baseArchiveName == null) { + run2(baseArchiveName, topArchiveName, + getJdwpOptions(), + "-Xlog:class+load", + "-Xlog:cds+dynamic=debug,cds=debug", + "-cp", appJar, mainClass) + .assertNormalExit(output -> { + output.shouldContain("Hello source: shared objects file") + .shouldHaveExitValue(0); + }); + } } }
< prev index next >