85 "UnverifiableIntfSub", 86 "VerifierTestA", 87 "VerifierTestB", 88 "VerifierTestC", 89 "VerifierTestD", 90 "VerifierTestE", 91 "VerifierTest0"); 92 93 94 switch (subCaseId) { 95 case "0": testset_0(jar, noAppClasses, appClasses); return; 96 case "1A": testset_1(jar, noAppClasses, appClasses, Testset1Part.A); return; 97 case "1B": testset_1(jar, noAppClasses, appClasses, Testset1Part.B); return; 98 case "2": testset_2(jarName_greet, jarName_hi); return; 99 default: 100 throw new RuntimeException("Unknown option: " + subCaseId); 101 } 102 } 103 104 static void testset_0(String jar, String[] noAppClasses, String[] appClasses) throws Exception { 105 // Dumping should fail if the IgnoreUnverifiableClassesDuringDump 106 // option is not enabled. 107 OutputAnalyzer output = TestCommon.dump(jar, appClasses, 108 CDS_LOGGING, 109 "-XX:+UnlockDiagnosticVMOptions", 110 "-XX:-IgnoreUnverifiableClassesDuringDump"); 111 output.shouldContain("Please remove the unverifiable classes"); 112 output.shouldHaveExitValue(1); 113 114 // By default, bad classes should be ignored during dumping. 115 TestCommon.testDump(jar, appClasses); 116 } 117 118 static void checkRuntimeOutput(OutputAnalyzer output, String expected) throws Exception { 119 output.shouldContain(expected); 120 if (expected.equals(PASS_RESULT) || 121 expected.equals(VFY_ERR)) { 122 output.shouldHaveExitValue(0); 123 } else { 124 output.shouldNotHaveExitValue(0); 125 } 126 } 127 128 static void testset_1(String jar, String[] noAppClasses, String[] appClasses, Testset1Part part) 129 throws Exception 130 { 131 String config[][] = { 132 // {dump_list, dumptime_verification_setting, | 85 "UnverifiableIntfSub", 86 "VerifierTestA", 87 "VerifierTestB", 88 "VerifierTestC", 89 "VerifierTestD", 90 "VerifierTestE", 91 "VerifierTest0"); 92 93 94 switch (subCaseId) { 95 case "0": testset_0(jar, noAppClasses, appClasses); return; 96 case "1A": testset_1(jar, noAppClasses, appClasses, Testset1Part.A); return; 97 case "1B": testset_1(jar, noAppClasses, appClasses, Testset1Part.B); return; 98 case "2": testset_2(jarName_greet, jarName_hi); return; 99 default: 100 throw new RuntimeException("Unknown option: " + subCaseId); 101 } 102 } 103 104 static void testset_0(String jar, String[] noAppClasses, String[] appClasses) throws Exception { 105 // IgnoreUnverifiableClassesDuringDump has been obsoleted. 106 // Unverifiable classes won't be included in the CDS archive. 107 OutputAnalyzer output = TestCommon.dump(jar, appClasses, 108 CDS_LOGGING, 109 "-XX:+UnlockDiagnosticVMOptions", 110 "-XX:-IgnoreUnverifiableClassesDuringDump"); 111 output.shouldHaveExitValue(0); 112 113 // By default, bad classes should be ignored during dumping. 114 TestCommon.testDump(jar, appClasses); 115 } 116 117 static void checkRuntimeOutput(OutputAnalyzer output, String expected) throws Exception { 118 output.shouldContain(expected); 119 if (expected.equals(PASS_RESULT) || 120 expected.equals(VFY_ERR)) { 121 output.shouldHaveExitValue(0); 122 } else { 123 output.shouldNotHaveExitValue(0); 124 } 125 } 126 127 static void testset_1(String jar, String[] noAppClasses, String[] appClasses, Testset1Part part) 128 throws Exception 129 { 130 String config[][] = { 131 // {dump_list, dumptime_verification_setting, |