Review request: White box testing API for HotSpot

Nils Loodin nils.loodin at oracle.com
Fri Feb 17 03:21:37 PST 2012


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