On Thu, 20 Jun 2024 15:45:11 GMT, Alexey Semenyuk <asemen...@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. > > 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 with 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) Thanks for the inputs @alexeysemenyukoracle. I have addressed the review comments. ------------- PR Comment: https://git.openjdk.org/jdk/pull/19536#issuecomment-2205063074