< prev index next >

test/hotspot/jtreg/runtime/cds/appcds/aotClassLinking/BulkLoaderTest.java

Print this page
*** 29,47 ***
  /*
   * @test id=static
   * @requires vm.cds.supports.aot.class.linking
   * @comment work around JDK-8345635
   * @requires !vm.jvmci.enabled
!  * @library /test/jdk/lib/testlibrary /test/lib
   * @build InitiatingLoaderTester BadOldClassA BadOldClassB
!  * @build BulkLoaderTest
   * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar BulkLoaderTestApp.jar BulkLoaderTestApp MyUtil InitiatingLoaderTester
   *                 BadOldClassA BadOldClassB
   * @run driver BulkLoaderTest STATIC
   */
  
  /*
   * @test id=dynamic
   * @requires vm.cds.supports.aot.class.linking
   * @comment work around JDK-8345635
   * @requires !vm.jvmci.enabled
!  * @library /test/jdk/lib/testlibrary /test/lib
   * @build InitiatingLoaderTester BadOldClassA BadOldClassB
!  * @build jdk.test.whitebox.WhiteBox BulkLoaderTest
   * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar BulkLoaderTestApp.jar BulkLoaderTestApp MyUtil InitiatingLoaderTester
   *                 BadOldClassA BadOldClassB
   * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
   * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. BulkLoaderTest DYNAMIC
   */
  
  /*
   * @test id=aot
   * @requires vm.cds.supports.aot.class.linking
   * @comment work around JDK-8345635
   * @requires !vm.jvmci.enabled
!  * @library /test/jdk/lib/testlibrary /test/lib
   * @build InitiatingLoaderTester BadOldClassA BadOldClassB
!  * @build BulkLoaderTest
   * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar BulkLoaderTestApp.jar BulkLoaderTestApp MyUtil InitiatingLoaderTester
   *                 BadOldClassA BadOldClassB
   * @run driver BulkLoaderTest AOT
   */
  
  import java.io.File;
  import java.lang.StackWalker.StackFrame;
  import java.util.List;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  import java.util.stream.Collectors;
  import java.util.Set;
--- 29,55 ---
  /*
   * @test id=static
   * @requires vm.cds.supports.aot.class.linking
   * @comment work around JDK-8345635
   * @requires !vm.jvmci.enabled
!  * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds/test-classes
   * @build InitiatingLoaderTester BadOldClassA BadOldClassB
!  * @build BulkLoaderTest SimpleCusty
   * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar BulkLoaderTestApp.jar BulkLoaderTestApp MyUtil InitiatingLoaderTester
   *                 BadOldClassA BadOldClassB
+  * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar cust.jar
+  *                 SimpleCusty
   * @run driver BulkLoaderTest STATIC
   */
  
  /*
   * @test id=dynamic
   * @requires vm.cds.supports.aot.class.linking
   * @comment work around JDK-8345635
   * @requires !vm.jvmci.enabled
!  * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds/test-classes
   * @build InitiatingLoaderTester BadOldClassA BadOldClassB
!  * @build jdk.test.whitebox.WhiteBox BulkLoaderTest SimpleCusty
   * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar BulkLoaderTestApp.jar BulkLoaderTestApp MyUtil InitiatingLoaderTester
   *                 BadOldClassA BadOldClassB
+  * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar cust.jar
+  *                 SimpleCusty
   * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
   * @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:. BulkLoaderTest DYNAMIC
   */
  
  /*
   * @test id=aot
   * @requires vm.cds.supports.aot.class.linking
   * @comment work around JDK-8345635
   * @requires !vm.jvmci.enabled
!  * @library /test/jdk/lib/testlibrary /test/lib /test/hotspot/jtreg/runtime/cds/appcds/test-classes
   * @build InitiatingLoaderTester BadOldClassA BadOldClassB
!  * @build BulkLoaderTest SimpleCusty
   * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar BulkLoaderTestApp.jar BulkLoaderTestApp MyUtil InitiatingLoaderTester
   *                 BadOldClassA BadOldClassB
+  * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar cust.jar
+  *                 SimpleCusty
   * @run driver BulkLoaderTest AOT
   */
  
  import java.io.File;
  import java.lang.StackWalker.StackFrame;
+ import java.net.URL;
+ import java.net.URLClassLoader;
  import java.util.List;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  import java.util.stream.Collectors;
  import java.util.Set;

*** 122,11 ***
          }
  
          @Override
          public String[] vmArgs(RunMode runMode) {
              return new String[] {
!                 "-Xlog:cds,cds+aot+load",
                  "-XX:+AOTClassLinking",
              };
          }
  
          @Override
--- 130,11 ---
          }
  
          @Override
          public String[] vmArgs(RunMode runMode) {
              return new String[] {
!                 "-Xlog:cds,cds+aot+load,cds+class=debug",
                  "-XX:+AOTClassLinking",
              };
          }
  
          @Override

*** 139,10 ***
--- 147,15 ---
          @Override
          public void checkExecution(OutputAnalyzer out, RunMode runMode) throws Exception {
              if (isAOTWorkflow() && runMode == RunMode.TRAINING) {
                  out.shouldContain("Skipping BadOldClassA: Unlinked class not supported by AOTConfiguration");
              }
+ 
+             if (isDumping(runMode)) {
+                 // Check that we are archiving classes for custom class loaders.
+                 out.shouldMatch("cds,class.* SimpleCusty");
+             }
          }
      }
  }
  
  class BulkLoaderTestApp {

*** 150,10 ***
--- 163,11 ---
  
      public static void main(String args[]) throws Exception {
          checkClasses();
          checkInitiatingLoader();
          checkOldClasses();
+         checkCustomLoader();
      }
  
      // Check the ClassLoader/Module/Package/ProtectionDomain/CodeSource of classes that are aot-linked
      static void checkClasses() throws Exception {
          check(String.class,

*** 273,10 ***
--- 287,26 ---
              throw new RuntimeException("Must not succeed");
          } catch (VerifyError e) {
              System.out.println("Caught VerifyError for BadOldClassB: " + e);
          }
      }
+ 
+ 
+     static void checkCustomLoader() throws Exception {
+         Object o = initFromCustomLoader();
+         System.out.println(o);
+     }
+ 
+     static Object initFromCustomLoader() throws Exception {
+         String path = "cust.jar";
+         URL url = new File(path).toURI().toURL();
+         URL[] urls = new URL[] {url};
+         URLClassLoader urlClassLoader =
+             new URLClassLoader("MyLoader", urls, null);
+         Class c = Class.forName("SimpleCusty", true, urlClassLoader);
+         return c.newInstance();
+     }
  }
  
  class MyUtil {
      // depth is 0-based -- i.e., depth==0 returns the class of the immediate caller of getCallerClass
      static Class<?> getCallerClass(int depth) {
< prev index next >