mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-12 03:18:37 +00:00
8210409: Refactor java.util.TimeZone:i18n shell tests to plain java tests
Reviewed-by: naoto
This commit is contained in:
parent
88fec44661
commit
0fade4897e
@ -1,68 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (c) 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
|
||||
# @bug 8066652
|
||||
# @requires os.family == "mac"
|
||||
# @summary tests thread safe native function localtime_r is accessed by multiple threads at same time and
|
||||
# zone id should not be “GMT+00:00” if default timezone is “GMT” and user specifies a fake timezone.
|
||||
# @build Bug8066652
|
||||
# @run shell/timeout=600 Bug8066652.sh
|
||||
|
||||
|
||||
if [ "${TESTSRC}" = "" ]
|
||||
then
|
||||
echo "TESTSRC not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
echo "TESTSRC=${TESTSRC}"
|
||||
if [ "${TESTJAVA}" = "" ]
|
||||
then
|
||||
echo "TESTJAVA not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
echo "TESTJAVA=${TESTJAVA}"
|
||||
if [ "${TESTCLASSES}" = "" ]
|
||||
then
|
||||
echo "TESTCLASSES not set. Test cannot execute. Failed."
|
||||
exit 1
|
||||
fi
|
||||
echo "TESTCLASSES=${TESTCLASSES}"
|
||||
echo "CLASSPATH=${CLASSPATH}"
|
||||
|
||||
|
||||
# set system TimeZone to GMT using environment variable TZ
|
||||
export TZ="GMT"
|
||||
|
||||
# Setting invalid TimeZone using VM option
|
||||
${TESTJAVA}/bin/java -Duser.timezone=Foo/Bar ${TESTVMOPTS} -cp ${TESTCLASSES} Bug8066652
|
||||
|
||||
status=$?
|
||||
if [ $status -eq 0 ]
|
||||
then
|
||||
echo "Success, Test Passed";
|
||||
else
|
||||
echo "Test Failed";
|
||||
fi
|
||||
|
||||
exit $status
|
||||
66
test/jdk/java/util/TimeZone/Bug8066652Run.java
Normal file
66
test/jdk/java/util/TimeZone/Bug8066652Run.java
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2018, 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
|
||||
* @bug 8066652
|
||||
* @requires os.family == "mac"
|
||||
* @summary tests thread safe native function localtime_r is accessed by multiple
|
||||
* threads at same time and zone id should not be "GMT+00:00"
|
||||
* if default timezone is "GMT" and user specifies a fake timezone.
|
||||
* @library /test/lib
|
||||
* @build Bug8066652
|
||||
* @run main Bug8066652Run
|
||||
*/
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import jdk.test.lib.JDKToolLauncher;
|
||||
import jdk.test.lib.Utils;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
|
||||
public class Bug8066652Run {
|
||||
private static String cp = Utils.TEST_CLASSES;
|
||||
private static ProcessBuilder pb = new ProcessBuilder();
|
||||
|
||||
public static void main(String[] args) throws Throwable {
|
||||
//set system TimeZone to GMT using environment variable TZ
|
||||
Map<String, String> env = pb.environment();
|
||||
env.put("TZ", "GMT");
|
||||
System.out.println("Current TimeZone:" + pb.environment().get("TZ"));
|
||||
JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("java");
|
||||
//Setting invalid TimeZone using VM option
|
||||
launcher.addToolArg("-Duser.timezone=Foo/Bar")
|
||||
.addToolArg("-cp")
|
||||
.addToolArg(cp)
|
||||
.addToolArg("Bug8066652");
|
||||
|
||||
pb.command(launcher.getCommand());
|
||||
int exitCode = ProcessTools.executeCommand(pb)
|
||||
.getExitValue();
|
||||
if (exitCode != 0) {
|
||||
throw new RuntimeException("Unexpected exit code: " + exitCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2008, 2018, 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
|
||||
@ -22,11 +22,31 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* See OldMappingTest.sh
|
||||
* @test
|
||||
* @bug 6466476
|
||||
* @summary Compatibility test for the old JDK ID mapping and Olson IDs
|
||||
* @comment Expecting the new (Olson compatible) mapping (default)
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=null OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping="" OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=no OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=No OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=NO OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=false OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=False OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=FALSE OldIDMappingTest -new
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=Hello OldIDMappingTest -new
|
||||
* @comment Expecting the old mapping
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=true OldIDMappingTest -old
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=True OldIDMappingTest -old
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=TRUE OldIDMappingTest -old
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=yes OldIDMappingTest -old
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=Yes OldIDMappingTest -old
|
||||
* @run main/othervm -Dsun.timezone.ids.oldmapping=YES OldIDMappingTest -old
|
||||
*/
|
||||
|
||||
import java.lang.reflect.*;
|
||||
import java.util.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class OldIDMappingTest {
|
||||
private static final String MAPPING_PROPERTY_NAME = "sun.timezone.ids.oldmapping";
|
||||
@ -62,8 +82,9 @@ public class OldIDMappingTest {
|
||||
TimeZone tz = TimeZone.getTimeZone(oldmap.get(id));
|
||||
if (useOldMapping) {
|
||||
if (!tzAlias.hasSameRules(tz)) {
|
||||
throw new RuntimeException("OLDMAP: " + MAPPING_PROPERTY_NAME + "=" + prop + ": "
|
||||
+ id + " isn't an alias of " + oldmap.get(id));
|
||||
throw new RuntimeException("OLDMAP: " + MAPPING_PROPERTY_NAME
|
||||
+ "=" + prop + ": " + id
|
||||
+ " isn't an alias of " + oldmap.get(id));
|
||||
}
|
||||
if (count == 0) {
|
||||
System.out.println(" " + id + " => " + oldmap.get(id));
|
||||
@ -79,13 +100,15 @@ public class OldIDMappingTest {
|
||||
continue;
|
||||
}
|
||||
if (tzAlias.hasSameRules(tz)) {
|
||||
throw new RuntimeException("NEWMAP: " + MAPPING_PROPERTY_NAME + "=" + prop + ": "
|
||||
+ id + " is an alias of " + oldmap.get(id));
|
||||
throw new RuntimeException("NEWMAP: " + MAPPING_PROPERTY_NAME
|
||||
+ "=" + prop + ": " + id
|
||||
+ " is an alias of " + oldmap.get(id));
|
||||
}
|
||||
tz = TimeZone.getTimeZone(newmap.get(id));
|
||||
if (!tzAlias.hasSameRules(tz)) {
|
||||
throw new RuntimeException("NEWMAP: " + MAPPING_PROPERTY_NAME + "=" + prop + ": "
|
||||
+ id + " isn't an alias of " + newmap.get(id));
|
||||
throw new RuntimeException("NEWMAP: " + MAPPING_PROPERTY_NAME
|
||||
+ "=" + prop + ": " + id
|
||||
+ " isn't an alias of " + newmap.get(id));
|
||||
}
|
||||
if (count == 0) {
|
||||
System.out.println(" " + id + " => " + newmap.get(id));
|
||||
|
||||
@ -1,57 +0,0 @@
|
||||
# Copyright (c) 2003, 2013, 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
|
||||
# @bug 6466476
|
||||
# @summary Compatibility test for the old JDK ID mapping and Olson IDs
|
||||
# @build OldIDMappingTest
|
||||
# @run shell OldIDMappingTest.sh
|
||||
|
||||
: ${TESTJAVA:=${JAVA_HOME}}
|
||||
: ${TESTCLASSES:="`pwd`"}
|
||||
|
||||
JAVA="${TESTJAVA}/bin/java"
|
||||
|
||||
STATUS=0
|
||||
|
||||
# Expecting the new (Olson compatible) mapping (default)
|
||||
for I in "" " " no No NO false False FALSE Hello
|
||||
do
|
||||
if [ x"$I" != x ]; then
|
||||
D="-Dsun.timezone.ids.oldmapping=${I}"
|
||||
fi
|
||||
if ! ${JAVA} ${D} ${TESTVMOPTS} -cp ${TESTCLASSES} OldIDMappingTest -new; then
|
||||
STATUS=1
|
||||
fi
|
||||
done
|
||||
|
||||
# Expecting the old mapping
|
||||
for I in true True TRUE yes Yes YES
|
||||
do
|
||||
if [ "x$I" != x ]; then
|
||||
D="-Dsun.timezone.ids.oldmapping=${I}"
|
||||
fi
|
||||
if ! ${JAVA} ${D} ${TESTVMOPTS} -cp ${TESTCLASSES} OldIDMappingTest -old; then
|
||||
STATUS=1
|
||||
fi
|
||||
done
|
||||
|
||||
exit ${STATUS}
|
||||
@ -1,63 +0,0 @@
|
||||
# Testcase for PR381 Stackoverflow error with security manager, signed jars
|
||||
# and -Djava.security.debug set.
|
||||
#
|
||||
# Copyright (c) 2009, Red Hat Inc.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# 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 for more details.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# @test
|
||||
# @bug 6584033
|
||||
# @summary Stackoverflow error with security manager, signed jars and debug.
|
||||
# @build TimeZoneDatePermissionCheck
|
||||
# @run shell TimeZoneDatePermissionCheck.sh
|
||||
|
||||
# Set default if not run under jtreg from test dir itself
|
||||
if [ "${TESTCLASSES}" = "" ] ; then
|
||||
TESTCLASSES="."
|
||||
fi
|
||||
if [ "${TESTJAVA}" = "" ] ; then
|
||||
TESTJAVA=/usr
|
||||
fi
|
||||
if [ "${COMPILEJAVA}" = "" ]; then
|
||||
COMPILEJAVA="${TESTJAVA}"
|
||||
fi
|
||||
|
||||
# create a test keystore and dummy cert. Note that we use the COMPILEJAVA
|
||||
# as this test is a TimeZone test, it doesn't test keytool
|
||||
rm -f ${TESTCLASSES}/timezonedatetest.store
|
||||
${COMPILEJAVA}/bin/keytool ${TESTTOOLVMOPTS} -genkeypair -alias testcert \
|
||||
-keystore ${TESTCLASSES}/timezonedatetest.store \
|
||||
-storepass testpass -validity 360 \
|
||||
-keyalg rsa \
|
||||
-dname "cn=Mark Wildebeest, ou=FreeSoft, o=Red Hat, c=NL" \
|
||||
-keypass testpass
|
||||
|
||||
# create a jar file to sign with the test class in it.
|
||||
rm -f ${TESTCLASSES}/timezonedatetest.jar
|
||||
${COMPILEJAVA}/bin/jar ${TESTTOOLVMOPTS} cf \
|
||||
${TESTCLASSES}/timezonedatetest.jar \
|
||||
-C ${TESTCLASSES} TimeZoneDatePermissionCheck.class
|
||||
|
||||
# sign it
|
||||
${COMPILEJAVA}/bin/jarsigner ${TESTTOOLVMOPTS} \
|
||||
-keystore ${TESTCLASSES}/timezonedatetest.store \
|
||||
-storepass testpass ${TESTCLASSES}/timezonedatetest.jar testcert
|
||||
|
||||
# run it with the security manager on, plus accesscontroller debugging
|
||||
# will go into infinite recursion trying to get enough permissions for
|
||||
# printing Date of failing certificate unless fix is applied.
|
||||
${TESTJAVA}/bin/java ${TESTVMOPTS} -Djava.security.manager \
|
||||
-Djava.security.debug=access,failure,policy \
|
||||
-cp ${TESTCLASSES}/timezonedatetest.jar TimeZoneDatePermissionCheck
|
||||
108
test/jdk/java/util/TimeZone/TimeZoneDatePermissionCheckRun.java
Normal file
108
test/jdk/java/util/TimeZone/TimeZoneDatePermissionCheckRun.java
Normal file
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (c) 2009, 2018, 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
|
||||
* @bug 6584033
|
||||
* @summary Stackoverflow error with security manager, signed jars and debug.
|
||||
* @library /test/lib
|
||||
* @build TimeZoneDatePermissionCheck
|
||||
* @run main TimeZoneDatePermissionCheckRun
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import jdk.test.lib.JDKToolLauncher;
|
||||
import jdk.test.lib.Utils;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
|
||||
public class TimeZoneDatePermissionCheckRun {
|
||||
private static String storePath = Utils.TEST_CLASSES + File.separator
|
||||
+ "timezonedatetest.store";
|
||||
private static String jarPath = Utils.TEST_CLASSES + File.separator
|
||||
+ "timezonedatetest.jar";
|
||||
|
||||
public static void main(String[] args) throws Throwable {
|
||||
try {
|
||||
//create a test keystore and dummy cert. Note that we use the COMPILEJAVA
|
||||
//as this test is a TimeZone test, it doesn't test keytool
|
||||
runJavaCmd("keytool",
|
||||
List.of("-genkeypair", "-alias", "testcert", "-keystore",
|
||||
storePath, "-storepass", "testpass", "-validity",
|
||||
"360", "-keyalg", "rsa", "-dname",
|
||||
"cn=Mark Wildebeest, ou=FreeSoft, o=Red Hat, c=NL",
|
||||
"-keypass", "testpass"));
|
||||
|
||||
//create a jar file to sign with the test class in it.
|
||||
runJavaCmd("jar", List.of("cf", jarPath, "-C", Utils.TEST_CLASSES,
|
||||
"TimeZoneDatePermissionCheck.class"));
|
||||
|
||||
//sign it
|
||||
runJavaCmd("jarsigner",
|
||||
List.of("-keystore", storePath, "-storepass", "testpass",
|
||||
jarPath, "testcert"));
|
||||
|
||||
//run it with the security manager on, plus accesscontroller debugging
|
||||
//will go into infinite recursion trying to get enough permissions for
|
||||
//printing Date of failing certificate unless fix is applied.
|
||||
JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("java");
|
||||
launcher.addToolArg("-Djava.security.manager")
|
||||
.addToolArg("-Djava.security.debug=access,failure,policy")
|
||||
.addToolArg("-cp")
|
||||
.addToolArg(jarPath)
|
||||
.addToolArg("TimeZoneDatePermissionCheck");
|
||||
|
||||
int exitCode = ProcessTools.executeCommand(launcher.getCommand())
|
||||
.getExitValue();
|
||||
if (exitCode != 0) {
|
||||
throw new RuntimeException("Unexpected exit code: " + exitCode);
|
||||
}
|
||||
} finally {
|
||||
//clean up the test files
|
||||
File storeFile = new File(storePath);
|
||||
if (storeFile.exists()) {
|
||||
storeFile.delete();
|
||||
}
|
||||
File jarFile = new File(jarPath);
|
||||
if (jarFile.exists()) {
|
||||
jarFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void runJavaCmd(String cmd, List<String> javaParam)
|
||||
throws Throwable{
|
||||
JDKToolLauncher launcher = JDKToolLauncher.create(cmd);
|
||||
for (String para: javaParam) {
|
||||
launcher.addToolArg(para);
|
||||
}
|
||||
|
||||
System.out.println(launcher.getCommand());
|
||||
int exitCode = ProcessTools.executeCommand(launcher.getCommand())
|
||||
.getExitValue();
|
||||
if (exitCode != 0) {
|
||||
throw new RuntimeException("Unexpected exit code: " + exitCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user