8157792: After Integrating tzdata2016d the test/sun/util/calendar/zi/TestZoneInfo310.java fails for "Asia/Oral" and "Asia/Qyzylorda" Timezones
Reviewed-by: peytoia
--- a/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java Tue Aug 30 09:36:23 2016 +0800
+++ b/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java Tue Aug 30 14:16:16 2016 +0900
@@ -22,11 +22,15 @@
*/
/*
- *@test
- *@bug 8007572 8008161
- *@summary Test whether the TimeZone generated from JSR310 tzdb is the same
- *as the one from the tz data from javazic
+ * @test
+ * @bug 8007572 8008161 8157792
+ * @summary Test whether the TimeZone generated from JSR310 tzdb is the same
+ * as the one from the tz data from javazic
* @modules java.base/sun.util.calendar
+ * @build BackEnd Checksum DayOfWeek Gen GenDoc Main Mappings Month
+ * Rule RuleDay RuleRec Simple TestZoneInfo310 Time Timezone
+ * TzIDOldMapping Zone ZoneInfoFile ZoneInfoOld ZoneRec Zoneinfo
+ * @run main TestZoneInfo310
*/
import java.io.File;
@@ -164,10 +168,6 @@
}
for (String zid : zids_new) {
- if (zid.equals("Asia/Oral") || zid.equals("Asia/Qyzylorda")) {
- // JDK-8157792 tracking this issue
- continue;
- }
ZoneInfoOld zi = toZoneInfoOld(TimeZone.getTimeZone(zid));
ZoneInfoOld ziOLD = (ZoneInfoOld)ZoneInfoOld.getTimeZone(zid);
if (! zi.equalsTo(ziOLD)) {
--- a/jdk/test/sun/util/calendar/zi/Zoneinfo.java Tue Aug 30 09:36:23 2016 +0800
+++ b/jdk/test/sun/util/calendar/zi/Zoneinfo.java Tue Aug 30 14:16:16 2016 +0900
@@ -373,6 +373,7 @@
tz.getOffsetIndex(zrec.getGmtOffset());
int lastGmtOffsetValue = -1;
+ ZoneRec prevzrec = null;
int currentSave = 0;
boolean usedZone;
for (int zindex = 0; zindex < zone.size(); zindex++) {
@@ -441,6 +442,15 @@
currentSave);
if (zrec.hasUntil()) {
if (transition >= zrec.getUntilTime(currentSave)) {
+ // If the GMT offset changed from the previous one,
+ // record fromTime as a transition.
+ if (!fromTimeUsed && prevzrec != null
+ && gmtOffset != prevzrec.getGmtOffset()) {
+ tz.addTransition(fromTime,
+ tz.getOffsetIndex(gmtOffset+currentSave),
+ tz.getDstOffsetIndex(currentSave));
+ fromTimeUsed = true; // for consistency
+ }
break year_loop;
}
}
@@ -452,8 +462,6 @@
if (fromTime != minTime) {
int prevsave;
- ZoneRec prevzrec = zone.get(zindex - 1);
-
// See if until time in the previous
// ZoneRec is the same thing as the
// local time in the next rule.
@@ -555,6 +563,7 @@
fromYear = zrec.getUntilYear();
year = zrec.getUntilYear();
}
+ prevzrec = zrec;
}
if (tz.getDSTType() == Timezone.UNDEF_DST) {