On 2017/6/9 12:19, Igor Ignatyev wrote:
Hi Hamlin,
Hi Igor,

Thank you for explanation.
I'm going to add explicit @build for jdk.test.lib.** classes in jdk tests which are in :tier[1-3].
Got it.
unfortunately this approach does not work if a test depends on a library indirectly, e.g. you might have a couple of tests which share some code (but not from /test/lib or /jdk/test/lib/testlibrary) and this code depends on a testlibrary, so you will need to analyze test classes files, which is not much different from analyzing them to get all explicit @build. since your approach works only if all testlibrary classes are in a package, we will need to update lots of test which use classes from default package, which makes it a bit more painful.
I see. Yes, it's lot of extra clean-up of test library.
but the main disadvantage is the assumption that all tests must follow this rule, and if one test does not follow it, this test might pass, while other innocent tests will fail.
I agree, the most failing tests are not the root cause but just victim, that's the reason to clean up all tests not just "fix" the failing ones.
if we were considering approaches w/ such flaw, I'd strongly recommend to simply remove all @build actions (except needed due to reflection accesses) and have the straightforward rule to follow and one-liner to check this rule.
Got it. Maybe the most thorough/simple solution is to just separate tests output from each other totally.

Thank you for
-Hamlin

-- Igor
On Jun 8, 2017, at 7:58 PM, Hamlin Li <huaming...@oracle.com <mailto:huaming...@oracle.com>> wrote:

Hi Igor,

I'm coping Jon as it needs Jon's comments.


Thank you for doing such a great refactoring, I believe it will make tests run more stable.

I saw you are adding explicit @build to lots of test, are you going to clean up all tests to add explicit @build? If the answer is "yes", then I have a possible simple solution for you to consider.

Steps:

1. refactor all test library classes in unnamed packages to named package.

2. just need to add explicit @build for every "import x.y.z;" in a test, means you only need to add @build for every test lib class directly used by your test, lib classes' dependency is not needed. e.g. there is a test containing only "import jdk.test.lib.process.ProcessTools;", then only need to add "@build jdk.test.lib.process.ProcessTools", and no @build is needed to be added for jdk.test.lib.process.StreamPumper, jdk.test.lib.JDKToolFinder and jdk.test.lib.Utils and further dependency if they have.

This solution is based on the situation that all tests will be added @build for all test lib classes they directly used, that means no test is allow to just add "@library xxx".

The advantage of this solution is:

1. the rule is simple to follow, reduce the pain for engineer writing the tests.

2. it might be possible to do it automatically, and have a tool to monitor all checked-in test code by this rule;

3. no need to refactor the test lib too much, e.g. no need to remove the dependency between test lib packages;


Of course, Jon's original strict solution is absolutely correct: to add @build for all test lib classes even if for the implicitly dependent classes. Jon's strict solution is for a more complicated situation where some tests are using explicit @build, but others are not, in this mixed situation my solution will *NOT* work. But as you're cleaning up all the tests, I think it's not necessary to follow such a strict rule.


I might miss something, please correct me then.


Thank you

-Hamlin


On 2017/6/8 15:20, Igor Ignatyev wrote:
http://cr.openjdk.java.net/~iignatyev//8181761/webrev.00/index.html
432 lines changed: 404 ins; 1 del; 27 mod;
Hi all,

could you please review this changeset which adds explicit @build actions to 
tier2 jdk tests? other tests will be updated by the corresponding sub-tasks of 
8181758[1].

webrev:http://cr.openjdk.java.net/~iignatyev//8181761/webrev.00/index.html
jbs:https://bugs.openjdk.java.net/browse/JDK-8181761
testing: :tier2 (in progress)

[1]https://bugs.openjdk.java.net/browse/JDK-8181758

Thanks,
-- Igor



Reply via email to