< prev index next >

test/tools/launcher/modules/patch/systemmodules/PatchSystemModules.java

Print this page

        

*** 1,7 **** /** ! * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /** ! * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 21,33 **** * questions. */ /* * @test ! * @bug 8157068 ! * @summary Patch java.base and user module with Hashes attribute tied with ! * other module. * @library /lib/testlibrary * @modules jdk.compiler * @build CompilerUtils * @run testng PatchSystemModules */ --- 21,32 ---- * questions. */ /* * @test ! * @bug 8157068 8177844 ! * @summary Patch java.base and user module with ModuleHashes attribute * @library /lib/testlibrary * @modules jdk.compiler * @build CompilerUtils * @run testng PatchSystemModules */
*** 57,66 **** --- 56,66 ---- private static final Path JMODS = Paths.get(JAVA_HOME, "jmods"); private static final Path MODS_DIR = Paths.get("mods"); private static final Path JARS_DIR = Paths.get("jars"); private static final Path PATCH_DIR = Paths.get("patches"); private static final Path IMAGE = Paths.get("image"); + private static final Path NEW_M1_JAR = JARS_DIR.resolve("new_m1.jar"); private static final String JAVA_BASE = "java.base"; private final String[] modules = new String[] { "m1", "m2" }; @BeforeTest
*** 83,94 **** --- 83,102 ---- // create an image with only m1 and m2 if (Files.exists(JMODS)) { // create an image with m1,m2 createImage(); } + + // create new copy of m1.jar + jar("--create", + "--file=" + NEW_M1_JAR.toString(), + "-C", MODS_DIR.resolve("m1").toString(), "."); } + /* + * Test patching system module and user module on module path + */ @Test public void test() throws Throwable { Path patchedJavaBase = PATCH_DIR.resolve(JAVA_BASE); Path patchedM2 = PATCH_DIR.resolve("m2");
*** 105,114 **** --- 113,125 ---- "--patch-module", "m2=" + patchedM2.toString(), "--module-path", MODS_DIR.toString(), "-m", "m1/p1.Main", "2"); } + /* + * Test --patch-module on a custom image + */ @Test public void testImage() throws Throwable { if (Files.notExists(JMODS)) return;
*** 123,153 **** runTest(IMAGE, "--patch-module", "m2=" + patchedM2.toString(), "-m", "m1/p1.Main", "2"); } @Test ! public void upgradeTiedModule() throws Throwable { if (Files.notExists(JMODS)) return; ! Path m1 = MODS_DIR.resolve("m1.jar"); ! // create another m1.jar ! jar("--create", ! "--file=" + m1.toString(), ! "-C", MODS_DIR.resolve("m1").toString(), "."); ! // Fail to upgrade m1.jar with mismatched hash runTestWithExitCode(getJava(IMAGE), ! "--upgrade-module-path", m1.toString(), ! "-m", "m1/p1.Main"); runTestWithExitCode(getJava(IMAGE), "--patch-module", "java.base=" + PATCH_DIR.resolve(JAVA_BASE), ! "--upgrade-module-path", m1.toString(), ! "-m", "m1/p1.Main", "1"); } private void runTestWithExitCode(String... options) throws Throwable { assertTrue(executeCommand(options) .outputTo(System.out) --- 134,186 ---- runTest(IMAGE, "--patch-module", "m2=" + patchedM2.toString(), "-m", "m1/p1.Main", "2"); } + /* + * Test a module linked in a system hashed in ModuleHashes attribute + * cannot be upgraded + */ @Test ! public void upgradeHashedModule() throws Throwable { if (Files.notExists(JMODS)) return; ! // Fail to upgrade m1.jar with mismatched hash ! runTestWithExitCode(getJava(IMAGE), ! "--upgrade-module-path", NEW_M1_JAR.toString(), ! "-m", "m1/p1.Main", "ShouldNeverRun"); ! // test when SystemModules fast path is not enabled, i.e. exploded image ! runTestWithExitCode(getJava(IMAGE), ! "--patch-module", "java.base=" + PATCH_DIR.resolve(JAVA_BASE), ! "--upgrade-module-path", NEW_M1_JAR.toString(), ! "-m", "m1/p1.Main", "ShouldNeverRun"); ! } ! /* ! * Test a module linked in a system hashed in ModuleHashes attribute ! * cannot be upgraded combining with --patch-module and --upgrade-module-path ! */ ! @Test ! public void patchHashedModule() throws Throwable { ! if (Files.notExists(JMODS)) ! return; ! ! // --patch-module does not disable hash check. ! // Test that a hashed module cannot be upgraded. runTestWithExitCode(getJava(IMAGE), ! "--patch-module", "m1=.jar", ! "--upgrade-module-path", NEW_M1_JAR.toString(), ! "-m", "m1/p1.Main", "ShouldNeverRun"); + // test when SystemModules fast path is not enabled, i.e. exploded image runTestWithExitCode(getJava(IMAGE), "--patch-module", "java.base=" + PATCH_DIR.resolve(JAVA_BASE), ! "--patch-module", "m1=.jar", ! "--upgrade-module-path", NEW_M1_JAR.toString(), ! "-m", "m1/p1.Main", "ShouldNeverRun"); } private void runTestWithExitCode(String... options) throws Throwable { assertTrue(executeCommand(options) .outputTo(System.out)
< prev index next >