<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<br>
<div class="moz-cite-prefix">On 13.11.2014 17:32, Bengt Rutisson
wrote:<br>
</div>
<blockquote cite="mid:5464B2E6.9070802@oracle.com" type="cite">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<br>
Hi Evgeniya,<br>
<br>
<div class="moz-cite-prefix">On 2014-11-12 17:28, Evgeniya
Stepanova wrote:<br>
</div>
<blockquote cite="mid:54638A9F.2030209@oracle.com" type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
Hi Dmitry,<br>
<br>
You are right - I've forgotten about copyrights<br>
Copyrights and other issues you mentioned fixed. New webrev:<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Eeistepan/8062537/webrev.02/">http://cr.openjdk.java.net/~eistepan/8062537/webrev.02/</a><br>
</blockquote>
<br>
<br>
For /test/gc/arguments/TestG1HeapRegionSize.java I think it would
be good to add -XX:+UseG1GC to the @run tags and then use
@requires vm.gc=="G1" | vm.gc == null.<br>
<br>
<br>
The change to test/gc/defnew/HeapChangeLogging.java is unrelated
to the conflicting GC combinations. Should that really be part of
this changeset?<br>
<br>
<br>
The TestShrinkAuxiliaryDataXX tests are run in driver mode. Do we
really need @requires for them?<br>
</blockquote>
<br>
Yes, we do.<br>
These tests use TestShrinkAuxiliaryData class which implements its
own mechanism to analyze VM options an skip if not applicable
collector is given. @requires - allows to rely on jtreg.<br>
<br>
Driver mode is a kind of indicator, that the test will spawn its own
java process.<br>
<br>
Thanks<br>
Dima<br>
<br>
<blockquote cite="mid:5464B2E6.9070802@oracle.com" type="cite"> <br>
<br>
Otherwise it look ok to me.<br>
<br>
Bengt<br>
<br>
<br>
<blockquote cite="mid:54638A9F.2030209@oracle.com" type="cite"> <br>
Thanks <br>
Evgeniya Stepanova<br>
<div class="moz-cite-prefix">On 12.11.2014 18:23, Dmitry
Fazunenko wrote:<br>
</div>
<blockquote cite="mid:54636D76.3010905@oracle.com" type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
Hi Evgeniya,<br>
<br>
The fix looks good to me.<br>
<br>
I noticed the following minor things:<br>
- copyrights need to include the year of last change<br>
- test/gc/defnew/HeapChangeLogging.java - is listed among
updated files, but doesn't contain any changes<br>
- test/gc/g1/TestShrinkAuxiliaryData.java - contain unsed
variable 'prohibitedVmOptions'<br>
<br>
Thanks,<br>
Dima<br>
<br>
<br>
<div class="moz-cite-prefix">On 12.11.2014 18:49, Evgeniya
Stepanova wrote:<br>
</div>
<blockquote cite="mid:5463736F.7050109@oracle.com" type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
Hi everyone!<br>
<br>
Since the decision was made to change only tests that fail
because of conflict for now (skip "selfish" tests), I post
new webrev for hotspot part of the <a
moz-do-not-send="true" id="key-val" rel="4684019"
href="https://bugs.openjdk.java.net/browse/JDK-8019361">JDK-8019361</a>:<br>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Eavstepan/eistepan/8062537/webrev.01/">http://cr.openjdk.java.net/~avstepan/eistepan/8062537/webrev.01/</a><br>
<br>
Thanks,<br>
Evgeniya Stepanova
<div class="moz-cite-prefix">On 04.11.2014 15:32, Dmitry
Fazunenko wrote:<br>
</div>
<blockquote cite="mid:5458B960.8000305@oracle.com"
type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
Nice plan! Please feel free to send me any
feedback/questions regarding @requires<br>
<br>
Thanks,<br>
Dima <br>
<br>
<br>
<div class="moz-cite-prefix">On 04.11.2014 11:40, Bengt
Rutisson wrote:<br>
</div>
<blockquote cite="mid:5458910B.2070100@oracle.com"
type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
<div class="moz-cite-prefix"><br>
Hi Dima,<br>
<br>
Thanks for the answers. I think the currently proposed
patch is a good start. We will have to evolve the
@requires tag in the future, but let's have that
discussion separate from this review. And we can start
that discussion later when we have more experience
with the current version of @requires.<br>
<br>
Thanks for doing this!<br>
Bengt<br>
<br>
<br>
<br>
On 11/3/14 10:12 PM, Dmitry Fazunenko wrote:<br>
</div>
<blockquote cite="mid:5457EFA6.7050404@oracle.com"
type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
Hi Bengt,<br>
<br>
That's great that we have very closed visions! <br>
<br>
The general comment: currently, jtreg doesn't support
any sort of plugins, so you can't provide a VM
specific handler of the @requires or another tag. This
is very annoying limitation and we have to live with
it.<br>
<br>
A few more comments inline.<br>
<br>
<br>
<div class="moz-cite-prefix">On 03.11.2014 16:31,
Bengt Rutisson wrote:<br>
</div>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
<div class="moz-cite-prefix"><br>
<br>
Hi Dima,<br>
<br>
Answers inline.<br>
<br>
On 10/31/14 1:56 PM, Dmitry Fazunenko wrote:<br>
</div>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
Hi Bengt, <br>
<br>
Thanks a lot for your detailed feedback, we
appreciate it very much!<br>
<br>
See comments inline.<br>
<br>
<div class="moz-cite-prefix">On 31.10.2014 1:09,
Bengt Rutisson wrote:<br>
</div>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite">
<meta content="text/html; charset=UTF-8"
http-equiv="Content-Type">
<div class="moz-cite-prefix"><br>
Hi Evgeniya,<br>
<br>
On 10/30/14 3:05 PM, Evgeniya Stepanova wrote:<br>
</div>
<blockquote
cite="mid:545245C5.4050504@oracle.com"
type="cite">
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
Hi,<br>
<br>
Please review changes for 8062537, the
OpenJDK/hotspot part of the <a
moz-do-not-send="true" id="key-val"
rel="4684019"
href="https://bugs.openjdk.java.net/browse/JDK-8019361">JDK-8019361</a><br>
<br>
bug: <a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="https://bugs.openjdk.java.net/browse/JDK-8062537">https://bugs.openjdk.java.net/browse/JDK-8062537</a><br>
fix: <a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Eeistepan/8062537/webrev.00/">http://cr.openjdk.java.net/~eistepan/8062537/webrev.00/</a><br>
<br>
Problem: Some tests explicitly set GC and fail
when jtreg set another GC.<br>
Solution: Such tests marked with the jtreg tag
"requires" to skip test if there is a conflict<br>
</blockquote>
<br>
Thanks for fixing this! It is really great that
we finally start sorting this out.<br>
<br>
First a general comment. The @requires tag has
been developed without much cooperation with the
GC team. We did have a lot of feedback when it
was first presented a year ago, but it does not
seem like this feedback was incorporated into
the @requires that was eventually built.<br>
</blockquote>
<br>
We tried to implement as much developer's wishes
as possible. But not everything is possible, sorry
for that.<br>
</blockquote>
<br>
Yes, I'm sure you have done your best. It's just
that we have been requesting this feature for 3
years and I was expecting us to be able to influence
the feature much more than was the case now.<br>
</blockquote>
<br>
My personal hope: @requires will address ~90% of
existing issues.<br>
<br>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite"> <br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> <br>
I think this change that gets proposed now is a
big step forward and I won't object to it. But I
am pretty convinced that we will soon run in to
the limitations of the current @requires
implementation and we will have to redo this
work.<br>
<br>
Some of the points I don't really like about the
@requires tag are:<br>
<br>
- the "vm.gc" abstraction is more limiting than
helping. It would have been better to just
"require" any command line flag.<br>
</blockquote>
"vm.gc" is an alias to a very popular flag. It's
also possible to use: <br>
vm.opt.UseG1GC == true instead.<br>
<br>
The table with all vars available in jtreg:<br>
<a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="http://jre.us.oracle.com/java/re/jtreg/4.1/promoted/latest/binaries/jtreg/doc/jtreg/tag-spec.html#requires_names">http://jre.us.oracle.com/java/re/jtreg/4.1/promoted/latest/binaries/jtreg/doc/jtreg/tag-spec.html#requires_names</a><br>
</blockquote>
<br>
The problem with having this matching built in to
JTreg is that it makes it very hard to change. When
we discussed this a year ago I think we said that
JTreg should only provide a means to test against
the command line and a hook for running some java
code in the @requires tag. That way we could put
logic like this in a test library that is under our
control. This would make it easy for us to change
and also enables us to use different logic for
different versions.<br>
</blockquote>
<br>
I would be glad to have own harness...<br>
<br>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite"> <br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> - the requirement should be per
@run tag. Right now we have to do what you did
in this change and use vm.gc=null even when some
tests could actually have been run when a GC was
specified.<br>
</blockquote>
it would be great, but it will unlikely happen in
jtreg, as well as test case support.<br>
</blockquote>
<br>
what do you mean with test case support? Hi
Evgeniya,</blockquote>
<br>
Under test case support I mean ability to treat each
@run as a separate test. Now<br>
<br>
@test<br>
@run -XX:g1RegSize=1m MyTest <br>
@run -XX:g1RegSize=2m MyTest<br>
@run -XX:g1RegSize=4m MyTest<br>
class MyTest {<br>
}<br>
<br>
is always a single test. You can't exclude, or re-run
a part of it.<br>
<br>
<br>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite"> <br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> - there are many tests that require
more than just a specific GC. Often there are
other flags that can't be changed either for the
test to work properly.<br>
</blockquote>
<br>
yes. conflicting GC is just the most popular
problem caused by conflicting options.<br>
If we address this issue and we are satisfied with
solution, we could move further.<br>
</blockquote>
<br>
Yes, I agree that taking one step at the time is
good. Personally I would have preferred that the
first step was a "just run the command line as
specified in the @run tag" step.<br>
<br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> <br>
Maybe this is not the right place to discuss the
current implementation of the @requires tag. I
just want to say that I'm not too happy about
how the @requires tag turned out. But assuming
we have to use it the way it is now I guess the
proposed changeset looks good.<br>
</blockquote>
<br>
yes, this thread is about change made by Evgeniya,
not about jtreg :)<br>
And thanks for reviewing it!<br>
</blockquote>
<br>
Agreed. And as I said, I think the patch looks ok. I
have not looked at all tests. But if they now pass
with the combinations that we test with I guess they
should be ok.<br>
</blockquote>
<br>
Excellent! Thanks a lot!<br>
<br>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite"> <br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> <br>
<blockquote
cite="mid:545245C5.4050504@oracle.com"
type="cite"> Tested locally with different GC
flags (-XX:+UseG1GC, -XX:+UseParallelGC,
-XX:+UseSerialGC, -XX:+UseConcMarkSweep and
without any GC flag). Tests are being excluded
as expected. No tests failed because of the
conflict.<br>
</blockquote>
Have you tested with -Xconcgc too? It's an alias
for -XX:+UseConcMarkSweepGC.<br>
</blockquote>
<br>
'-Xconcgc' is not supported yet. (bug in jtreg, I
will submit)<br>
</blockquote>
<br>
Ok. Thanks.<br>
<br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> <br>
I think some of the test, like
test/gc/startup_warnings/TestDefNewCMS.java,
will fail if you run with -XX:+UseParNewGC.
Others, like
test/gc/startup_warnings/TestParNewCMS.java,
will fail if you run with -XX:-UseParNewGC.
Could you test these two cases too?<br>
</blockquote>
<br>
These two tests ignore vm flags. <br>
Add @requires here is not necessary, but it will
allow not execute the tests when not needed.<br>
So, if we run HS tests with 4 GC, we don't need to
run these tests 4 times, 1 should be enough.<br>
</blockquote>
<br>
Do we really want to use the @requires functionality
for this purpose? It seems like a way of misusing
@requires. If we just want the tests to be run once
I think Leonid's approach with tests lists seems
more suitable.<br>
</blockquote>
<br>
No, it's not a purpose of course, it's just side
effect :)<br>
<br>
<br>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite"> But are you sure that this is the
reason for the @requires in this case? TestDefNewCMS
does sound like a test that is DefNew specific. I
don't see a reason to run it with ParNew. If it
doesn't fail today it should probably be changed so
that it does fail if it is run with the wrong GC.<br>
</blockquote>
<br>
@requires - is not the silver bullet, but it's quite
easy way to solve a lot of issues.<br>
<br>
I hope, @requires will allow to reduce the number of
"selfish" tests, which produce a new java process to
ignore vm flags coming from outside. No @requires, no
other mechanism could 100% protect a test from running
with conflicting options, but this is not the goal.<br>
<br>
If one runs tests with an exotic option, like a new G2
collector, there shouldn't mass failures caused by
options conflicts. But a few failures could be handled
manually. <br>
<br>
<br>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite"> <br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> Similarly it looks to me like there
are tests that will fail if you run them with
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
-XX:-UseParallelOldGC or -XX:+UseParallelOldGC.<br>
</blockquote>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> <br>
Just a heads up. These two tests will soon be
removed. I'm about to push a changeset that
removes them:<br>
<br>
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
test/gc/startup_warnings/TestCMSIncrementalMode.java<br>
test/gc/startup_warnings/TestCMSNoIncrementalMode.java<br>
</blockquote>
okay, thank for letting us know.<br>
<br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> <br>
Is there some way of making sure that all tests
are run at one time or another. With this change
there is a risk that some tests are never run
and always skipped. Will we somehow be tracking
what gets skipped and make sure that all tests
are at least run once with the correct GC so
that it is not skipped all the time?<br>
</blockquote>
<br>
This is a very good question! <br>
jtreg now doesn't report skipped tests, hopefully
it will do soon, after getting fix of:<br>
<a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="https://bugs.openjdk.java.net/browse/CODETOOLS-7900934">https://bugs.openjdk.java.net/browse/CODETOOLS-7900934</a><br>
<br>
And yes, tracking tests which are not run is
important thing. <br>
@requires - is not the only to exclude test from
execution.<br>
<br>
Other examples:<br>
<br>
/*<br>
*@ignore<br>
*@test<br>
*/<br>
...<br>
<br>
/*@bug 4445555<br>
*@test<br>
*/<br>
...<br>
Such tests will never be run, because jtreg treats
as test only files with @test on the first
place...<br>
<br>
So, making sure that tests do not disappear is
important SQE task, we know about that, we're
thinking on solution (may be very actively). But
this subject for another discussion, not within
RFR :)<br>
</blockquote>
<br>
Right. Glad to hear that you are actively working on
this!<br>
</blockquote>
<br>
I was going to say "not very actively", but never
mind, we know about this problem. With introducing
@requires mechanism it will become more important!<br>
<br>
<br>
Thanks for your comments!<br>
<br>
-- Dima<br>
<br>
<br>
<blockquote cite="mid:545783A1.3050300@oracle.com"
type="cite"> <br>
Bengt<br>
<br>
<blockquote cite="mid:545386E1.2050402@oracle.com"
type="cite"> <br>
Thanks,<br>
Dima<br>
<br>
<br>
<br>
<blockquote cite="mid:5452A8F7.8080709@oracle.com"
type="cite"> <br>
Thanks,<br>
Bengt<br>
<br>
<blockquote
cite="mid:545245C5.4050504@oracle.com"
type="cite"> <br>
Thanks,<br>
Evgeniya Stepanova
<div class="moz-signature"><br>
</div>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
<div class="moz-signature">-- <br>
<i>Evgeniya Stepanova</i></div>
</blockquote>
<br>
</blockquote>
<br>
<div class="moz-signature">-- <br>
<i>Evgeniya Stepanova</i></div>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>