From 7f05f6f7c77c10dd2aed291af20664c9130e35f9 Mon Sep 17 00:00:00 2001 From: Leonid Mesnik Date: Tue, 9 May 2023 18:06:40 +0000 Subject: [PATCH] 8307307: Improve ProcessTools.java to don't try to run Virtual wrapper for incompatible processes Reviewed-by: alanb --- test/jdk/ProblemList-Virtual.txt | 3 ++ .../jdk/test/lib/process/ProcessTools.java | 47 +++++++++++-------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/test/jdk/ProblemList-Virtual.txt b/test/jdk/ProblemList-Virtual.txt index 7c5a1924dcc..d7a671a31c9 100644 --- a/test/jdk/ProblemList-Virtual.txt +++ b/test/jdk/ProblemList-Virtual.txt @@ -47,3 +47,6 @@ com/sun/jdi/ReferrersTest.java 8285422 generic-all com/sun/jdi/SetLocalWhileThreadInNative.java 8285422 generic-all com/sun/jdi/StepTest.java 8285422 generic-all com/sun/jdi/PopAndInvokeTest.java 8305632 generic-all +com/sun/jdi/cds/CDSBreakpointTest.java 8307778 generic-all +com/sun/jdi/cds/CDSDeleteAllBkptsTest.java 8307778 generic-all +com/sun/jdi/cds/CDSFieldWatchpoints.java 8307778 generic-all diff --git a/test/lib/jdk/test/lib/process/ProcessTools.java b/test/lib/jdk/test/lib/process/ProcessTools.java index 30013773696..a07122552da 100644 --- a/test/lib/jdk/test/lib/process/ProcessTools.java +++ b/test/lib/jdk/test/lib/process/ProcessTools.java @@ -392,22 +392,21 @@ public final class ProcessTools { When test is executed with process wrapper the line is changed from java to - java --enable-preview jdk.test.lib.process.ProcessTools + java -Dmain.wrapper= jdk.test.lib.process.ProcessTools */ - private static List addMainWrapperArgs(String mainWrapper, List command) { - boolean useModules = command.contains("-m"); - if (useModules) { - return command; - } + private static List addMainWrapperArgs(String mainWrapper, List command) { + + final List unsupportedArgs = List.of( + "-jar", "-cp", "-classpath", "--class-path", "--describe-module", "-d", + "--dry-run", "--list-modules","--validate-modules", "-version"); + + final List doubleWordArgs = List.of( + "-jar", "-cp", "-classpath", "--class-path", "--add-opens", "--upgrade-module-path", + "--describe-module", "--add-modules", "-d", "--add-exports", "--limit-modules", + "--add-reads", "--patch-module", "--module-path", "--module", "-m", "-p"); ArrayList args = new ArrayList<>(); - final String[] doubleWordArgs = {"-cp", "-classpath", "--add-opens", "--class-path", "--upgrade-module-path", - "--add-modules", "-d", "--add-exports", "--patch-module", "--module-path"}; - - if (mainWrapper.equalsIgnoreCase("virtual")) { - args.add("--enable-preview"); - } boolean expectSecondArg = false; boolean isWrapperClassAdded = false; @@ -422,20 +421,30 @@ public final class ProcessTools { args.add(cmd); continue; } - for (String dWArg : doubleWordArgs) { - if (cmd.equals(dWArg)) { - expectSecondArg = true; - args.add(cmd); - break; - } + if (unsupportedArgs.contains(cmd)) { + return command; + } + if (doubleWordArgs.contains(cmd)) { + expectSecondArg = true; + args.add(cmd); + continue; } if (expectSecondArg) { continue; } - if (cmd.startsWith("-")) { + // command-line or name command-line file + if (cmd.startsWith("-") || cmd.startsWith("@")) { args.add(cmd); continue; } + + // if command is like 'java source.java' then return + if (cmd.endsWith(".java")) { + return command; + } + // Some tests might check property to understand + // if virtual threads are tested + args.add("-Dmain.wrapper=" + mainWrapper); args.add("jdk.test.lib.process.ProcessTools"); args.add(mainWrapper); isWrapperClassAdded = true;