On Tue, 4 Jun 2024 07:13:15 GMT, Vanitha B P <d...@openjdk.org> wrote:
> Created jtreg test case for > [JDK-8325203](https://bugs.openjdk.org/browse/JDK-8325203) issue. > > The JpackageTest created tests that the child process started from the app > launched by jpackage launcher is not automatically terminated when the the > launcher is terminated. Changes requested by asemenyuk (Reviewer). The test builds an installer that must be installed as a part of the test. This will not work in an environment where tests are executed under a user account without restricted permissions. Building app image instead of an installer is sufficient for this test, There are helper classes for writing jpackage tests in https://github.com/openjdk/jdk/tree/master/test/jdk/tools/jpackage/helpers/jdk/jpackage/test folder. I'd not use a file to communicate PID of the started process between the launcher and the test. I'd use stdout instead: public class ThirdPartyAppLauncher { public static void main(String[] args) throws IOException { Process process = new ProcessBuilder("regedit").start(); System.out.println("RegEdit PID=" + process.pid()); } } Compiling, jarring, and running jpackage that will create app image from the jar with these helpers would be as follows: JPackageCommand.helloAppImage(TKit.TEST_SRC_ROOT.resolve("apps/ThirdPartyAppLauncher.java") + "*Hello").executeAndAssertImageCreated(); Then you run "ThirdPartyAppLauncher" class using jpackage launcher and capture its stdout: String pidStr = new Executor().saveOutput().dumpOutput().setExecutable(cmd.appLauncherPath().toAbsolutePath()).execute(0).getFirstLineOfOutput(); // parse regedit PID long regeditPid = Long.parseLong(pidStr.split("=", 2)[1]); // Run your checks ... // Kill only a specific regedit instance Runtime.getRuntime().exec("taskkill /F /PID " + regeditPid); You may use one of the existing jpackage tests for the reference (https://github.com/openjdk/jdk/blob/master/test/jdk/tools/jpackage/share/AppLauncherEnvTest.java is a good example) test/jdk/tools/jpackage/windows/JpackageTest.java line 160: > 158: */ > 159: private void closeThirdPartyApplication() throws Throwable { > 160: Runtime.getRuntime().exec("taskkill /F /IM regedit.exe"); I guess this will kill all regedit processes including those not started by the test. This doesn't seem right. ------------- PR Review: https://git.openjdk.org/jdk/pull/19536#pullrequestreview-2130771716 PR Comment: https://git.openjdk.org/jdk/pull/19536#issuecomment-2181016935 PR Review Comment: https://git.openjdk.org/jdk/pull/19536#discussion_r1647775863