RFR: 8059625 - JEP-JDK-8043304: Test task: DTrace- tests for segmented codecache feature
Igor Ignatyev
igor.ignatyev at oracle.com
Thu Dec 25 10:05:27 UTC 2014
I'd prefer to check privileges by running dtrace against dtrace;
and do it in DtraceRunner::dtraceAvailable, smth like
> result = false;
> dtrace = getDtracePath();
> if ($dtrace) {
> $dtrace $dtrace
> result = $? == 0;
> }
> return $result;
Igor
On 12/24/2014 11:09 PM, Dmitrij Pochepko wrote:
> Hi,
>
> i've placed a guard which skips test in case dtrace exits with non-zero
> code.
>
> http://cr.openjdk.java.net/~iignatyev/dpochepk/8059625/webrev.02/
>
> Thanks,
> Dmitrij
>> Hi,
>>
>> There is one more issues related to these tests(not directly).
>> Currently, dtrace tests can't be run in jprt, because dtrace require
>> additional previleges for launching user.
>> Perhaps it's just user to be granted previleges in jprt solaris hosts...
>> Not sure about some guard in tests... the only way i know so far is to
>> just try launching dtrace and parse output
>> saying about missing previleges, but it doesn't seem to be good solution.
>> I think test should assume to be launched in correct environment and
>> in case it's failed because of previleges, evaluating engineer
>> starting to work on respective env. issue...
>> Does anybody have some additional concerns?
>>
>> Thanks,
>> Dmitrij
>>
>>> Hi Dmitrij,
>>>
>>>
>>> There is still a typo in spelling (DESCTRUCTIVE => DESTRUCTIVE):
>>>
>>> test/testlibrary/com/oracle/java/testlibrary/dtrace/DtraceRunner.java
>>> 42 public static final String PERMIT_DESCTRUCTIVE_ACTIONS_DTRACE_OPTION = "w";
>>>
>>> test/compiler/codecache/dtrace/SegmentedCodeCacheDtraceTest.java
>>> 85 DtraceRunner.PERMIT_DESCTRUCTIVE_ACTIONS_DTRACE_OPTION,
>>>
>>>
>>> Otherwise, looks good.
>>> Please, consider it reviewed (no need to re-review).
>>>
>>> Thanks,
>>> Serguei
>>>
>>>
>>> On 12/23/14 3:36 AM, Dmitrij Pochepko wrote:
>>>> Hi,
>>>> please review updated webrev
>>>>
>>>> http://cr.openjdk.java.net/~iignatyev/dpochepk/8059625/webrev.01/
>>>>
>>>> Thanks,
>>>> Dmitrij
>>>>> On 12/23/14 12:37 AM, Dmitrij Pochepko wrote:
>>>>>> Hi,
>>>>>>
>>>>>> Thank you for catching these issues.
>>>>>> I have a question regarding last comment: does it make any
>>>>>> difference to change "reading of static member 3 times" to
>>>>>> "copying into static member of another class and then read it 3
>>>>>> times"?
>>>>>
>>>>> Yes, it does (it is a minor issue though).
>>>>> It is because the class names are pretty big.
>>>>> It would simplify the code and improve readability, right?
>>>>>
>>>>> You already do it two times:
>>>>> 179 List<Executable> tml
>>>>> 180 = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST;
>>>>> ...
>>>>> 235 List<Executable> mlist
>>>>> 236 = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST;
>>>>>
>>>>> My suggestion is to do it once somewhere before the line 74:
>>>>> static final List<Executable> MLIST = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST;
>>>>> and then use the mlist in other places where it is needed:
>>>>>
>>>>> 75 String params = MLIST.stream()
>>>>> ...
>>>>> 182 d.put(MLIST.get(i).getName(), new MethodData(MLIST.get(i).getName(),
>>>>> ...
>>>>> 239 for (int i = MLIST.size() - 1; i > -1; i--) {
>>>>> 240 sb.append(MLIST.get(i).getName()).append(delimeter);
>>>>> These lines will go away:
>>>>> 179 List<Executable> tml
>>>>> 180 = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST;
>>>>> ...
>>>>> 235 List<Executable> mlist
>>>>> 236 = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST;
>>>>>
>>>>>
>>>>> Both private static classes are inner classes of the public one.
>>>>> The MLIST will be in a context for the inner classes, and so, needs
>>>>> no prefixing.
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Serguei
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> Dmitrij
>>>>>>> Hi Dmitry,
>>>>>>>
>>>>>>>
>>>>>>> It looks good in general.
>>>>>>> Some minor comments are below.
>>>>>>>
>>>>>>> test/testlibrary/com/oracle/java/testlibrary/dtrace/DtraceRunner.java
>>>>>>>
>>>>>>> 42 public static final String PERMIT_DESCTUCTIVE_ACTIONS_DTRACE_OPTION = "w";
>>>>>>> A typo in the constant name: DESCTUCTIVE => DESTRUCTIVE
>>>>>>>
>>>>>>>
>>>>>>> test/compiler/codecache/dtrace/SegmentedCodeCacheDtraceTest.java
>>>>>>>
>>>>>>> 84 DtraceRunner.PERMIT_DESCTUCTIVE_ACTIONS_DTRACE_OPTION,
>>>>>>> A typo in the constant name: DESCTUCTIVE => DESTRUCTIVE
>>>>>>>
>>>>>>>
>>>>>>> 60 private static final String WORKER_CLASS_NAME
>>>>>>> 61 = SegmentedCodeCacheDtraceTestWorker.class.getName();
>>>>>>> ...
>>>>>>> 80 runner.runDtrace(JDKToolFinder.getTestJDKTool("java"), JAVA_OPTS,
>>>>>>> 81 SegmentedCodeCacheDtraceTestWorker.class.getName(), params,
>>>>>>> The WORKER_CLASS_NAME can be used at 81.
>>>>>>>
>>>>>>> 75 String params = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST.stream()
>>>>>>> ...
>>>>>>> 179 List<Executable> tml
>>>>>>> 180 = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST;
>>>>>>> ...
>>>>>>> 235 List<Executable> mlist
>>>>>>> 236 = SegmentedCodeCacheDtraceTestWorker.TESTED_METHODS_LIST;
>>>>>>> The TESTED_METHODS_LIST is used three times.
>>>>>>> It can be cached at the top and re-used.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Serguei
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 12/19/14 11:03 AM, Dmitrij Pochepko wrote:
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> Please review changes for
>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8059625 -
>>>>>>>> JEP-JDK-8043304: Test task: DTrace- tests for segmented
>>>>>>>> codecache feature
>>>>>>>>
>>>>>>>> Description: this fix introduce dtrace test, which verify that
>>>>>>>> different combinations of available compile levels(and, in case
>>>>>>>> compile levels allows it, different code heaps as result)
>>>>>>>> doesn't affect callstack shown by dtrace. There is a control
>>>>>>>> class SegmentedCodeCacheDtraceTest.java and class for running
>>>>>>>> via dtrace SegmentedCodeCacheDtraceTestWorker.java. A dtrace d
>>>>>>>> script is also present (SegmentedCodeCacheDtraceTestScript.d). A
>>>>>>>> control class is using DtraceRunner.java to run dtrace and then
>>>>>>>> analyzing results using class
>>>>>>>> SegmentedCodeCacheDtraceResultsAnalyzer with
>>>>>>>> DtraceResultsAnalyzer interface.
>>>>>>>> There is also a small class CompilerUtils.java created for
>>>>>>>> usefull common code.
>>>>>>>>
>>>>>>>> webrev:
>>>>>>>> http://cr.openjdk.java.net/~iignatyev/dpochepk/8059625/webrev.00/
>>>>>>>>
>>>>>>>> Additional note: Please note that this path assumes that fix for
>>>>>>>> JDK-8066440 - Various changes in testlibrary for JDK-8059613 is
>>>>>>>> also applied.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Dmitrij
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
More information about the serviceability-dev
mailing list