RFR: 8332124: Jcmd processing should accept the "help" sub option as command argument [v5]
Kevin Walls
kevinw at openjdk.org
Wed Jul 3 12:16:20 UTC 2024
On Tue, 2 Jul 2024 15:21:49 GMT, Sonia Zaldana Calles <szaldana at openjdk.org> wrote:
>> Hi all,
>>
>> This PR addresses [8332124](https://bugs.openjdk.org/browse/JDK-8332124) enabling jcmd to accept "help" as an argument to subcommands.
>>
>> Testing:
>> - [x] Verified running `jcmd 4711 VM.metaspace help` works along with other subcommands.
>> - [x] Added test case passes.
>>
>> Thanks,
>> Sonia
>
> Sonia Zaldana Calles has updated the pull request incrementally with one additional commit since the last revision:
>
> Making enabling help more restrictive. Will not accept -help
Additional test possibility.
*** orig.txt 2024-07-03 13:08:46.460514793 +0100
--- test/jdk/sun/tools/jcmd/TestJcmdSubcommandHelp.java 2024-07-03 12:50:48.324022729 +0100
***************
*** 39,48 ****
--- 39,49 ----
public class TestJcmdSubcommandHelp {
private static final String HELP_ONE_DASH = "-h";
private static final String HELP_TWO_DASH = "--help";
private static final String CMD = "VM.metaspace";
+ private static final String ILLEGAL = "IllegalArgumentException: Unknown argument";
public static void main(String[] args) throws Exception {
// Sanity check with empty input
OutputAnalyzer output = JcmdBase.jcmd();
***************
*** 59,68 ****
--- 60,72 ----
testIgnoreAdditionalArgs(HELP_ONE_DASH, expectedOutput);
testIgnoreAdditionalArgs(HELP_TWO_DASH, expectedOutput);
testIgnoreTrailingSpaces(HELP_ONE_DASH, expectedOutput);
testIgnoreTrailingSpaces(HELP_TWO_DASH, expectedOutput);
+
+ testSimilarCommand(HELP_ONE_DASH + "ello", ILLEGAL);
+ testSimilarCommand(HELP_TWO_DASH + "me", ILLEGAL);
}
private static void testExpectedUsage(String helpOption, String expectedOutput) throws Exception {
verifyOutput(new String[] {CMD, helpOption}, expectedOutput,
"Expected jcmd to accept '%s' suboption as a command argument and issue the same help output.".formatted(helpOption));
***************
*** 76,93 ****
--- 80,114 ----
private static void testIgnoreTrailingSpaces(String helpOption, String expectedOutput) throws Exception {
verifyOutput(new String[] {CMD, "%s ".formatted(helpOption)}, expectedOutput,
"Expected jcmd to accept '%s' suboption with trailing spaces".formatted(helpOption));
}
+ private static void testSimilarCommand(String helpOption, String expectedOutput) throws Exception {
+ verifyOutputContains(new String[] {CMD, helpOption}, expectedOutput,
+ "Expected jcmd to NOT accept '%s' suboption with trailing content".formatted(helpOption));
+ }
+
private static void verifyOutput(String[] args, String expectedOutput, String errorMessage) throws Exception {
OutputAnalyzer output = JcmdBase.jcmd(args);
String issuedOutput = output.getOutput();
if (!expectedOutput.equals(issuedOutput)) {
System.out.println("Expected output: ");
System.out.println(expectedOutput);
System.out.println("Issued output: ");
System.out.println(issuedOutput);
throw new Exception(errorMessage);
+ }
+ }
+
+ private static void verifyOutputContains(String[] args, String expectedOutput, String errorMessage) throws Exception {
+ OutputAnalyzer output = JcmdBase.jcmd(args);
+ String issuedOutput = output.getOutput();
+ if (!issuedOutput.contains(expectedOutput)) {
+ System.out.println("Expected output: ");
+ System.out.println(expectedOutput);
+ System.out.println("Issued output: ");
+ System.out.println(issuedOutput);
+ throw new Exception(errorMessage);
}
}
}
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19776#issuecomment-2205934378
More information about the serviceability-dev
mailing list