< prev index next >

test/jdk/nio/zipfs/MultiReleaseJarTest.java

Print this page
rev 16866 : 8176834: jdk/nio/zipfs/MultiReleaseJarTest.java test fails after JDK-8176709
Reviewed-by: TBD


 173         integerEnv.put("multi-release", Integer.valueOf(9));
 174         runTest(smruri, integerEnv, 8);
 175     }
 176 
 177     private void runTest(Map<String,?> env, int expected) throws Throwable {
 178         runTest(mruri, env, expected);
 179     }
 180 
 181     private void runTest(URI uri, Map<String,?> env, int expected) throws Throwable {
 182         try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
 183             Path version = fs.getPath(entryName);
 184             byte [] bytes = Files.readAllBytes(version);
 185             Class<?> vcls = (new ByteArrayClassLoader(fs)).defineClass(className, bytes);
 186             MethodHandle mh = MethodHandles.lookup().findVirtual(vcls, "getVersion", mt);
 187             Assert.assertEquals((int)mh.invoke(vcls.newInstance()), expected);
 188         }
 189     }
 190 
 191     @Test
 192     public void testIsMultiReleaseJar() throws Exception {

 193         testCustomMultiReleaseValue("true", true);
 194         testCustomMultiReleaseValue("true\r\nOther: value", true);
 195         testCustomMultiReleaseValue("true\nOther: value", true);
 196         testCustomMultiReleaseValue("true\rOther: value", true);
 197 
 198         testCustomMultiReleaseValue("false", false);
 199         testCustomMultiReleaseValue(" true", false);
 200         testCustomMultiReleaseValue("true ", false);
 201         testCustomMultiReleaseValue("true\n ", false);
 202         testCustomMultiReleaseValue("true\r ", false);
 203         testCustomMultiReleaseValue("true\n true", false);
 204         testCustomMultiReleaseValue("true\r\n true", false);
 205     }
 206 
 207     private static final AtomicInteger JAR_COUNT = new AtomicInteger(0);
 208 
 209     private void testCustomMultiReleaseValue(String value, boolean expected)
 210             throws Exception {
 211         String fileName = "custom-mr" + JAR_COUNT.incrementAndGet() + ".jar";
 212         creator.buildCustomMultiReleaseJar(fileName, value, Map.of(),
 213                 /*addEntries*/true);
 214 
 215         Map<String,String> env = Map.of("multi-release", "runtime");
 216         Path filePath = Paths.get(userdir, fileName);
 217         String ssp = filePath.toUri().toString();
 218         URI customJar = new URI("jar", ssp , null);
 219         try (FileSystem fs = FileSystems.newFileSystem(customJar, env)) {
 220             if (expected) {
 221                 Assert.assertTrue(readAndCompare(fs, MAJOR_VERSION));
 222             } else {
 223                 Assert.assertTrue(readAndCompare(fs, 8));
 224             }




 173         integerEnv.put("multi-release", Integer.valueOf(9));
 174         runTest(smruri, integerEnv, 8);
 175     }
 176 
 177     private void runTest(Map<String,?> env, int expected) throws Throwable {
 178         runTest(mruri, env, expected);
 179     }
 180 
 181     private void runTest(URI uri, Map<String,?> env, int expected) throws Throwable {
 182         try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
 183             Path version = fs.getPath(entryName);
 184             byte [] bytes = Files.readAllBytes(version);
 185             Class<?> vcls = (new ByteArrayClassLoader(fs)).defineClass(className, bytes);
 186             MethodHandle mh = MethodHandles.lookup().findVirtual(vcls, "getVersion", mt);
 187             Assert.assertEquals((int)mh.invoke(vcls.newInstance()), expected);
 188         }
 189     }
 190 
 191     @Test
 192     public void testIsMultiReleaseJar() throws Exception {
 193         // Re-examine commented out tests as part of JDK-8176843
 194         testCustomMultiReleaseValue("true", true);
 195         testCustomMultiReleaseValue("true\r\nOther: value", true);
 196         testCustomMultiReleaseValue("true\nOther: value", true);
 197         // testCustomMultiReleaseValue("true\rOther: value", true);
 198 
 199         testCustomMultiReleaseValue("false", false);
 200         testCustomMultiReleaseValue(" true", false);
 201         testCustomMultiReleaseValue("true ", false);
 202         //testCustomMultiReleaseValue("true\n ", false);
 203         //testCustomMultiReleaseValue("true\r ", false);
 204         //testCustomMultiReleaseValue("true\n true", false);
 205         //testCustomMultiReleaseValue("true\r\n true", false);
 206     }
 207 
 208     private static final AtomicInteger JAR_COUNT = new AtomicInteger(0);
 209 
 210     private void testCustomMultiReleaseValue(String value, boolean expected)
 211             throws Exception {
 212         String fileName = "custom-mr" + JAR_COUNT.incrementAndGet() + ".jar";
 213         creator.buildCustomMultiReleaseJar(fileName, value, Map.of(),
 214                 /*addEntries*/true);
 215 
 216         Map<String,String> env = Map.of("multi-release", "runtime");
 217         Path filePath = Paths.get(userdir, fileName);
 218         String ssp = filePath.toUri().toString();
 219         URI customJar = new URI("jar", ssp , null);
 220         try (FileSystem fs = FileSystems.newFileSystem(customJar, env)) {
 221             if (expected) {
 222                 Assert.assertTrue(readAndCompare(fs, MAJOR_VERSION));
 223             } else {
 224                 Assert.assertTrue(readAndCompare(fs, 8));
 225             }


< prev index next >