Review request: White box testing API for HotSpot

Mikael Gerdin mikael.gerdin at oracle.com
Fri Feb 17 07:12:12 PST 2012


I gave up on getting this into HS23 and was busy doing other stuff for HS23.
Anyway, there were some issues with the last patch so here's a rebased 
webrev that actually compiles :)

http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.5/

/Mikael

On 2012-02-17 12:21, Nils Loodin wrote:
> Sooo, what happened with this?
>
> I think that testing this framework would be an excellent fit for using in testing our diagnostic framework.
> But it kind of depends on this being actually checked in :)
>
> /Nisse
>
> On Jan 17, 2012, at 16:34 , Mikael Gerdin wrote:
>
>> David,
>>
>> On 2012-01-13 00:00, David Holmes wrote:
>>> Hi Mikael,
>>>
>>> On 13/01/2012 2:20 AM, Mikael Gerdin wrote:
>>>>> wbapi.java: normal Java naming style is to use camel-case for class
>>>>> names. Though as WB is itself an acronym I'd be okay with WBApi. In fact
>>>>> I'd be happy with anything other than initial lower-case :)
>>>>
>>>> Many of our existing tests have lower-case names so I guess I thought
>>>> that was some sort of convention, it does not really matter to me.
>>>
>>> I think those tests must have been written by C programers ;-)
>>>
>>>> WBApi it is then.
>>>
>>> Thanks.There is a slight typo in that the file is WBapi.java not WBApi.java
>>
>> Fixed.
>>
>> I also re-ran JPRT to verify that it still builds on all platforms and found that the size of a region in G1 had changed to size_t, so I added a cast to jint (region sizes of>2G seems to be unreasonable).
>>
>> I also tried with Jim Melvin's patch to run OS X and verified that "wbapitest" works on OS X as well.
>>
>> /Mikael
>>
>>>
>>> David
>>> -----
>>>
>>>>
>>>>>
>>>>> ---
>>>>>
>>>>> test/Makefile: does wbapitest need to be added to the phoney list?
>>>>
>>>> Yes, fixed.
>>>>
>>>> New webrev at:
>>>> http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.3/
>>>> Incremental at:
>>>> http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.2-to-3/webrev/
>>>>
>>>> /Mikael
>>>>
>>>>>
>>>>> ---
>>>>>
>>>>> Cheers,
>>>>> David
>>>>> -----
>>>>>
>>>>>
>>>>> On 11/01/2012 5:27 AM, Mikael Gerdin wrote:
>>>>>> Hi all
>>>>>>
>>>>>> Back from vacations now with an updated version of the webrev based on
>>>>>> the feedback received in this thread.
>>>>>> Changes include:
>>>>>> * removed install target from makefiles
>>>>>> * renamed flag form EnableWhiteBoxAPI to remove redundant Enable
>>>>>> * installs wb.jar into jre/lib and made -XX:+WhiteBoxAPI add wb.jar to
>>>>>> the boot class path from inside the VM.
>>>>>>
>>>>>> http://cr.openjdk.java.net/~mgerdin/wbapi/webrev.2/
>>>>>>
>>>>>> Thanks
>>>>>> Mikael Gerdin
>>>>>>
>>>>>> On 2011-11-29 17:04, Mikael Gerdin wrote:
>>>>>>> Hi
>>>>>>>
>>>>>>> I've been working on a white box testing API for HotSpot in order to
>>>>>>> allow for improved precision in vm testing.
>>>>>>>
>>>>>>> The basic idea is to open up the possibility for tests written in Java
>>>>>>> to call native methods which query or poke the vm in some way.
>>>>>>>
>>>>>>> The API is accessible by using the class sun/hotspot/WhiteBox which is
>>>>>>> not intended to be available in public builds.
>>>>>>> In order to allow the WhiteBox class access to the VM the
>>>>>>> registerNatives function is linked to JVM_RegisterWhiteBoxMethods.
>>>>>>> That
>>>>>>> function then links all the implementation functions using normal JNI
>>>>>>> RegisterNatives.
>>>>>>>
>>>>>>> The API is not meant to be used by end users for any intent or purpose
>>>>>>> and as such it is both guarded by "-XX:+UnlockDiagnosticVMOptions
>>>>>>> -XX:+EnableWhiteboxAPI" and the fact that the class files will not be
>>>>>>> present in an end user build of a JDK.
>>>>>>> If the VM crashes after this API has been accessed a note will be
>>>>>>> written in the hs_err file to signal that the API has been used.
>>>>>>>
>>>>>>> Webrev:
>>>>>>> http://cr.openjdk.java.net/~stefank/mgerdin/wbapi.0/webrev/
>>>>>>> (thanks to stefank for hosting my webrev :)
>>>>>>>
>>>>>>> CR:
>>>>>>> I'll file a CR tomorrow.
>>>>>>>
>>>>>>> Change comments:
>>>>>>>
>>>>>>> make/jprt.properties
>>>>>>>
>>>>>>> Add a test target to make sure that the API is available on all
>>>>>>> supported platforms
>>>>>>>
>>>>>>> make/**
>>>>>>>
>>>>>>> Makefile changes to build the class sun/hotspot/WhiteBox, put it in a
>>>>>>> JAR file and copy it to the jre/lib/endorsed directory in the export
>>>>>>> targets.
>>>>>>> The BSD makefile changes are not tested since I don't have access to
>>>>>>> any
>>>>>>> BSD/OSX machine to test them on.
>>>>>>>
>>>>>>> src/share/vm/prims/nativeLookup.cpp
>>>>>>>
>>>>>>> Special-case the method sun/hotspot/WhiteBox/registerNatives and
>>>>>>> link it
>>>>>>> to JVM_RegisterWhiteBoxMethods
>>>>>>>
>>>>>>> src/share/vm/prims/whitebox.*
>>>>>>>
>>>>>>> The implementation of the white box API. The actual API functions are
>>>>>>> only examples of what we want to be able to do using the API.
>>>>>>>
>>>>>>> src/share/vm/runtime/globals.hpp
>>>>>>>
>>>>>>> Add the command line flag
>>>>>>>
>>>>>>> src/share/vm/utilities/vmError.cpp
>>>>>>>
>>>>>>> Print a message in hs_err files when white box API has been used.
>>>>>>>
>>>>>>> test/Makefile
>>>>>>>
>>>>>>> Add a makefile test target for the white box API test
>>>>>>>
>>>>>>> test/sanity/wbapi.java
>>>>>>>
>>>>>>> JTreg test to ensure that the API works.
>>>>>>>
>>>>>>>
>>>>>>> Thanks
>>>>>>> /Mikael Gerdin
>>>>>>
>


More information about the hotspot-dev mailing list