RFR(M): JDK-8165805 - [TESTBUG] CDS needs to support JVMTI CFLH - test development

Daniel D. Daugherty daniel.daugherty at oracle.com
Wed Sep 14 21:33:23 UTC 2016


On 9/13/16 11:08 PM, Mikhailo Seledtsov wrote:
> Thank you again for review. I have implemented all the review 
> recommendations.
> The update also contains new test case from Jiangli to test super/sub 
> class pair, where super and sub classes belong to different packages.
> Thank you Jiangli for the test case.
>
> Here is an updated webrev: 
> http://cr.openjdk.java.net/~mseledtsov/8165805.02/

test/runtime/SharedArchiveFile/CDSTestUtils.java
     L50:         if ( (output.getExitValue() == 1) && (
         nit: extrace space between '(' and '('.

         Would an exit value != 0 be better/more general? I'm going to
         guess that all of the mapping failure strings are accompanied
         by an exit_code == 1.

     L61:         } else {
     L62:             return false;
     L63:         }
     L64:     }

         Perhaps:

         L61:         }
         L62:         return false;
         L63:     }

     L66:     // check result of 'exec' operation, that is when JVM is 
ran using the archive
         Typo: 'is ran' -> 'is run'



test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/Implementor.java
     No comments.

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/Interface.java
     No comments.

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/SubClass.java
     No comments.

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/SuperClazz.java
     No comments.

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TestEntry.java
     No comments.

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformInterfaceAndImplementor.java
     L26  * @summary Exercise initial transformation (class file loader 
hook)

         Typo: "loader" -> "load" or use the event name: ClassFileLoadHook

     L29:  * @requires (vm.opt.UseCompressedOops == null) | 
(vm.opt.UseCompressedOops == true)
     L30:  * @requires vm.flavor != "minimal"
         Should there be a comment somewhere explaining why this test
         can't be run with -XX:-UseCompressedOops or with the minimal VM?
         I'm not completely up to speed to @requires style...

     L41: // The transformation is done via Java Instrumentaiton
         typo: 'Java Instrumentaiton' -> JLI/JPLIS

     L42: // Class File Loader Hook facility.
         typo: 'Loader' -> 'Load'

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformRelatedClasses.java
     L40: //     TransformInterfaceAndImplementor, 
TransformSuperAndSubClasses.java
         Remove '.java' from the end since you are talking about classes?

     L42: //     the shared archive), running test cases and checking 
the results.
         Typo: 'the shared' -> 'and the shared'

     L49: // For more details, see the test classes code and comments.
         Typo: "test classes" -> "test classes'" (possessive)

     L55: // Other utility/helper classes used in this test:
         Perhaps "classes" -> "classes and files" since TransformerAgent.mf
         is not a class.

     L56: //     TransformerAgent -- an agent that is used when 
JVM-under-test is executed
         Typo: '--' -> '-' (consistency)

     L59: //     CDSTestUtils.java - Test Utilities common to all CDS tests
         Remove '.java' since you are talking about classes?

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperAndSubClasses.java
     L27:  * @summary Exercise initial transformation (class file loader 
hook)

         Typo: "loader" -> "load" or use the event name: ClassFileLoadHook

     Same question about @requires lines.

     L42: // The transformation is done via Java Instrumentaiton
         typo: 'Java Instrumentaiton' -> JLI/JPLIS

     L43: // Class File Loader Hook facility.
         typo: 'Loader' -> 'Load'

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformSuperSubTwoPckgs.java
     L27:  * @summary Exercise initial transformation (class file loader 
hook)

         Typo: "loader" -> "load" or use the event name: ClassFileLoadHook

     Same question about @requires lines.

     L43: // The transformation is done via Java Instrumentaiton
         typo: 'Java Instrumentaiton' -> JLI/JPLIS

     L44: // Class File Loader Hook facility.
         typo: 'Loader' -> 'Load'

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/TransformTestCommon.java
     L33:     public static String
     L34:         getAgentParams(TestEntry entry, String parent, String 
child) {
         These two lines broken in a strange place. If the function def 
is too
         long the line break is usually in the parameter list.

     L99:         // If was not able to map an archive,
         Typo: "If was not" -> "If we were not"

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/myPkg1/SuperClazz.java
     No comments.

test/runtime/SharedArchiveFile/serviceability/transformRelatedClasses/myPkg2/SubClass.java
     No comments.

test/testlibrary/jvmti/TransformUtil.java
     No comments.

test/testlibrary/jvmti/TransformerAgent.java
     L25: import java.lang.instrument.Instrumentation;
     L26: import java.lang.instrument.IllegalClassFormatException;
         nit: wrong sort order

     L30: // This is a test ulitilty class used to transform
         typo: 'ulitilty' -> 'utility'

test/testlibrary/jvmti/TransformerAgent.mf
     No comments.


Thumbs up! I don't see anything other than typos and nits here.
Feel free to clean these up or not. Your call.

Dan


>
> Thank you,
> Misha
>
> On 9/9/16, 7:31 PM, Mikhailo Seledtsov wrote:
>>     Please review the tests that accompany the changes for
>>     "JDK-8078644 - CDS needs to support JVMTI CFLH"
>>
>>     The tests include several test cases that are produced by 
>> combination
>>     of transforming related classes: super/sub class and 
>> interface/implementor.
>>     The classes reside in CDS archive. Tests check to ensure that 
>> correct
>>     transformation is performed, classes are loaded from the archive 
>> only when appropriate,
>>     and that test process using the archive completes w/o 
>> errors/crashes.
>>
>>
>>     Details:
>>
>>     The main class is TransformRelatedClasses.java; start review with 
>> this class.
>>     Other classes are:
>>       - TransformSuperAndSubClasses.java, 
>> TransformInterfaceAndImplementor.java
>>         the "actual tests", but really just test headers calling into 
>> TransformRelatedClasses.java
>>
>>       - TransformTestCommon.java - common methods for transformation 
>> tests
>>
>>       - TestEntry.java - an entry into combinatorial test table 
>> representing a single test case
>>
>>       - CDSTestUtils.java, TransformUtil.java - utility classes that 
>> are common  CDS
>>         tests
>>
>>       - TransformerAgent.java - agent that performs transformation 
>> (comes with .mf file)
>>
>>
>>     JBS: https://bugs.openjdk.java.net/browse/JDK-8165805
>>     Webrev: http://cr.openjdk.java.net/~mseledtsov/8165805.00/
>>     Testing:
>>         Ran these tests on a standard set of platforms thru automated 
>> test system.
>>
>> Thank you,
>> Misha
>>



More information about the hotspot-runtime-dev mailing list