# HG changeset patch # User ihse # Date 1425034602 -3600 # Node ID 33fb011789eb4e39709f81468c842b34b10be406 # Parent a2c7a365dde4088fa1fbd0bcdbb088be1dcdcf3e 8072842: Add support for building native JTReg tests Reviewed-by: erikj, sla diff -r a2c7a365dde4 -r 33fb011789eb jdk/make/test/JtregNative.gmk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/make/test/JtregNative.gmk Fri Feb 27 11:56:42 2015 +0100 @@ -0,0 +1,82 @@ +# +# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +################################################################################ +# This file builds the native component of the JTReg tests for JDK. +# It also covers the test-image part, where the built files are copied to the +# test image. +################################################################################ + +default: all + +include $(SPEC) +include MakeBase.gmk +include TestFilesCompilation.gmk + +################################################################################ +# Targets for building the native tests themselves. +################################################################################ + +# Add more directories here when needed. +BUILD_JDK_JTREG_NATIVE_SRC := \ + $(JDK_TOPDIR)/test/native_sanity \ + # + +BUILD_JDK_JTREG_OUTPUT_DIR := $(BUILD_OUTPUT)/support/test/jdk/jtreg/native + +BUILD_JDK_JTREG_IMAGE_DIR := $(TEST_IMAGE_DIR)/jdk/jtreg + +$(eval $(call SetupTestFilesCompilation, BUILD_JDK_JTREG_LIBRARIES, \ + TYPE := LIBRARY, \ + SOURCE_DIRS := $(BUILD_JDK_JTREG_NATIVE_SRC), \ + OUTPUT_DIR := $(BUILD_JDK_JTREG_OUTPUT_DIR), \ +)) + +$(eval $(call SetupTestFilesCompilation, BUILD_JDK_JTREG_EXECUTABLES, \ + TYPE := PROGRAM, \ + SOURCE_DIRS := $(BUILD_JDK_JTREG_NATIVE_SRC), \ + OUTPUT_DIR := $(BUILD_JDK_JTREG_OUTPUT_DIR), \ +)) + +build-test-jdk-jtreg-native: $(BUILD_JDK_JTREG_LIBRARIES) $(BUILD_JDK_JTREG_EXECUTABLES) + + +################################################################################ +# Targets for building test-image. +################################################################################ + +# Copy to jdk jtreg test image +$(eval $(call SetupCopyFiles,COPY_JDK_JTREG_NATIVE, \ + SRC := $(BUILD_JDK_JTREG_OUTPUT_DIR), \ + DEST := $(TEST_IMAGE_DIR)/jdk/jtreg/native, \ + FILES := $(BUILD_JDK_JTREG_LIBRARIES) $(BUILD_JDK_JTREG_EXECUTABLES), \ + FLATTEN := true)) + +test-image-jdk-jtreg-native: $(COPY_JDK_JTREG_NATIVE) + +all: build-test-jdk-jtreg-native +test-image: test-image-jdk-jtreg-native + +.PHONY: default all build-test-jdk-jtreg-native test-image-jdk-jtreg-native test-image diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/Makefile --- a/jdk/test/Makefile Fri Feb 27 09:58:25 2015 +0100 +++ b/jdk/test/Makefile Fri Feb 27 11:56:42 2015 +0100 @@ -1,5 +1,5 @@ # -# Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -112,6 +112,19 @@ JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS) endif +# jtreg -nativepath +# +# Local make tests will be TEST_IMAGE_DIR and JPRT with jprt.use.reg.test.bundle=true +# should be JPRT_TESTNATIVE_PATH +ifdef TEST_IMAGE_DIR + TESTNATIVE_DIR = $(TEST_IMAGE_DIR) +else ifdef JPRT_TESTNATIVE_PATH + TESTNATIVE_DIR = $(JPRT_TESTNATIVE_PATH) +endif +ifdef TESTNATIVE_DIR + JTREG_NATIVE_PATH = -nativepath:$(shell $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/jdk/jtreg/native") +endif + # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results) ifdef JPRT_ARCHIVE_BUNDLE ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE) @@ -313,6 +326,7 @@ -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \ -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \ -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \ + $(JTREG_NATIVE_PATH) \ $(JTREG_EXCLUSIONS) \ $(JTREG_TEST_OPTIONS) \ $(TEST_SELECTION) \ diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/TEST.groups --- a/jdk/test/TEST.groups Fri Feb 27 09:58:25 2015 +0100 +++ b/jdk/test/TEST.groups Fri Feb 27 11:56:42 2015 +0100 @@ -168,6 +168,9 @@ jdk_jdi = \ com/sun/jdi +jdk_native_sanity = \ + native_sanity + # java launcher specific tests, Note: do not include this group into any groups # that potentially could be included into a jprt test rule, as the complementary # closed group includes awt SplashScreen and these tests may not run diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/native_sanity/simplenativelauncher/ProgramTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/native_sanity/simplenativelauncher/ProgramTest.java Fri Feb 27 11:56:42 2015 +0100 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + /* + * @test + * @library /lib/testlibrary + * @build jdk.testlibrary.OutputAnalyzer + * @build ProgramTest + * @run main/native ProgramTest + */ + +import jdk.testlibrary.OutputAnalyzer; +import jdk.testlibrary.ProcessTools; + +public class ProgramTest { + public static void main(String... args) throws Exception { + String lib = System.getProperty("test.nativepath"); + ProcessBuilder pb = new ProcessBuilder(lib + "/sanity_SimpleNativeLauncher"); + OutputAnalyzer output = ProcessTools.executeProcess(pb); + output.shouldHaveExitValue(0); + output.stdoutShouldContain("Hello"); + } +} diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/native_sanity/simplenativelauncher/exesanity_SimpleNativeLauncher.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/native_sanity/simplenativelauncher/exesanity_SimpleNativeLauncher.c Fri Feb 27 11:56:42 2015 +0100 @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + #include + +int +main(int argc, char** argv) +{ + printf("Hello\n"); + return 0; +} diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/native_sanity/simplenativelib/NativeLib.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/native_sanity/simplenativelib/NativeLib.java Fri Feb 27 11:56:42 2015 +0100 @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + /* + * @test + * @run main/native NativeLib + */ + +public class NativeLib { + public static void main(String... args) throws Exception { + System.loadLibrary("sanity_SimpleNativeLib"); + + int res = nativeFunc(); + if (res != 4711) { + throw new Exception("Wrong value returned from native code: " + res); + } + } + + static native int nativeFunc(); +} diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/native_sanity/simplenativelib/libsanity_SimpleNativeLib.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/native_sanity/simplenativelib/libsanity_SimpleNativeLib.c Fri Feb 27 11:56:42 2015 +0100 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + #include + +JNIEXPORT jint JNICALL +Java_NativeLib_nativeFunc(JNIEnv *env, jclass dummy) +{ + return 4711; +} diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/native_sanity/simplenativelib2/NativeLib.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/native_sanity/simplenativelib2/NativeLib.java Fri Feb 27 11:56:42 2015 +0100 @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + /* + * @test + * @run main/native NativeLib + */ + +public class NativeLib { + public static void main(String... args) throws Exception { + System.loadLibrary("sanity_SimpleNativeLib2"); + + int res = nativeFunc(); + if (res != 4712) { + throw new Exception("Wrong value returned from native code: " + res); + } + } + + static native int nativeFunc(); +} diff -r a2c7a365dde4 -r 33fb011789eb jdk/test/native_sanity/simplenativelib2/libsanity_SimpleNativeLib2.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/native_sanity/simplenativelib2/libsanity_SimpleNativeLib2.c Fri Feb 27 11:56:42 2015 +0100 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + + #include + +JNIEXPORT jint JNICALL +Java_NativeLib_nativeFunc(JNIEnv *env, jclass dummy) +{ + return 4712; +}