test/jdk/sun/util/calendar/zi/TestZoneInfo310.java
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 57544 99d2dd7b84a8
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     1
/*
55634
0f1e29c77e50 8224560: (tz) Upgrade time-zone data to tzdata2019a
rpatil
parents: 47216
diff changeset
     2
 * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     4
 *
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     7
 * published by the Free Software Foundation.
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     8
 *
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    13
 * accompanied this code).
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    14
 *
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    18
 *
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    21
 * questions.
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    22
 */
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    23
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    24
/*
40677
8243adf9888e 8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
okutsu
parents: 38768
diff changeset
    25
 * @test
57544
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    26
 * @bug 8007572 8008161 8157792 8212970 8224560
40677
8243adf9888e 8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
okutsu
parents: 38768
diff changeset
    27
 * @summary Test whether the TimeZone generated from JSR310 tzdb is the same
8243adf9888e 8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
okutsu
parents: 38768
diff changeset
    28
 * as the one from the tz data from javazic
42338
a60f280f803c 8169069: Module system implementation refresh (11/2016)
alanb
parents: 40677
diff changeset
    29
 * @modules java.base/sun.util.calendar:+open
40677
8243adf9888e 8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
okutsu
parents: 38768
diff changeset
    30
 * @build BackEnd Checksum DayOfWeek Gen GenDoc Main Mappings Month
8243adf9888e 8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
okutsu
parents: 38768
diff changeset
    31
 *        Rule RuleDay RuleRec Simple TestZoneInfo310 Time Timezone
8243adf9888e 8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
okutsu
parents: 38768
diff changeset
    32
 *        TzIDOldMapping Zone ZoneInfoFile ZoneInfoOld ZoneRec Zoneinfo
8243adf9888e 8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
okutsu
parents: 38768
diff changeset
    33
 * @run main TestZoneInfo310
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    34
 */
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    35
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    36
import java.io.File;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    37
import java.lang.reflect.*;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    38
import java.nio.file.*;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    39
import java.util.*;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    40
import java.util.regex.*;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    41
import java.time.zone.*;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    42
import java.time.ZoneId;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    43
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    44
public class TestZoneInfo310 {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    45
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    46
    public static void main(String[] args) throws Throwable {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    47
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    48
        String TESTDIR = System.getProperty("test.dir", ".");
57544
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    49
        Path tzdir = Paths.get(System.getProperty("test.root"),
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    50
            "..", "..", "make", "data", "tzdata");
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    51
        String tzfiles = "africa antarctica asia australasia europe northamerica pacificnew southamerica backward etcetera systemv gmt";
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    52
        Path jdk_tzdir = Paths.get(System.getProperty("test.src"), "tzdata_jdk");
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    53
        String jdk_tzfiles = "jdk11_backward";
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    54
        String zidir = TESTDIR + File.separator + "zi";
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    55
        File fZidir = new File(zidir);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    56
        if (!fZidir.exists()) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    57
            fZidir.mkdirs();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    58
        }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    59
        Matcher m = Pattern.compile("tzdata(?<ver>[0-9]{4}[A-z])")
57544
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    60
                           .matcher(new String(Files.readAllBytes(tzdir.resolve("VERSION")), "ascii"));
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    61
        String ver = m.find() ? m.group("ver") : "NULL";
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    62
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    63
        ArrayList<String> alist = new ArrayList<>();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    64
        alist.add("-V");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    65
        alist.add(ver);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    66
        alist.add("-d");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    67
        alist.add(zidir);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    68
        for (String f : tzfiles.split(" ")) {
57544
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    69
            alist.add(tzdir.resolve(f).toString());
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    70
        }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    71
        for (String f : jdk_tzfiles.split(" ")) {
57544
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
    72
            alist.add(jdk_tzdir.resolve(f).toString());
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    73
        }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    74
        System.out.println("Compiling tz files!");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    75
        Main.main(alist.toArray(new String[alist.size()]));
16852
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
    76
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    77
        //////////////////////////////////
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    78
        System.out.println("testing!");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    79
        ZoneInfoFile.ziDir = zidir;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    80
        long t0, t1;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    81
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    82
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    83
        ZoneInfoOld.getTimeZone("America/Los_Angeles");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    84
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    85
        System.out.printf("OLD.getZoneInfoOld()[1]=%d%n", (t1 - t0) / 1000);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    86
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    87
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    88
        ZoneInfoOld.getTimeZone("America/New_York");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    89
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    90
        System.out.printf("OLD.getZoneInfoOld()[2]=%d%n", (t1 - t0) / 1000);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    91
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    92
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    93
        ZoneInfoOld.getTimeZone("America/Denver");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    94
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    95
        System.out.printf("OLD.getZoneInfoOld()[3]=%d%n", (t1 - t0) / 1000);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    96
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    97
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    98
        String[] zids_old = ZoneInfoOld.getAvailableIDs();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
    99
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   100
        System.out.printf("OLD.getAvailableIDs()=%d, total=%d%n",
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   101
                          (t1 - t0) / 1000, zids_old.length);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   102
        Arrays.sort(zids_old);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   103
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   104
        t0 = System.nanoTime();
16852
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   105
        String[] alias_old = ZoneInfoOld.getAliasTable()
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   106
                                 .keySet().toArray(new String[0]);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   107
        t1 = System.nanoTime();
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   108
        System.out.printf("OLD.getAliasTable()=%d, total=%d%n",
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   109
                          (t1 - t0) / 1000, alias_old.length);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   110
        Arrays.sort(alias_old);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   111
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   112
        t0 = System.currentTimeMillis();
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   113
        for (String zid : zids_old) {
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   114
            ZoneInfoOld.getTimeZone(zid);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   115
        }
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   116
        t1 = System.currentTimeMillis();
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   117
        System.out.printf("OLD.TotalTZ()=%d (ms)%n", t1 - t0);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   118
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   119
/*
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   120
        t0 = System.nanoTime();
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   121
        ZoneId.of("America/Los_Angeles").getRules();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   122
        t1 = System.nanoTime();
16852
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   123
        System.out.printf("NEW.ZoneId.of()[1]=%d%n", (t1 - t0) / 1000);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   124
*/
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   125
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   126
        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   127
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   128
        System.out.printf("NEW.getTimeZone()[1]=%d%n", (t1 - t0) / 1000);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   129
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   130
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   131
        tz = TimeZone.getTimeZone("America/New_York");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   132
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   133
        System.out.printf("NEW.getTimeZone()[2]=%d%n", (t1 - t0) / 1000);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   134
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   135
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   136
        tz = TimeZone.getTimeZone("America/Denver");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   137
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   138
        System.out.printf("NEW.getTimeZone()[3]=%d%n", (t1 - t0) / 1000);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   139
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   140
        t0 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   141
        String[] zids_new = TimeZone.getAvailableIDs();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   142
        t1 = System.nanoTime();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   143
        System.out.printf("NEW.getAvailableIDs()=%d, total=%d%n",
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   144
                          (t1 - t0) / 1000, zids_new.length);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   145
        Arrays.sort(zids_new);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   146
16852
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   147
        t0 = System.nanoTime();
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   148
        String[] alias_new = sun.util.calendar.ZoneInfo.getAliasTable()
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   149
                                 .keySet().toArray(new String[0]);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   150
        t1 = System.nanoTime();
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   151
        System.out.printf("NEW.getAliasTable()=%d, total=%d%n",
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   152
                          (t1 - t0) / 1000, alias_new.length);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   153
        Arrays.sort(alias_new);
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   154
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   155
        t0 = System.currentTimeMillis();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   156
        for (String zid : zids_new) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   157
            TimeZone.getTimeZone(zid);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   158
        }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   159
        t1 = System.currentTimeMillis();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   160
        System.out.printf("NEW.TotalTZ()=%d (ms)%n", t1 - t0);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   161
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   162
        if (!Arrays.equals(zids_old, zids_new)) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   163
            throw new RuntimeException("  FAILED:  availableIds don't match");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   164
        }
16852
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   165
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   166
        if (!Arrays.equals(alias_old, alias_new)) {
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   167
            throw new RuntimeException("  FAILED:  aliases don't match");
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   168
        }
60207b2b4b42 8011172: JSR 310 DateTime API Updates II
sherman
parents: 15665
diff changeset
   169
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   170
        for (String zid : zids_new) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   171
            ZoneInfoOld zi = toZoneInfoOld(TimeZone.getTimeZone(zid));
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   172
            ZoneInfoOld ziOLD = (ZoneInfoOld)ZoneInfoOld.getTimeZone(zid);
55634
0f1e29c77e50 8224560: (tz) Upgrade time-zone data to tzdata2019a
rpatil
parents: 47216
diff changeset
   173
            /*
0f1e29c77e50 8224560: (tz) Upgrade time-zone data to tzdata2019a
rpatil
parents: 47216
diff changeset
   174
             * Temporary ignoring the failing TimeZones which are having zone
0f1e29c77e50 8224560: (tz) Upgrade time-zone data to tzdata2019a
rpatil
parents: 47216
diff changeset
   175
             * rules defined till year 2037 and/or above and have negative DST
0f1e29c77e50 8224560: (tz) Upgrade time-zone data to tzdata2019a
rpatil
parents: 47216
diff changeset
   176
             * save time in IANA tzdata. This bug is tracked via JDK-8223388.
57544
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   177
             *
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   178
             * These are the zones/rules that employ negative DST in vanguard
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   179
             * format (as of 2019a):
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   180
             *
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   181
             *  - Rule "Eire"
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   182
             *  - Rule "Morocco"
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   183
             *  - Rule "Namibia"
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   184
             *  - Zone "Europe/Prague"
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   185
             *
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   186
             * Tehran/Iran rule has rules beyond 2037, in which javazic assumes
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   187
             * to be the last year. Thus javazic's rule is based on year 2037
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   188
             * (Mar 20th/Sep 20th are the cutover dates), while the real rule
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   189
             * has year 2087 where Mar 21st/Sep 21st are the cutover dates.
55634
0f1e29c77e50 8224560: (tz) Upgrade time-zone data to tzdata2019a
rpatil
parents: 47216
diff changeset
   190
             */
57544
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   191
            if (zid.equals("Africa/Casablanca") || // uses "Morocco" rule
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   192
                zid.equals("Africa/El_Aaiun") || // uses "Morocco" rule
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   193
                zid.equals("Africa/Windhoek") || // uses "Namibia" rule
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   194
                zid.equals("Eire") ||
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   195
                zid.equals("Europe/Bratislava") || // link to "Europe/Prague"
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   196
                zid.equals("Europe/Dublin") || // uses "Eire" rule
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   197
                zid.equals("Europe/Prague") ||
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   198
                zid.equals("Asia/Tehran") || // last rule mismatch
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   199
                zid.equals("Iran")) { // last rule mismatch
99d2dd7b84a8 8212970: TZ database in "vanguard" format support
naoto
parents: 55634
diff changeset
   200
                    continue;
55634
0f1e29c77e50 8224560: (tz) Upgrade time-zone data to tzdata2019a
rpatil
parents: 47216
diff changeset
   201
            }
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   202
            if (! zi.equalsTo(ziOLD)) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   203
                System.out.println(zi.diffsTo(ziOLD));
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   204
                throw new RuntimeException("  FAILED:  " + zid);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   205
            }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   206
        }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   207
        delete(fZidir);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   208
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   209
        // test tzdb version
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   210
        if (!ver.equals(sun.util.calendar.ZoneInfoFile.getVersion())) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   211
            System.out.printf("  FAILED:  ver=%s, expected=%s%n",
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   212
                              sun.util.calendar.ZoneInfoFile.getVersion(), ver);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   213
            throw new RuntimeException("Version test failed");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   214
        }
15665
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   215
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   216
        // test getAvailableIDs(raw);
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   217
        zids_new = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   218
        //Arrays.sort(zids_new);
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   219
        zids_old = ZoneInfoOld.getAvailableIDs(-8 * 60 * 60 * 1000);
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   220
        if (!Arrays.equals(zids_new, zids_old)) {
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   221
            System.out.println("------------------------");
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   222
            System.out.println("NEW.getAvailableIDs(-8:00)");
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   223
            for (String zid : zids_new) {
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   224
                System.out.println(zid);
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   225
            }
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   226
            System.out.println("------------------------");
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   227
            System.out.println("OLD.getAvailableIDs(-8:00)");
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   228
            for (String zid : zids_old) {
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   229
                System.out.println(zid);
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   230
            }
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   231
            throw new RuntimeException("  FAILED:  availableIds(offset) don't match");
2223468cd706 8008161: Regression: j.u.TimeZone.getAvailableIDs(rawOffset) returns non-sorted list
sherman
parents: 15658
diff changeset
   232
        }
15658
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   233
    }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   234
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   235
    private static void delete(File f) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   236
        if (f.isDirectory()) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   237
            for (File f0 : f.listFiles()) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   238
               delete(f0);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   239
            }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   240
        }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   241
        f.delete();
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   242
     }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   243
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   244
    // to access sun.util.calendar.ZoneInfo's private fields
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   245
    static Class<?> ziClz;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   246
    static Field rawOffset;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   247
    static Field checksum;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   248
    static Field dstSavings;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   249
    static Field transitions;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   250
    static Field offsets;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   251
    static Field simpleTimeZoneParams;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   252
    static Field willGMTOffsetChange;
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   253
    static {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   254
        try {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   255
            ziClz = Class.forName("sun.util.calendar.ZoneInfo");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   256
            rawOffset = ziClz.getDeclaredField("rawOffset");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   257
            checksum = ziClz.getDeclaredField("checksum");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   258
            dstSavings = ziClz.getDeclaredField("dstSavings");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   259
            transitions = ziClz.getDeclaredField("transitions");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   260
            offsets = ziClz.getDeclaredField("offsets");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   261
            simpleTimeZoneParams = ziClz.getDeclaredField("simpleTimeZoneParams");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   262
            willGMTOffsetChange = ziClz.getDeclaredField("willGMTOffsetChange");
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   263
            rawOffset.setAccessible(true);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   264
            checksum.setAccessible(true);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   265
            dstSavings.setAccessible(true);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   266
            transitions.setAccessible(true);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   267
            offsets.setAccessible(true);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   268
            simpleTimeZoneParams.setAccessible(true);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   269
            willGMTOffsetChange.setAccessible(true);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   270
        } catch (Exception x) {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   271
            throw new RuntimeException(x);
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   272
        }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   273
    }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   274
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   275
    private static ZoneInfoOld toZoneInfoOld(TimeZone tz) throws Exception {
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   276
        return new ZoneInfoOld(tz.getID(),
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   277
                               rawOffset.getInt(tz),
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   278
                               dstSavings.getInt(tz),
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   279
                               checksum.getInt(tz),
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   280
                               (long[])transitions.get(tz),
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   281
                               (int[])offsets.get(tz),
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   282
                               (int[])simpleTimeZoneParams.get(tz),
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   283
                               willGMTOffsetChange.getBoolean(tz));
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   284
    }
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   285
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   286
55b829ca2334 8007392: JSR 310: DateTime API Updates
sherman
parents:
diff changeset
   287
}