RFR: 8160088: update hotspot tests depending on GC to use @requires vm.gc.X

Dmitry Fazunenko dmitry.fazunenko at oracle.com
Thu Jun 23 08:52:01 UTC 2016


Hi David,

thanks for looking!

On 23.06.2016 3:17, David Holmes wrote:
> Hi Dmitry,
>
> On 23/06/2016 4:06 AM, Dmitry Fazunenko wrote:
>> Hello,
>>
>> I'm looking for Reviewers for relatively simple fix which affects 59 
>> tests.
>>   https://bugs.openjdk.java.net/browse/JDK-8160088
>>   http://cr.openjdk.java.net/~dfazunen/8160088/webrev.00/
>>
>> The fix allows to skip execution of tests requiring a specific GC in
>> case of the required GC is not supported by VM.
>> Old variant:
>>   @requires vm.gc == null | vm.gc == "G1"
>>      A test will be executed if no GC is specified externally or
>> -XX:+UseG1GC flag is given.
>>      This test will be executed even if VM doesn't support G1 and fail.
>> New variant:
>>   @requires vm.gc.G1
>>      This test will not be executed if VM doesn't support G1.
>
> That doesn't seem sufficient. What you want is that if the test 
> requires G1 then it also supports G1, so it seems to me the correct 
> formulation is:
>
> @requires (vm.gc == null |   // null -> default -> g1 (usually)
>            vm.gc == G1 ) &
>            vm.gc.G1

No, vm.gc.G1 is an alias to: (vm.gc == null | vm.gc == g1) & 
vm.gc.supportsG1.

>
> Aside: how does jtreg determine which GC's are supported?
Sorry for not providing the full history here:

CODETOOLS-7901583: jtreg should provide extensible mechanism for 
@requires properties
- change to jtreg that allows a Test Suite to introduce its own 
@requires props

JDK-8152432: Implement setting jtreg @requires properties vm.flavor, 
vm.bits, vm.compMode
- implementation that mechanism in hotspot

JDK-8154096: Extend WhiteBox API with methods which retrieve from VM 
information about available GC
- fix which allows to know if a GC is supported

JDK-8151283: Implement setting jtreg @requires property vm.isG1Supported.
- introduction vm.gc.G1, vm.gc.Serial, vm.gc.Parallel and 
vm.gc.ConcMarkSweep

JDK-8160088 (this one): update hotspot tests depending on GC to use 
@requires vm.gc.X
- culmination: update tests to use new functionality

Thanks,
Dima

>
> Thanks,
> David
>
>> Testing:
>> 1) starting jtreg with various collectors with "-c"  option to verify
>> correctness of test descriptions.
>>     Number of selected tests before and after change is the same:
>> -XX:+UseG1GC:  1,456
>> -XX:+UseSerialGC: 1,366
>> -XX:+UseParallelGC: 1,369
>> -XX:+UseConcMarkSweepGC: 1,368
>> Default:  1,483; error
>>
>> 2) RBT (in progress)
>>
>> 3) Diff is analyzed manually (only necessary lines are affected):
>> #> hg diff |grep "^- " |sort -u
>> - * @requires (vm.gc == "G1" | vm.gc == "null")
>> - * @requires (vm.gc=="G1" | vm.gc=="null")
>> - * @requires vm.gc == "G1" | vm.gc == "null"
>> - * @requires vm.gc=="ConcMarkSweep" | vm.gc == "null"
>> - * @requires vm.gc=="ConcMarkSweep" | vm.gc=="null"
>> - * @requires vm.gc=="G1" | vm.gc =="null"
>> - * @requires vm.gc=="G1" | vm.gc=="null"
>> - * @requires vm.gc=="Parallel" | vm.gc=="null"
>> - * @requires vm.gc=="Serial" | vm.gc=="null"
>> - * @requires vm.gc=="null" | vm.gc=="G1"
>> - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights
>> reserved.
>> - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights
>> reserved.
>> - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights
>> reserved.
>> - * Copyright (c) 2015, Oracle and/or its affiliates. All rights 
>> reserved.
>> #> hg diff |grep "^+ " |sort -u
>> + * @requires vm.gc.ConcMarkSweep
>> + * @requires vm.gc.G1
>> + * @requires vm.gc.Parallel
>> + * @requires vm.gc.Serial
>> + * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights
>> reserved.
>> + * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights
>> reserved.
>> + * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights
>> reserved.
>>
>> Thanks,
>> Dima



More information about the hotspot-dev mailing list