jtreg - building java and cpp test
Staffan Larsen
staffan.larsen at oracle.com
Fri Nov 20 07:20:23 UTC 2015
Here are some examples of tests using -nativepath in the hotspot repo:
$(HOTSPOT_TOPDIR)/test/native_sanity \
$(HOTSPOT_TOPDIR)/test/runtime/jni/8025979 \
$(HOTSPOT_TOPDIR)/test/runtime/jni/8033445 \
$(HOTSPOT_TOPDIR)/test/runtime/jni/ToStringInInterfaceTest \
$(HOTSPOT_TOPDIR)/test/runtime/SameObject \
(list copied from hotspot/make/test/JtregNative.gmk)
/Staffan
> On 19 nov. 2015, at 22:45, Pete Brunet <peter.brunet at oracle.com> wrote:
>
> Yes, I saw that. But I don't see how to write my test to use it. Where
> do I put my cpp file so it ends up in whatever $(shell $(GETMIXEDPATH)
> "$(TESTNATIVE_DIR)/jdk/jtreg/native") is. I searched for a jtreg/native
> under my entire tree including the build output and didn't find it.
> That's why it seems noone is using this feature. But maybe I am missing
> something. I'm hoping someone has already done this so I can use that
> as a prototype.
>
> BTW, I found https://bugs.openjdk.java.net/browse/JDK-8072842 which
> added the infrastructure last February but didn't find any helpful
> information there.
>
> Pete
>
> On 11/19/15 3:36 PM, Jonathan Gibbons wrote:
>> Pete,
>>
>> I see a few uses in the hotspot/ and jdk/ repos.
>>
>> $ grep --recursive nativepath make */make test */test
>> hotspot/test/Makefile:# jtreg -nativepath <dir>
>> hotspot/test/Makefile: JTREG_NATIVE_PATH = -nativepath:$(shell
>> $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/hotspot/jtreg/native")
>> jdk/test/native_sanity/simplenativelauncher/ProgramTest.java: String
>> lib = System.getProperty("test.nativepath");
>> jdk/test/Makefile:# jtreg -nativepath <dir>
>> jdk/test/Makefile: JTREG_NATIVE_PATH = -nativepath:$(shell
>> $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/jdk/jtreg/native")
>>
>> -- Jon
>>
>>
>>
>> On 11/19/2015 01:08 PM, Pete Brunet wrote:
>>>
>>> On 11/19/15 3:07 PM, Pete Brunet wrote:
>>>> Thanks Jonathan, Is -native in use? I see some infrastructure for it
>>>> but can't find (yet) that it's actually in use. -Pete
>>> s/native/nativepath/
>>>> On 11/19/15 12:44 PM, Jonathan Gibbons wrote:
>>>>> On 11/19/2015 07:46 AM, Pete Brunet wrote:
>>>>>> Hi, I need to build a regression test that has both Java and C++
>>>>>> code.
>>>>>> I see some similar cases in the test tree and they include the exe of
>>>>>> the cpp file. I also see a Makefile. If I run the test without
>>>>>> the exe
>>>>>> it is not built so what is the Makefile for? Documentation?
>>>>>>
>>>>>> The Makefile I used as a prototype has
>>>>>> cl -o name.exe name.cpp name.lib name.lib
>>>>>> but when I ran make at the command line cl was not found but at
>>>>>> least at
>>>>>> this point I don't see the need to look into the cl failure if the
>>>>>> Makefile is just for documentation.
>>>>>>
>>>>>> Pete
>>>>> jtreg has no direct, complete solution for mixed code like this, and
>>>>> is unlikely to support
>>>>> it any time soon.
>>>>>
>>>>> You can use Makefiles from a shell script, but that is unlikely to be
>>>>> successful in a
>>>>> broad multi-platform world, like OpenJDK. Not only is it problematic
>>>>> to know what
>>>>> compiler to use and where to find it, but at least in our internal
>>>>> test infrastructure,
>>>>> the test machines may not even have the native code compilers
>>>>> installed.
>>>>> (i.e. it is common practice to build and test on different host
>>>>> systems.)
>>>>>
>>>>> The compromise solution we adopted in conjunction with the Hotspot SQE
>>>>> team
>>>>> is to use the OpenJDK build process to compile the C/C++ code needed
>>>>> for the tests.
>>>>> The build has the info needed on how to do platform-specific
>>>>> compilation of native
>>>>> code. The build can then generate a bundle that can be passed to
>>>>> jtreg with the
>>>>> -nativepath option.
>>>>>
>>>>> I cannot speak to the existence of Makefiles appearing in the
>>>>> regression test suite.
>>>>> Sometimes they are used manually to create native files that are
>>>>> checked in to the
>>>>> repo (uugh) and sometimes the tests are restricted to run on a limited
>>>>> set of platforms
>>>>> (e.g. Windows only, or Unix only.)
>>>>>
>>>>> -- Jon
>>
>
More information about the jtreg-use
mailing list