RFR: JDK-8220639 Need a way to augment JTREG_LAUNCHER_OPTIONS from command-line

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Tue Jun 16 12:35:36 UTC 2020


On 2020-06-16 04:58, David Holmes wrote:
> Hi Magnus,
>
> Great to see this getting fixed! Thanks!
>
> On 16/06/2020 1:56 am, Magnus Ihse Bursie wrote:
>> It turned out that it was not possible to send arguments directly to 
>> the java that launches jtreg, something that was needed, especially 
>> to change the output limit using Djavatest.maxOutputSize.
>>
>> This patch adds JTREG=LAUNCHER_OPTIONS=xxx to pass generic options to 
>> the launcher.
>
> Is there some special prefix handling going on here? The makefile 
> lists JTREG_LAUNCHER_OPTIONS as the variable. Without any other 
> information that is what I would set on the command-line.
Yes, there is. That's what the ParseKeywordVariable macro does. You 
*can* set JTREG_LAUNCHER_OPTIONS directly, and it will work as you would 
assume. But make will produce a warning that it cannot verify that it is 
correct. If you use the JTREG=LAUNCHER_OPTIONS=xxx syntax, make will 
verify that it is a valid control variable. So JTREG=LAUNCHER_OPTS=xxx 
would result in an error, while JTREG_LAUNCHER_OPTS  would just be 
silently ignored.

I think this is pretty well explained in doc/testing.md.
>
>> Also, for the specific case of changing the max output size, it adds 
>> JTREG=MAX_OUTPUT=nnn.
>
> Is it worthwhile special-casing for max output? How would someone even 
> think to ask if such a special case exists? Typical scenario is that 
> someone sees the output overflow in a jtr file and the message to 
> increase -Djavatest.maxOutputSize, so they will then ask "how do I 
> pass a flag to jtreg?" and hopefully easily discover LAUNCHER_OPTIONS 
> and use it.
Ok, maybe it isn't. I got the impression from the bug report that this 
was the main cause for wanting to pass options to the jtreg launcher, 
and something that a developer "often" do. If it does not make sense to 
have it, it's better that I remove it, than push a feature that no-one 
is going to use.
>
>> All these new options made me realize there's no way apart from 
>> reading the code to know what options are available, so I added a 
>> help system, and documented this in "make help". Now you can get:
>>
>> $ make test JTREG=help
>> Building target 'test' in configuration 'linux-x64'
>> Valid keywords for JTREG:
>> JOBS TIMEOUT_FACTOR FAILURE_HANDLER_TIMEOUT TEST_MODE ASSERT VERBOSE 
>> RETAIN MAX_MEM RUN_PROBLEM_LISTS RETRY_COUNT MAX_OUTPUT OPTIONS 
>> JAVA_OPTIONS VM_OPTIONS KEYWORDS EXTRA_PROBLEM_LISTS AOT_MODULES 
>> LAUNCHER_OPTIONS.
>> RunTests.gmk:292: *** Re-run without 'help' to continue. Stop.
>
> That's goods to see but it is unclear what form the values for these 
> keywords should take, or how to specify multiple keywords. 
It's all documented in doc/building.[md|html].

> How do we map these keywords back to jtreg flags?
Not all map directly to jtreg flags; they all pertain to how RunTest 
runs the jtreg tests. Some map more or less straight to jtreg options, 
but far from all.

Most of these are documented in doc/building.md. They really should all 
be. I'll go another round on this webrev and make sure the documentation 
is up to date.

> I see Jon's separate thread on documenting flags, so is the answer 
> that jtreg docs will describe all this?
There's a difference between what jtreg documentation describes (jtreg 
"bare bones") and what the build documentation describes (how to run 
OpenJDK testing, both with jtreg and other test suites).

/Magnus
>
> Thanks,
> David
> -----
>
>> Finally, I fixed some broken comments regarding AOT that I noticed 
>> while fixing this.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8220639
>> WebRev: 
>> http://cr.openjdk.java.net/~ihse/JDK-8220639-add-jtreg-launcher-options/webrev.01 
>>
>>
>> /Magnus




More information about the build-dev mailing list