RFR (S): 8145445: [TESTBUG] runtime/logging tests need to properly build and import libraries

Stas Smirnov stanislav.smirnov at oracle.com
Thu Dec 17 11:48:41 UTC 2015


Hi,

lets take a look on the spec and how it works,

when you specify @run ... what actually happens is @build with your main 
class is invoked and in result 'javac -sourcepath <paths from @library> 
yourMainClass' is being executed.
When javac finds some external dependency it first searches in the 
-sourcepath and if it finds it, compiles it.
It is a default execution logic.

If you i.e. use some other class in you sources you can just add the 
root '/' path to the @library and that's it.
The vast majority, I will assume almost all of the tests, does not 
specify all the dependencies in the @build, so I assume here, with your 
tests, we are facing some specific situation that needs to be evaluated 
to find the root cause.
Otherwise it seems to be a some kind of a workaround and all the other 
tests need to be updated as well.

Let's take a look on the issues your are facing and try to find the root 
cause, may be not in this thread.

On 16/12/15 22:14, Ioi Lam wrote:
> Hi Rachel,
>
> The changes look good.
>
> Stas, I can testify that what David said is true. We have seen 
> mysterious nightly test failures because of the missing @build.
>
> Also see http://openjdk.java.net/jtreg/tag-spec.html
>
> "@library <path|jar>+
>
> Classes in library directories are not automatically compiled. A test 
> that relies upon library classes should contain appropriate @build 
> directives to ensure that the classes will be compiled."
>
> - Ioi
>
> On 12/16/15 10:57 AM, Rachel Protacio wrote:
>> Hi, Stas,
>>
>> On 12/16/2015 1:03 PM, Stas Smirnov wrote:
>>> Hi Rachel,
>>>
>>> since you are using library classes i.e. OutputAnalyzer in the 
>>> source code, jtreg will automatically build it, there is no need to 
>>> explicitly define it in the test annotations
>> Well, according to David Holmes (on an earlier email that prompted 
>> this changeset), "Simply using a library doesn't force it to be 
>> built. It may be built due to implicit compiler dependencies or it 
>> may not. We have had numerous test bugs where tests couldn't find the 
>> library when run in certain ways/configurations because the test 
>> itself was not forcing it to be built. The potential problem has been 
>> flagged many times." What do you think? It seems to me like it can't 
>> hurt to include the lines anyway, and that we need to if what David 
>> says is true.
>>
>> R
>>>
>>> On 16/12/15 20:56, Rachel Protacio wrote:
>>>> Hi!
>>>>
>>>> Please review my small change adding the proper @build and import 
>>>> lines to the jtreg tests in the runtime/logging directory. A 
>>>> safeguard against potential occasional bugs in running the tests.
>>>>
>>>> Open webrev: http://cr.openjdk.java.net/~rprotacio/8145445/
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8145445
>>>>
>>>> Thanks!
>>>> Rachel
>>>
>>
>



More information about the hotspot-runtime-dev mailing list