mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8211977: move testlibrary tests into one place
Reviewed-by: erikj, dholmes, ihse
This commit is contained in:
parent
5073b8c163
commit
e7f8e1fdb5
35 changed files with 243 additions and 605 deletions
|
@ -640,6 +640,18 @@ $(eval $(call SetupTarget, test-image-jdk-jtreg-native, \
|
||||||
DEPS := build-test-jdk-jtreg-native, \
|
DEPS := build-test-jdk-jtreg-native, \
|
||||||
))
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupTarget, build-test-libtest-jtreg-native, \
|
||||||
|
MAKEFILE := test/JtregNativeLibTest, \
|
||||||
|
TARGET := build-test-libtest-jtreg-native, \
|
||||||
|
DEPS := buildtools-jdk, \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupTarget, test-image-libtest-jtreg-native, \
|
||||||
|
MAKEFILE := test/JtregNativeLibTest, \
|
||||||
|
TARGET := test-image-libtest-jtreg-native, \
|
||||||
|
DEPS := build-test-libtest-jtreg-native, \
|
||||||
|
))
|
||||||
|
|
||||||
$(eval $(call SetupTarget, build-test-hotspot-jtreg-graal, \
|
$(eval $(call SetupTarget, build-test-hotspot-jtreg-graal, \
|
||||||
MAKEFILE := test/JtregGraalUnit, \
|
MAKEFILE := test/JtregGraalUnit, \
|
||||||
TARGET := build-test-hotspot-jtreg-graal, \
|
TARGET := build-test-hotspot-jtreg-graal, \
|
||||||
|
@ -982,6 +994,7 @@ else
|
||||||
interim-image: $(INTERIM_JMOD_TARGETS)
|
interim-image: $(INTERIM_JMOD_TARGETS)
|
||||||
|
|
||||||
build-test-hotspot-jtreg-native: hotspot-$(JVM_VARIANT_MAIN)-libs
|
build-test-hotspot-jtreg-native: hotspot-$(JVM_VARIANT_MAIN)-libs
|
||||||
|
build-test-libtest-jtreg-native: hotspot-$(JVM_VARIANT_MAIN)-libs
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1105,7 +1118,7 @@ endif
|
||||||
docs-image: docs-jdk
|
docs-image: docs-jdk
|
||||||
|
|
||||||
# This target builds the test image
|
# This target builds the test image
|
||||||
test-image: prepare-test-image test-image-jdk-jtreg-native test-image-demos-jdk
|
test-image: prepare-test-image test-image-jdk-jtreg-native test-image-demos-jdk test-image-libtest-jtreg-native
|
||||||
|
|
||||||
ifneq ($(JVM_TEST_IMAGE_TARGETS), )
|
ifneq ($(JVM_TEST_IMAGE_TARGETS), )
|
||||||
# If JVM_TEST_IMAGE_TARGETS is externally defined, use it instead of the
|
# If JVM_TEST_IMAGE_TARGETS is externally defined, use it instead of the
|
||||||
|
|
|
@ -342,11 +342,13 @@ hotspot_JTREG_MAX_MEM := 0
|
||||||
hotspot_JTREG_ASSERT := false
|
hotspot_JTREG_ASSERT := false
|
||||||
hotspot_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/hotspot/jtreg/native
|
hotspot_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/hotspot/jtreg/native
|
||||||
jdk_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/jdk/jtreg/native
|
jdk_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/jdk/jtreg/native
|
||||||
|
lib-test_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/lib-test/jtreg/native
|
||||||
|
|
||||||
jdk_JTREG_PROBLEM_LIST += $(TOPDIR)/test/jdk/ProblemList.txt
|
jdk_JTREG_PROBLEM_LIST += $(TOPDIR)/test/jdk/ProblemList.txt
|
||||||
jaxp_JTREG_PROBLEM_LIST += $(TOPDIR)/test/jaxp/ProblemList.txt
|
jaxp_JTREG_PROBLEM_LIST += $(TOPDIR)/test/jaxp/ProblemList.txt
|
||||||
langtools_JTREG_PROBLEM_LIST += $(TOPDIR)/test/langtools/ProblemList.txt
|
langtools_JTREG_PROBLEM_LIST += $(TOPDIR)/test/langtools/ProblemList.txt
|
||||||
hotspot_JTREG_PROBLEM_LIST += $(TOPDIR)/test/hotspot/jtreg/ProblemList.txt
|
hotspot_JTREG_PROBLEM_LIST += $(TOPDIR)/test/hotspot/jtreg/ProblemList.txt
|
||||||
|
lib-test_JTREG_PROBLEM_LIST += $(TOPDIR)/test/lib-test/ProblemList.txt
|
||||||
|
|
||||||
langtools_JTREG_MAX_MEM := 768m
|
langtools_JTREG_MAX_MEM := 768m
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ $(eval $(call IncludeCustomExtension, common/FindTests.gmk))
|
||||||
TEST_BASEDIRS += $(TOPDIR)/test $(TOPDIR)
|
TEST_BASEDIRS += $(TOPDIR)/test $(TOPDIR)
|
||||||
|
|
||||||
# JTREG_TESTROOTS might have been set by a custom extension
|
# JTREG_TESTROOTS might have been set by a custom extension
|
||||||
JTREG_TESTROOTS += $(addprefix $(TOPDIR)/test/, hotspot/jtreg jdk langtools jaxp)
|
JTREG_TESTROOTS += $(addprefix $(TOPDIR)/test/, hotspot/jtreg jdk langtools jaxp lib-test)
|
||||||
|
|
||||||
# Extract the names of the Jtreg group files from the TEST.ROOT files. The
|
# Extract the names of the Jtreg group files from the TEST.ROOT files. The
|
||||||
# TEST.ROOT files being properties files can be interpreted as makefiles so
|
# TEST.ROOT files being properties files can be interpreted as makefiles so
|
||||||
|
|
|
@ -872,10 +872,8 @@ BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exesigtest := -ljvm
|
||||||
ifeq ($(call isTargetOs, windows), true)
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
|
BUILD_HOTSPOT_JTREG_EXECUTABLES_CFLAGS_exeFPRegs := -MT
|
||||||
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c
|
BUILD_HOTSPOT_JTREG_EXCLUDE += exesigtest.c libterminatedThread.c
|
||||||
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exejvm-test-launcher := jvm.lib
|
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit := jvm.lib
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libatExit := jvm.lib
|
||||||
else
|
else
|
||||||
BUILD_HOTSPOT_JTREG_EXECUTABLES_LIBS_exejvm-test-launcher := -ljvm
|
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libbootclssearch_agent += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libbootclssearch_agent += -lpthread
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libsystemclssearch_agent += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libsystemclssearch_agent += -lpthread
|
||||||
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetsysprop001 += -lpthread
|
BUILD_HOTSPOT_JTREG_LIBRARIES_LIBS_libgetsysprop001 += -lpthread
|
||||||
|
|
94
make/test/JtregNativeLibTest.gmk
Normal file
94
make/test/JtregNativeLibTest.gmk
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020, 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 testlibrary.
|
||||||
|
# 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
|
||||||
|
|
||||||
|
$(eval $(call IncludeCustomExtension, test/JtregNativeLibTest.gmk))
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Targets for building the native tests themselves.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# This might have been added to by a custom extension.
|
||||||
|
BUILD_LIBTEST_JTREG_NATIVE_SRC += $(TOPDIR)/test/lib-test
|
||||||
|
|
||||||
|
BUILD_LIBTEST_JTREG_OUTPUT_DIR := $(OUTPUTDIR)/support/test/lib-test/jtreg/native
|
||||||
|
|
||||||
|
BUILD_LIBTEST_JTREG_IMAGE_DIR := $(TEST_IMAGE_DIR)/lib-test/jtreg
|
||||||
|
|
||||||
|
ifeq ($(call isTargetOs, windows), true)
|
||||||
|
BUILD_LIBTEST_JTREG_EXECUTABLES_LIBS_exejvm-test-launcher := jvm.lib
|
||||||
|
else
|
||||||
|
BUILD_LIBTEST_JTREG_EXECUTABLES_LIBS_exejvm-test-launcher := -ljvm
|
||||||
|
endif
|
||||||
|
|
||||||
|
# This evaluation is expensive and should only be done if this target was
|
||||||
|
# explicitly called.
|
||||||
|
ifneq ($(filter build-test-libtest-jtreg-native, $(MAKECMDGOALS)), )
|
||||||
|
$(eval $(call SetupTestFilesCompilation, BUILD_LIBTEST_JTREG_LIBRARIES, \
|
||||||
|
TYPE := LIBRARY, \
|
||||||
|
SOURCE_DIRS := $(BUILD_LIBTEST_JTREG_NATIVE_SRC), \
|
||||||
|
OUTPUT_DIR := $(BUILD_LIBTEST_JTREG_OUTPUT_DIR), \
|
||||||
|
EXCLUDE := $(BUILD_LIBTEST_JTREG_EXCLUDE), \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call SetupTestFilesCompilation, BUILD_LIBTEST_JTREG_EXECUTABLES, \
|
||||||
|
TYPE := PROGRAM, \
|
||||||
|
SOURCE_DIRS := $(BUILD_LIBTEST_JTREG_NATIVE_SRC), \
|
||||||
|
OUTPUT_DIR := $(BUILD_LIBTEST_JTREG_OUTPUT_DIR), \
|
||||||
|
EXCLUDE := $(BUILD_LIBTEST_JTREG_EXCLUDE), \
|
||||||
|
))
|
||||||
|
endif
|
||||||
|
|
||||||
|
build-test-libtest-jtreg-native: $(BUILD_LIBTEST_JTREG_LIBRARIES) $(BUILD_LIBTEST_JTREG_EXECUTABLES)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Targets for building test-image.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Copy to lib-test jtreg test image
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_LIBTEST_JTREG_NATIVE, \
|
||||||
|
SRC := $(BUILD_LIBTEST_JTREG_OUTPUT_DIR), \
|
||||||
|
DEST := $(TEST_IMAGE_DIR)/lib-test/jtreg/native, \
|
||||||
|
FILES := $(wildcard $(addprefix $(BUILD_LIBTEST_JTREG_OUTPUT_DIR), /bin/* /lib/*)), \
|
||||||
|
FLATTEN := true, \
|
||||||
|
))
|
||||||
|
|
||||||
|
test-image-libtest-jtreg-native: $(COPY_LIBTEST_JTREG_NATIVE)
|
||||||
|
|
||||||
|
all: build-test-libtest-jtreg-native
|
||||||
|
test-image: test-image-libtest-jtreg-native
|
||||||
|
|
||||||
|
.PHONY: default all build-test-libtest-jtreg-native test-image-libtest-jtreg-native test-image
|
|
@ -309,7 +309,6 @@ tier1_runtime = \
|
||||||
-runtime/Thread/TestThreadDumpMonitorContention.java \
|
-runtime/Thread/TestThreadDumpMonitorContention.java \
|
||||||
-runtime/Unsafe/RangeCheck.java \
|
-runtime/Unsafe/RangeCheck.java \
|
||||||
sanity/ \
|
sanity/ \
|
||||||
testlibrary_tests/TestMutuallyExclusivePlatformPredicates.java \
|
|
||||||
-:tier1_runtime_appcds_exclude \
|
-:tier1_runtime_appcds_exclude \
|
||||||
-runtime/signal
|
-runtime/signal
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A simple way to test JVMTI ClassFileLoadHook. See ../testlibrary_tests/SimpleClassFileLoadHookTest.java
|
* A simple way to test JVMTI ClassFileLoadHook. See ../testlibrary_tests/jvmti/SimpleClassFileLoadHookTest.java
|
||||||
* for an example.
|
* for an example.
|
||||||
*/
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
|
@ -1,238 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2013, 2016, 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import static jdk.test.lib.Asserts.*;
|
|
||||||
|
|
||||||
/* @test
|
|
||||||
* @summary Tests the different assertions in the Assert class
|
|
||||||
* @modules java.base/jdk.internal.misc
|
|
||||||
* @library /test/lib
|
|
||||||
*/
|
|
||||||
public class AssertsTest {
|
|
||||||
private static class Foo implements Comparable<Foo> {
|
|
||||||
final int id;
|
|
||||||
public Foo(int id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int compareTo(Foo f) {
|
|
||||||
return new Integer(id).compareTo(new Integer(f.id));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
|
||||||
testLessThan();
|
|
||||||
testLessThanOrEqual();
|
|
||||||
testEquals();
|
|
||||||
testGreaterThanOrEqual();
|
|
||||||
testGreaterThan();
|
|
||||||
testNotEquals();
|
|
||||||
testNull();
|
|
||||||
testNotNull();
|
|
||||||
testTrue();
|
|
||||||
testFalse();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testLessThan() throws Exception {
|
|
||||||
expectPass(Assertion.LT, 1, 2);
|
|
||||||
|
|
||||||
expectFail(Assertion.LT, 2, 2);
|
|
||||||
expectFail(Assertion.LT, 2, 1);
|
|
||||||
expectFail(Assertion.LT, null, 2);
|
|
||||||
expectFail(Assertion.LT, 2, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testLessThanOrEqual() throws Exception {
|
|
||||||
expectPass(Assertion.LTE, 1, 2);
|
|
||||||
expectPass(Assertion.LTE, 2, 2);
|
|
||||||
|
|
||||||
expectFail(Assertion.LTE, 3, 2);
|
|
||||||
expectFail(Assertion.LTE, null, 2);
|
|
||||||
expectFail(Assertion.LTE, 2, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testEquals() throws Exception {
|
|
||||||
expectPass(Assertion.EQ, 1, 1);
|
|
||||||
expectPass(Assertion.EQ, null, null);
|
|
||||||
|
|
||||||
Foo f1 = new Foo(1);
|
|
||||||
expectPass(Assertion.EQ, f1, f1);
|
|
||||||
|
|
||||||
Foo f2 = new Foo(1);
|
|
||||||
expectFail(Assertion.EQ, f1, f2);
|
|
||||||
expectFail(Assertion.LTE, null, 2);
|
|
||||||
expectFail(Assertion.LTE, 2, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testGreaterThanOrEqual() throws Exception {
|
|
||||||
expectPass(Assertion.GTE, 1, 1);
|
|
||||||
expectPass(Assertion.GTE, 2, 1);
|
|
||||||
|
|
||||||
expectFail(Assertion.GTE, 1, 2);
|
|
||||||
expectFail(Assertion.GTE, null, 2);
|
|
||||||
expectFail(Assertion.GTE, 2, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testGreaterThan() throws Exception {
|
|
||||||
expectPass(Assertion.GT, 2, 1);
|
|
||||||
|
|
||||||
expectFail(Assertion.GT, 1, 1);
|
|
||||||
expectFail(Assertion.GT, 1, 2);
|
|
||||||
expectFail(Assertion.GT, null, 2);
|
|
||||||
expectFail(Assertion.GT, 2, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testNotEquals() throws Exception {
|
|
||||||
expectPass(Assertion.NE, null, 1);
|
|
||||||
expectPass(Assertion.NE, 1, null);
|
|
||||||
|
|
||||||
Foo f1 = new Foo(1);
|
|
||||||
Foo f2 = new Foo(1);
|
|
||||||
expectPass(Assertion.NE, f1, f2);
|
|
||||||
|
|
||||||
expectFail(Assertion.NE, null, null);
|
|
||||||
expectFail(Assertion.NE, f1, f1);
|
|
||||||
expectFail(Assertion.NE, 1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testNull() throws Exception {
|
|
||||||
expectPass(Assertion.NULL, null);
|
|
||||||
|
|
||||||
expectFail(Assertion.NULL, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testNotNull() throws Exception {
|
|
||||||
expectPass(Assertion.NOTNULL, 1);
|
|
||||||
|
|
||||||
expectFail(Assertion.NOTNULL, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testTrue() throws Exception {
|
|
||||||
expectPass(Assertion.TRUE, true);
|
|
||||||
|
|
||||||
expectFail(Assertion.TRUE, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void testFalse() throws Exception {
|
|
||||||
expectPass(Assertion.FALSE, false);
|
|
||||||
|
|
||||||
expectFail(Assertion.FALSE, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static <T extends Comparable<T>> void expectPass(Assertion assertion, T ... args)
|
|
||||||
throws Exception {
|
|
||||||
Assertion.run(assertion, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static <T extends Comparable<T>> void expectFail(Assertion assertion, T ... args)
|
|
||||||
throws Exception {
|
|
||||||
try {
|
|
||||||
Assertion.run(assertion, args);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
throw new Exception("Expected " + Assertion.format(assertion, (Object[]) args) +
|
|
||||||
" to throw a RuntimeException");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
enum Assertion {
|
|
||||||
LT, LTE, EQ, GTE, GT, NE, NULL, NOTNULL, FALSE, TRUE;
|
|
||||||
|
|
||||||
public static <T extends Comparable<T>> void run(Assertion assertion, T ... args) {
|
|
||||||
String msg = "Expected " + format(assertion, args) + " to pass";
|
|
||||||
switch (assertion) {
|
|
||||||
case LT:
|
|
||||||
assertLessThan(args[0], args[1], msg);
|
|
||||||
break;
|
|
||||||
case LTE:
|
|
||||||
assertLessThanOrEqual(args[0], args[1], msg);
|
|
||||||
break;
|
|
||||||
case EQ:
|
|
||||||
assertEquals(args[0], args[1], msg);
|
|
||||||
break;
|
|
||||||
case GTE:
|
|
||||||
assertGreaterThanOrEqual(args[0], args[1], msg);
|
|
||||||
break;
|
|
||||||
case GT:
|
|
||||||
assertGreaterThan(args[0], args[1], msg);
|
|
||||||
break;
|
|
||||||
case NE:
|
|
||||||
assertNotEquals(args[0], args[1], msg);
|
|
||||||
break;
|
|
||||||
case NULL:
|
|
||||||
assertNull(args == null ? args : args[0], msg);
|
|
||||||
break;
|
|
||||||
case NOTNULL:
|
|
||||||
assertNotNull(args == null ? args : args[0], msg);
|
|
||||||
break;
|
|
||||||
case FALSE:
|
|
||||||
assertFalse((Boolean) args[0], msg);
|
|
||||||
break;
|
|
||||||
case TRUE:
|
|
||||||
assertTrue((Boolean) args[0], msg);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String format(Assertion assertion, Object ... args) {
|
|
||||||
switch (assertion) {
|
|
||||||
case LT:
|
|
||||||
return asString("assertLessThan", args);
|
|
||||||
case LTE:
|
|
||||||
return asString("assertLessThanOrEqual", args);
|
|
||||||
case EQ:
|
|
||||||
return asString("assertEquals", args);
|
|
||||||
case GTE:
|
|
||||||
return asString("assertGreaterThanOrEquals", args);
|
|
||||||
case GT:
|
|
||||||
return asString("assertGreaterThan", args);
|
|
||||||
case NE:
|
|
||||||
return asString("assertNotEquals", args);
|
|
||||||
case NULL:
|
|
||||||
return asString("assertNull", args);
|
|
||||||
case NOTNULL:
|
|
||||||
return asString("assertNotNull", args);
|
|
||||||
case FALSE:
|
|
||||||
return asString("assertFalse", args);
|
|
||||||
case TRUE:
|
|
||||||
return asString("assertTrue", args);
|
|
||||||
default:
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String asString(String assertion, Object ... args) {
|
|
||||||
if (args == null) {
|
|
||||||
return String.format("%s(null)", assertion);
|
|
||||||
}
|
|
||||||
if (args.length == 1) {
|
|
||||||
return String.format("%s(%s)", assertion, args[0]);
|
|
||||||
} else {
|
|
||||||
return String.format("%s(%s, %s)", assertion, args[0], args[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,126 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2013, 2016, 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
|
|
||||||
* @summary Test the OutputAnalyzer reporting functionality,
|
|
||||||
* such as printing additional diagnostic info
|
|
||||||
* (exit code, stdout, stderr, command line, etc.)
|
|
||||||
* @library /test/lib
|
|
||||||
* @modules java.base/jdk.internal.misc
|
|
||||||
* java.management
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.PrintStream;
|
|
||||||
|
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
|
||||||
import jdk.test.lib.process.ProcessTools;
|
|
||||||
|
|
||||||
|
|
||||||
public class OutputAnalyzerReportingTest {
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
|
||||||
// Create the output analyzer under test
|
|
||||||
String stdout = "aaaaaa";
|
|
||||||
String stderr = "bbbbbb";
|
|
||||||
OutputAnalyzer output = new OutputAnalyzer(stdout, stderr);
|
|
||||||
|
|
||||||
// Expected summary values should be the same for all cases,
|
|
||||||
// since the outputAnalyzer object is the same
|
|
||||||
String expectedExitValue = "-1";
|
|
||||||
String expectedSummary =
|
|
||||||
" stdout: [" + stdout + "];\n" +
|
|
||||||
" stderr: [" + stderr + "]\n" +
|
|
||||||
" exitValue = " + expectedExitValue + "\n";
|
|
||||||
|
|
||||||
|
|
||||||
DiagnosticSummaryTestRunner testRunner =
|
|
||||||
new DiagnosticSummaryTestRunner();
|
|
||||||
|
|
||||||
// should have exit value
|
|
||||||
testRunner.init(expectedSummary);
|
|
||||||
int unexpectedExitValue = 2;
|
|
||||||
try {
|
|
||||||
output.shouldHaveExitValue(unexpectedExitValue);
|
|
||||||
} catch (RuntimeException e) { }
|
|
||||||
testRunner.closeAndCheckResults();
|
|
||||||
|
|
||||||
// should not contain
|
|
||||||
testRunner.init(expectedSummary);
|
|
||||||
try {
|
|
||||||
output.shouldNotContain(stdout);
|
|
||||||
} catch (RuntimeException e) { }
|
|
||||||
testRunner.closeAndCheckResults();
|
|
||||||
|
|
||||||
// should contain
|
|
||||||
testRunner.init(expectedSummary);
|
|
||||||
try {
|
|
||||||
output.shouldContain("unexpected-stuff");
|
|
||||||
} catch (RuntimeException e) { }
|
|
||||||
testRunner.closeAndCheckResults();
|
|
||||||
|
|
||||||
// should not match
|
|
||||||
testRunner.init(expectedSummary);
|
|
||||||
try {
|
|
||||||
output.shouldNotMatch("[a]");
|
|
||||||
} catch (RuntimeException e) { }
|
|
||||||
testRunner.closeAndCheckResults();
|
|
||||||
|
|
||||||
// should match
|
|
||||||
testRunner.init(expectedSummary);
|
|
||||||
try {
|
|
||||||
output.shouldMatch("[qwerty]");
|
|
||||||
} catch (RuntimeException e) { }
|
|
||||||
testRunner.closeAndCheckResults();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class DiagnosticSummaryTestRunner {
|
|
||||||
private ByteArrayOutputStream byteStream =
|
|
||||||
new ByteArrayOutputStream(10000);
|
|
||||||
|
|
||||||
private String expectedSummary = "";
|
|
||||||
private PrintStream errStream;
|
|
||||||
|
|
||||||
|
|
||||||
public void init(String expectedSummary) {
|
|
||||||
this.expectedSummary = expectedSummary;
|
|
||||||
byteStream.reset();
|
|
||||||
errStream = new PrintStream(byteStream);
|
|
||||||
System.setErr(errStream);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void closeAndCheckResults() {
|
|
||||||
// check results
|
|
||||||
errStream.close();
|
|
||||||
String stdErrStr = byteStream.toString();
|
|
||||||
if (!stdErrStr.contains(expectedSummary)) {
|
|
||||||
throw new RuntimeException("The output does not contain "
|
|
||||||
+ "the diagnostic message, or the message is incorrect");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,195 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2013, 2016, 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
|
|
||||||
* @summary Test the OutputAnalyzer utility class
|
|
||||||
* @library /test/lib
|
|
||||||
* @modules java.base/jdk.internal.misc
|
|
||||||
* java.management
|
|
||||||
*/
|
|
||||||
|
|
||||||
import jdk.test.lib.process.OutputAnalyzer;
|
|
||||||
|
|
||||||
public class OutputAnalyzerTest {
|
|
||||||
|
|
||||||
public static void main(String args[]) throws Exception {
|
|
||||||
|
|
||||||
String stdout = "aaaaaa";
|
|
||||||
String stderr = "bbbbbb";
|
|
||||||
|
|
||||||
// Regexps used for testing pattern matching of the test input
|
|
||||||
String stdoutPattern = "[a]";
|
|
||||||
String stderrPattern = "[b]";
|
|
||||||
String nonExistingPattern = "[c]";
|
|
||||||
|
|
||||||
OutputAnalyzer output = new OutputAnalyzer(stdout, stderr);
|
|
||||||
|
|
||||||
if (!stdout.equals(output.getStdout())) {
|
|
||||||
throw new Exception("getStdout() returned '" + output.getStdout() + "', expected '" + stdout + "'");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!stderr.equals(output.getStderr())) {
|
|
||||||
throw new Exception("getStderr() returned '" + output.getStderr() + "', expected '" + stderr + "'");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.shouldContain(stdout);
|
|
||||||
output.stdoutShouldContain(stdout);
|
|
||||||
output.shouldContain(stderr);
|
|
||||||
output.stderrShouldContain(stderr);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
throw new Exception("shouldContain() failed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.shouldContain("cccc");
|
|
||||||
throw new Exception("shouldContain() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stdoutShouldContain(stderr);
|
|
||||||
throw new Exception("stdoutShouldContain() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stderrShouldContain(stdout);
|
|
||||||
throw new Exception("stdoutShouldContain() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.shouldNotContain("cccc");
|
|
||||||
output.stdoutShouldNotContain("cccc");
|
|
||||||
output.stderrShouldNotContain("cccc");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
throw new Exception("shouldNotContain() failed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.shouldNotContain(stdout);
|
|
||||||
throw new Exception("shouldContain() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stdoutShouldNotContain(stdout);
|
|
||||||
throw new Exception("shouldContain() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stderrShouldNotContain(stderr);
|
|
||||||
throw new Exception("shouldContain() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
// Should match
|
|
||||||
try {
|
|
||||||
output.shouldMatch(stdoutPattern);
|
|
||||||
output.stdoutShouldMatch(stdoutPattern);
|
|
||||||
output.shouldMatch(stderrPattern);
|
|
||||||
output.stderrShouldMatch(stderrPattern);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
throw new Exception("shouldMatch() failed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.shouldMatch(nonExistingPattern);
|
|
||||||
throw new Exception("shouldMatch() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stdoutShouldMatch(stderrPattern);
|
|
||||||
throw new Exception(
|
|
||||||
"stdoutShouldMatch() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stderrShouldMatch(stdoutPattern);
|
|
||||||
throw new Exception(
|
|
||||||
"stderrShouldMatch() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
// Should not match
|
|
||||||
try {
|
|
||||||
output.shouldNotMatch(nonExistingPattern);
|
|
||||||
output.stdoutShouldNotMatch(nonExistingPattern);
|
|
||||||
output.stderrShouldNotMatch(nonExistingPattern);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
throw new Exception("shouldNotMatch() failed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.shouldNotMatch(stdoutPattern);
|
|
||||||
throw new Exception("shouldNotMatch() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stdoutShouldNotMatch(stdoutPattern);
|
|
||||||
throw new Exception("shouldNotMatch() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
output.stderrShouldNotMatch(stderrPattern);
|
|
||||||
throw new Exception("shouldNotMatch() failed to throw exception");
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
String aaaa = "aaaa";
|
|
||||||
String result = output.firstMatch(aaaa);
|
|
||||||
if (!aaaa.equals(result)) {
|
|
||||||
throw new Exception("firstMatch(String) faild to match. Expected: " + aaaa + " got: " + result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
String aa = "aa";
|
|
||||||
String aa_grouped_aa = aa + "(" + aa + ")";
|
|
||||||
String result = output.firstMatch(aa_grouped_aa, 1);
|
|
||||||
if (!aa.equals(result)) {
|
|
||||||
throw new Exception("firstMatch(String, int) failed to match. Expected: " + aa + " got: " + result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2020, 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class Test {
|
|
||||||
public static void test() {
|
|
||||||
System.out.println ("Hello Test");
|
|
||||||
}
|
|
||||||
}
|
|
40
test/lib-test/ProblemList.txt
Normal file
40
test/lib-test/ProblemList.txt
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020, 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
#
|
||||||
|
# List of quarantined tests -- tests that should not be run by default, because
|
||||||
|
# they may fail due to known reason. The reason (CR#) must be mandatory specified.
|
||||||
|
#
|
||||||
|
# List items are testnames followed by labels, all MUST BE commented
|
||||||
|
# as to why they are here and use a label:
|
||||||
|
# generic-all Problems on all platforms
|
||||||
|
# generic-ARCH Where ARCH is one of: x64, i586, ppc64, ppc64le, s390x etc.
|
||||||
|
# OSNAME-all Where OSNAME is one of: linux, windows, macosx, aix
|
||||||
|
# OSNAME-ARCH Specific on to one OSNAME and ARCH, e.g. macosx-x64
|
||||||
|
# OSNAME-REV Specific on to one OSNAME and REV, e.g. macosx-10.7.4
|
||||||
|
#
|
||||||
|
# More than one label is allowed but must be on the same line.
|
||||||
|
#
|
||||||
|
#############################################################################
|
||||||
|
|
|
@ -1,9 +1,38 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020, 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.
|
||||||
|
#
|
||||||
|
|
||||||
# This file identifies the root of the test-suite hierarchy.
|
# This file identifies the root of the test-suite hierarchy.
|
||||||
# It also contains test-suite configuration information.
|
# It also contains test-suite configuration information.
|
||||||
|
|
||||||
|
# The list of keywords supported in this test suite
|
||||||
|
# randomness: test uses randomness, test cases differ from run to run
|
||||||
|
keys=randomness
|
||||||
|
|
||||||
# Minimum jtreg version
|
# Minimum jtreg version
|
||||||
requiredVersion=5.1 b1
|
requiredVersion=5.1 b1
|
||||||
|
|
||||||
# Path to libraries in the topmost test directory. This is needed so @library
|
# Path to libraries in the topmost test directory. This is needed so @library
|
||||||
# does not need ../../ notation to reach them
|
# does not need ../../ notation to reach them
|
||||||
external.lib.roots = ../../
|
external.lib.roots = ../../
|
||||||
|
|
||||||
|
groups=TEST.groups
|
||||||
|
|
24
test/lib-test/TEST.groups
Normal file
24
test/lib-test/TEST.groups
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2020, 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
tier1 = .
|
|
@ -24,9 +24,9 @@
|
||||||
/*
|
/*
|
||||||
* @test
|
* @test
|
||||||
* @summary Unit test for LingeredApp
|
* @summary Unit test for LingeredApp
|
||||||
* @compile LingeredAppTest.java
|
* @library /test/lib
|
||||||
* @compile LingeredApp.java
|
* @build jdk.test.lib.apps.LingeredAppTest jdk.test.lib.apps.LingeredApp
|
||||||
* @run main LingeredAppTest
|
* @run main jdk.test.lib.apps.LingeredAppTest
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package jdk.test.lib.apps;
|
package jdk.test.lib.apps;
|
||||||
|
@ -52,13 +52,13 @@ public class LingeredAppTest {
|
||||||
|
|
||||||
cmd.add("-XX:+PrintFlagsFinal");
|
cmd.add("-XX:+PrintFlagsFinal");
|
||||||
|
|
||||||
LingeredApp a = LingeredApp.startApp(cmd.toArray(new String[cmd.length]);
|
LingeredApp a = LingeredApp.startApp(cmd.toArray(new String[cmd.size()]));
|
||||||
System.out.printf("App pid: %d\n", a.getPid());
|
System.out.printf("App pid: %d\n", a.getPid());
|
||||||
a.stopApp();
|
a.stopApp();
|
||||||
|
|
||||||
System.out.println("App output:");
|
System.out.println("App output:");
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (String line : a.getAppOutput()) {
|
for (String line : a.getOutput().getStdoutAsList()) {
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
System.out.println("Found " + count + " lines in VM output");
|
System.out.println("Found " + count + " lines in VM output");
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -199,6 +199,23 @@ public class OutputAnalyzerTest {
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
String aaaa = "aaaa";
|
||||||
|
String result = output.firstMatch(aaaa);
|
||||||
|
if (!aaaa.equals(result)) {
|
||||||
|
throw new Exception("firstMatch(String) failed to match. Expected: " + aaaa + " got: " + result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
String aa = "aa";
|
||||||
|
String aa_grouped_aa = aa + "(" + aa + ")";
|
||||||
|
String result = output.firstMatch(aa_grouped_aa, 1);
|
||||||
|
if (!aa.equals(result)) {
|
||||||
|
throw new Exception("firstMatch(String, int) failed to match. Expected: " + aa + " got: " + result);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -25,7 +25,6 @@
|
||||||
* @test
|
* @test
|
||||||
* @summary Test the native process builder API.
|
* @summary Test the native process builder API.
|
||||||
* @library /test/lib
|
* @library /test/lib
|
||||||
* @build Test
|
|
||||||
* @run main/native TestNativeProcessBuilder
|
* @run main/native TestNativeProcessBuilder
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -39,6 +38,13 @@ public class TestNativeProcessBuilder {
|
||||||
ProcessBuilder pb = ProcessTools.createNativeTestProcessBuilder("jvm-test-launcher");
|
ProcessBuilder pb = ProcessTools.createNativeTestProcessBuilder("jvm-test-launcher");
|
||||||
pb.environment().put("CLASSPATH", Utils.TEST_CLASS_PATH);
|
pb.environment().put("CLASSPATH", Utils.TEST_CLASS_PATH);
|
||||||
new OutputAnalyzer(pb.start())
|
new OutputAnalyzer(pb.start())
|
||||||
.shouldHaveExitValue(0);
|
.shouldHaveExitValue(0)
|
||||||
|
.stdoutShouldContain("Hello Test");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Test {
|
||||||
|
public static void test() {
|
||||||
|
System.out.println("Hello Test");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -42,8 +42,9 @@ JNIEnv* create_vm(JavaVM **jvm)
|
||||||
args.ignoreUnrecognized = 0;
|
args.ignoreUnrecognized = 0;
|
||||||
|
|
||||||
int ret = JNI_CreateJavaVM(jvm, (void**)&env, &args);
|
int ret = JNI_CreateJavaVM(jvm, (void**)&env, &args);
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
exit(10);
|
exit(10);
|
||||||
|
}
|
||||||
|
|
||||||
return env;
|
return env;
|
||||||
}
|
}
|
||||||
|
@ -53,13 +54,15 @@ void run(JNIEnv *env) {
|
||||||
jclass test_class;
|
jclass test_class;
|
||||||
jmethodID test_method;
|
jmethodID test_method;
|
||||||
|
|
||||||
test_class = (*env)->FindClass(env, "Test");
|
test_class = (*env)->FindClass(env, "TestNativeProcessBuilder$Test");
|
||||||
if (test_class == NULL)
|
if (test_class == NULL) {
|
||||||
exit(11);
|
exit(11);
|
||||||
|
}
|
||||||
|
|
||||||
test_method = (*env)->GetStaticMethodID(env, test_class, "test", "()V");
|
test_method = (*env)->GetStaticMethodID(env, test_class, "test", "()V");
|
||||||
if (test_method == NULL)
|
if (test_method == NULL) {
|
||||||
exit(12);
|
exit(12);
|
||||||
|
}
|
||||||
|
|
||||||
(*env)->CallStaticVoidMethod(env, test_class, test_method);
|
(*env)->CallStaticVoidMethod(env, test_class, test_method);
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue