--- a/jdk/test/java/util/ResourceBundle/Control/ExpirationTest.java Thu Dec 01 16:14:41 2011 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2007, 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 class is used by ExpirationTest.sh. See the timing information in
- * the shell script.
- */
-
-import java.util.*;
-
-public class ExpirationTest {
- static final Locale AUSTRIA = new Locale("de", "AT");
- static String format;
- static String fileType;
-
- public static void main(String[] args) {
- // If -latency is specified, try sleeping for 3 seconds 3
- // times to see its latency. If the latency is too large, then
- // the program exits with 2. (See sleep())
- if ("-latency".equals(args[0])) {
- System.out.print("Checking latency... ");
- for (int i = 0; i < 3; i++) {
- sleep(3);
- }
- System.out.println("done");
- System.exit(0);
- }
-
- format = args[0];
- fileType = args[1];
-
- Locale loc = Locale.getDefault();
- try {
- Locale.setDefault(Locale.JAPAN);
- ResourceBundle.Control control = new TestControl();
- ResourceBundle rb = ResourceBundle.getBundle("ExpirationData", Locale.GERMAN,
- control);
- check(rb.getString("data"), "German");
-
- rb = ResourceBundle.getBundle("ExpirationData", AUSTRIA, control);
- check(rb.getString("january"), "Januar");
-
- // Wait until the instance gets expired in the cache in 7 seconds.
- sleep(7);
-
- // At this point, it should be determined that reloading is not needed.
- rb = ResourceBundle.getBundle("ExpirationData", Locale.GERMAN, control);
- check(rb.getString("data"), "German");
-
- rb = ResourceBundle.getBundle("ExpirationData", AUSTRIA, control);
- check(rb.getString("january"), "Januar");
-
- // Wait until the instance in the cache gets expired again and
- // ExpirationData_de gets updated.
- // 33 = 40 - 7 (See the timing chart in ExpirationTest.sh)
- sleep(33);
-
- // At this point, getBundle must reload the updated
- // ExpirationData_de and ExpirationData_de_AT must be
- // avaible.
-
- rb = ResourceBundle.getBundle("ExpirationData", Locale.GERMAN, control);
- try {
- check(rb.getString("data"), "Deutsch");
- } catch (RuntimeException e) {
- if (format.equals("class")) {
- // Class loader doesn't load updated classes.
- System.out.println("Known class limitation: " + e.getMessage());
- }
- }
-
- rb = ResourceBundle.getBundle("ExpirationData", AUSTRIA, control);
- try {
- check(rb.getString("january"), "J\u00e4nner");
- } catch (RuntimeException e) {
- if (fileType.equals("jar")) {
- // Jar doesn't load new entries.
- System.out.println("Known jar limitation: " + e.getMessage());
- } else {
- throw e;
- }
- }
- } finally {
- Locale.setDefault(loc);
- }
- }
-
- private static void check(String s, String expected) {
- String time = getTime();
- if (!s.equals(expected)) {
- throw new RuntimeException("got '" + s + "', expected '" + expected + "' at "
- + time);
- }
- System.out.println("ExpirationTest: got '" + s + "' at " + time);
- }
-
- private static void sleep(int seconds) {
- long millis = seconds * 1000;
- long start = System.currentTimeMillis();
- try {
- Thread.sleep(millis);
- } catch (InterruptedException e) {
- }
- long end = System.currentTimeMillis();
- long latency = end - start - millis;
- // If the latecy is more than 1% of the requested sleep time,
- // then give up the testing.
- if (latency > millis/100) {
- System.err.printf("Latency is too large: slept for %d [ms], "
- + "expected %d [ms] latency rate: %+.2f%% (expected not more than 1%%)%n"
- + "exiting...%n",
- end - start, millis, (double)latency*100.0/millis);
- System.exit(2);
- }
- }
-
- private static final String getTime() {
- return new Date().toString().substring(11, 19);
- }
-
- private static class TestControl extends ResourceBundle.Control {
- @Override
- public long getTimeToLive(String name, Locale loc) {
- return 5000; // 5 seconds
- }
-
- @Override
- public ResourceBundle newBundle(String name, Locale loc,
- String fmt, ClassLoader cl, boolean reload)
- throws IllegalAccessException, InstantiationException, java.io.IOException {
- ResourceBundle bundle = super.newBundle(name, loc, fmt, cl, reload);
- if (bundle != null) {
- System.out.println("newBundle: " + (reload ? "**re" : "")
- + "loaded '" + toName(name, loc , fmt) + "' at " + getTime());
- }
- return bundle;
- }
-
- @Override
- public boolean needsReload(String name, Locale loc,
- String fmt, ClassLoader cl,
- ResourceBundle rb, long time) {
- boolean b = super.needsReload(name, loc, fmt, cl, rb, time);
- System.out.println("needsReload: '" + b + "' for " + toName(name, loc, fmt)
- + " at " + getTime());
- return b;
- }
-
- private String toName(String name, Locale loc, String fmt) {
- return toResourceName(toBundleName(name, loc), fmt.substring(5));
- }
- }
-}