You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2023/01/03 21:29:32 UTC

[logging-log4j2] 02/03: LOG4J2-1631 Use java.time in PatternProcessorTest

This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit e9b91d9a76ea2b102a418578705be39cb0be4e23
Author: Danas Mikelinskas <da...@swedbank.lt>
AuthorDate: Tue Jan 3 00:07:16 2023 +0200

    LOG4J2-1631 Use java.time in PatternProcessorTest
---
 .../appender/rolling/PatternProcessorTest.java     | 343 ++++++++-------------
 1 file changed, 125 insertions(+), 218 deletions(-)

diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
index c03b27851b..6775f4eb6f 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
@@ -16,9 +16,11 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
 import java.util.Calendar;
-import java.util.Date;
 import java.util.Locale;
 import java.util.TimeZone;
 
@@ -34,8 +36,10 @@ import static org.junit.jupiter.api.Assertions.*;
  */
 public class PatternProcessorTest {
 
-    private String format(final long time) {
-        return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS").format(new Date(time));
+    private static Instant parseLocalDateTime(String text) {
+        return LocalDateTime.parse(text)
+                .atZone(ZoneId.systemDefault())
+                .toInstant();
     }
 
     @Test
@@ -56,30 +60,22 @@ public class PatternProcessorTest {
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeHourlyReturnsFirstMinuteOfNextHour() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.MARCH, 4, 10, 31, 59); // Tue, March 4, 2014, 10:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Wed, March 4, 2014, 11:00
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 4, 11, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = parseLocalDateTime("2014-03-04T10:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = parseLocalDateTime("2014-03-04T11:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeHourlyReturnsFirstMinuteOfNextHour2() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.MARCH, 4, 23, 31, 59); // Tue, March 4, 2014, 23:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Wed, March 5, 2014, 00:00
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 5, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = parseLocalDateTime("2014-03-04T23:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = parseLocalDateTime("2014-03-05T00:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
@@ -89,15 +85,11 @@ public class PatternProcessorTest {
         // during winter GMT-6
         // during summer GMT-5
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}{America/Chicago}.log.gz");
-        final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-        initial.set(2014, Calendar.MARCH, 9, 1, 31, 59); // Tue, March 9, 2014, 01:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Wed, March 9, 2014, 02:00
-        final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-        expected.set(2014, Calendar.MARCH, 9, 2, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = OffsetDateTime.parse("2014-03-09T01:31:59-06:00").toInstant();
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = OffsetDateTime.parse("2014-03-09T02:00:00-06:00").toInstant();
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
@@ -107,140 +99,103 @@ public class PatternProcessorTest {
         // during summer GMT-5
         // during winter GMT-6
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}{America/Chicago}.log.gz");
-        final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-5"));
-        initial.set(2014, Calendar.NOVEMBER, 2, 1, 31, 59); // Sun, November 2, 2014, 01:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Sun, November 2, 2014, 03:00 (i.e. 1h 29min since initial)
-        final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-5"));
-        expected.set(2014, Calendar.NOVEMBER, 2, 3, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = OffsetDateTime.parse("2014-11-02T01:31:59-05:00").toInstant();
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        // expect 1h 29min since initial
+        Instant expected = OffsetDateTime.parse("2014-11-02T03:00:00-05:00").toInstant();
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeHourlyReturnsFirstMinuteOfNextYear() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2015, Calendar.DECEMBER, 31, 23, 31, 59);
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2016, Calendar.JANUARY, 1, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = parseLocalDateTime("2015-12-31T23:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = parseLocalDateTime("2016-01-01T00:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMillisecondlyReturnsNextMillisec() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH-mm-ss.SSS}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.MARCH, 4, 10, 31, 53); // Tue, March 4, 2014, 10:31:53.123
-        initial.set(Calendar.MILLISECOND, 123);
-        assertEquals("2014/03/04 10:31:53.123", format(initial.getTimeInMillis()));
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Tue, March 4, 2014, 10:31:53.124
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 4, 10, 31, 53);
-        expected.set(Calendar.MILLISECOND, 124);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = parseLocalDateTime("2014-03-04T10:31:53.123");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = parseLocalDateTime("2014-03-04T10:31:53.124");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMinutelyReturnsFirstSecondOfNextMinute() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH-mm}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.MARCH, 4, 10, 31, 59); // Tue, March 4, 2014, 10:31
-        initial.set(Calendar.MILLISECOND, 0);
-        assertEquals("2014/03/04 10:31:59.000", format(initial.getTimeInMillis()));
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Tue, March 4, 2014, 10:32
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 4, 10, 32, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = parseLocalDateTime("2014-03-04T10:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = parseLocalDateTime("2014-03-04T10:32:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextMonth() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.OCTOBER, 15, 10, 31, 59); // Oct 15th
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
+        Instant initial = parseLocalDateTime("2014-10-15T10:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
 
-        // We expect 1st day of next month
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.NOVEMBER, 1, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant expected = parseLocalDateTime("2014-11-01T00:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextMonth2() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.JANUARY, 31, 10, 31, 59); // 2014 Jan 31st
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
+        Instant initial = parseLocalDateTime("2014-01-31T10:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
 
         // Expect 1st of next month: 2014 Feb 1st
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.FEBRUARY, 1, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant expected = parseLocalDateTime("2014-02-01T00:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextMonth3() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.DECEMBER, 31, 10, 31, 59); // 2014 Dec 31st
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
+        Instant initial = parseLocalDateTime("2014-12-31T10:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
 
         // Expect 1st of next month: 2015 Jan 1st
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2015, Calendar.JANUARY, 1, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant expected = parseLocalDateTime("2015-01-01T00:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextYear() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2015, Calendar.DECEMBER, 28, 0, 0, 0);
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
+        Instant initial = parseLocalDateTime("2015-12-28T00:00:00");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
 
         // We expect 1st day of next month
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2016, Calendar.JANUARY, 1, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant expected = parseLocalDateTime("2016-01-01T00:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeSecondlyReturnsFirstMillisecOfNextSecond() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH-mm-ss}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.MARCH, 4, 10, 31, 53); // Tue, March 4, 2014, 10:31:53
-        initial.set(Calendar.MILLISECOND, 123);
-        assertEquals("2014/03/04 10:31:53.123", format(initial.getTimeInMillis()));
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Tue, March 4, 2014, 10:31:54
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 4, 10, 31, 54);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = parseLocalDateTime("2014-03-04T10:31:53.123");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = parseLocalDateTime("2014-03-04T10:31:54");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
@@ -251,15 +206,11 @@ public class PatternProcessorTest {
 
         try {
             final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-W}.log.gz");
-            final Calendar initial = Calendar.getInstance();
-            initial.set(2014, Calendar.MARCH, 4, 10, 31, 59); // Tue, March 4, 2014
-            final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-            // expect Monday, March 10, 2014
-            final Calendar expected = Calendar.getInstance();
-            expected.set(2014, Calendar.MARCH, 10, 0, 0, 0);
-            expected.set(Calendar.MILLISECOND, 0);
-            assertEquals(format(expected.getTimeInMillis()), format(actual));
+            Instant initial = parseLocalDateTime("2014-03-04T10:31:59");
+            final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+            Instant expected = parseLocalDateTime("2014-03-10T00:00:00");
+            assertEquals(expected, Instant.ofEpochMilli(actual));
         } finally {
             Locale.setDefault(old);
         }
@@ -273,15 +224,11 @@ public class PatternProcessorTest {
 
         try {
             final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-W}.log.gz");
-            final Calendar initial = Calendar.getInstance();
-            initial.set(2014, Calendar.MARCH, 4, 10, 31, 59); // Tue, March 4, 2014
-            final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-            // expect Sunday, March 9, 2014
-            final Calendar expected = Calendar.getInstance();
-            expected.set(2014, Calendar.MARCH, 9, 0, 0, 0);
-            expected.set(Calendar.MILLISECOND, 0);
-            assertEquals(format(expected.getTimeInMillis()), format(actual));
+            Instant initial = parseLocalDateTime("2014-03-04T10:31:59");
+            final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+            Instant expected = parseLocalDateTime("2014-03-09T00:00:00");
+            assertEquals(expected, Instant.ofEpochMilli(actual));
         } finally {
             Locale.setDefault(old);
         }
@@ -297,15 +244,11 @@ public class PatternProcessorTest {
         Locale.setDefault(Locale.US); // force 1st day of the week to be Sunday
         try {
             final PatternProcessor pp = new PatternProcessor("logs/market_data_msg.log-%d{yyyy-MM-'W'W}");
-            final Calendar initial = Calendar.getInstance();
-            initial.set(2015, Calendar.DECEMBER, 28, 0, 0, 0); // Monday, December 28, 2015
-            final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-            // expect Sunday January 3, 2016
-            final Calendar expected = Calendar.getInstance();
-            expected.set(2016, Calendar.JANUARY, 3, 0, 0, 0);
-            expected.set(Calendar.MILLISECOND, 0);
-            assertEquals(format(expected.getTimeInMillis()), format(actual));
+            Instant initial = parseLocalDateTime("2015-12-28T00:00:00");
+            final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+            Instant expected = parseLocalDateTime("2016-01-03T00:00:00");
+            assertEquals(expected, Instant.ofEpochMilli(actual));
         } finally {
             Locale.setDefault(old);
         }
@@ -315,30 +258,22 @@ public class PatternProcessorTest {
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeDailyReturnsFirstHourOfNextDay() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}.log.gz");
-        final Calendar initial = Calendar.getInstance();
-        initial.set(2014, Calendar.MARCH, 4, 2, 31, 59); // Tue, March 4, 2014, 02:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Wed, March 5, 2014, 00:00
-        final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 5, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = parseLocalDateTime("2014-03-04T02:31:59");
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = parseLocalDateTime("2014-03-05T00:00:00");
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeDailyReturnsFirstHourOfNextDayHonoringTimeZoneOption1() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{GMT-6}.log.gz");
-        final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-        initial.set(2014, Calendar.MARCH, 4, 2, 31, 59); // Tue, March 4, 2014, 02:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Wed, March 5, 2014, 00:00
-        final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-        expected.set(2014, Calendar.MARCH, 5, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = OffsetDateTime.parse("2014-03-04T02:31:59-06:00").toInstant();
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = OffsetDateTime.parse("2014-03-05T00:00:00-06:00").toInstant();
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
@@ -349,15 +284,11 @@ public class PatternProcessorTest {
         TimeZone.setDefault(TimeZone.getTimeZone("GMT+10")); // default is ignored if pattern contains timezone
         try {
             final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{GMT-6}.log.gz");
-            final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-            initial.set(2014, Calendar.MARCH, 4, 2, 31, 59); // Tue, March 4, 2014, 02:31
-            final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-            // expect Wed, March 5, 2014, 00:00
-            final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-            expected.set(2014, Calendar.MARCH, 5, 0, 0, 0);
-            expected.set(Calendar.MILLISECOND, 0);
-            assertEquals(format(expected.getTimeInMillis()), format(actual));
+            Instant initial = OffsetDateTime.parse("2014-03-04T02:31:59-06:00").toInstant();
+            final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+            Instant expected = OffsetDateTime.parse("2014-03-05T00:00:00-06:00").toInstant();
+            assertEquals(expected, Instant.ofEpochMilli(actual));
         } finally {
             TimeZone.setDefault(old);
         }
@@ -371,15 +302,11 @@ public class PatternProcessorTest {
         TimeZone.setDefault(TimeZone.getTimeZone("GMT-10")); // default is ignored if pattern contains timezone
         try {
             final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{GMT-6}.log.gz");
-            final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-            initial.set(2014, Calendar.MARCH, 4, 2, 31, 59); // Tue, March 4, 2014, 02:31
-            final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-            // expect Wed, March 5, 2014, 00:00
-            final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-            expected.set(2014, Calendar.MARCH, 5, 0, 0, 0);
-            expected.set(Calendar.MILLISECOND, 0);
-            assertEquals(format(expected.getTimeInMillis()), format(actual));
+            Instant initial = OffsetDateTime.parse("2014-03-04T02:31:59-06:00").toInstant();
+            final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+            Instant expected = OffsetDateTime.parse("2014-03-05T00:00:00-06:00").toInstant();
+            assertEquals(expected, Instant.ofEpochMilli(actual));
         } finally {
             TimeZone.setDefault(old);
         }
@@ -389,30 +316,22 @@ public class PatternProcessorTest {
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeDailyReturnsFirstHourOfNextDayDstJan() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{America/Chicago}.log.gz");
-        final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-        initial.set(2014, Calendar.JANUARY, 4, 0, 31, 59); // Sat, January 4, 2014, 00:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Sun, January 5, 2014, 00:00
-        final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-        expected.set(2014, Calendar.JANUARY, 5, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = OffsetDateTime.parse("2014-01-04T00:31:59-06:00").toInstant();
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = OffsetDateTime.parse("2014-01-05T00:00:00-06:00").toInstant();
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
     @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeDailyReturnsFirstHourOfNextDayDstJun() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{America/Chicago}.log.gz");
-        final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-5"));
-        initial.set(2014, Calendar.JUNE, 4, 0, 31, 59); // Wed, March 4, 2014, 00:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Thu, March 5, 2014, 00:00
-        final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-5"));
-        expected.set(2014, Calendar.JUNE, 5, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = OffsetDateTime.parse("2014-06-04T00:31:59-05:00").toInstant();
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = OffsetDateTime.parse("2014-06-05T00:00:00-05:00").toInstant();
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
@@ -422,15 +341,11 @@ public class PatternProcessorTest {
         // during winter GMT-6
         // during summer GMT-5
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{America/Chicago}.log.gz");
-        final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
-        initial.set(2014, Calendar.MARCH, 9, 0, 31, 59); // Sun, March 9, 2014, 00:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Mon, March 10, 2014, 00:00
-        final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-5")); // offset changed
-        expected.set(2014, Calendar.MARCH, 10, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = OffsetDateTime.parse("2014-03-09T00:31:59-06:00").toInstant();
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = OffsetDateTime.parse("2014-03-10T00:00:00-05:00").toInstant();
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
@@ -440,15 +355,11 @@ public class PatternProcessorTest {
         // during summer GMT-5
         // during winter GMT-6
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{America/Chicago}.log.gz");
-        final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT-5"));
-        initial.set(2014, Calendar.NOVEMBER, 2, 0, 31, 59); // Sun, November 2, 2014, 00:31
-        final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-        // expect Mon, November 3, 2014, 00:00
-        final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT-6")); // offset changed
-        expected.set(2014, Calendar.NOVEMBER, 3, 0, 0, 0);
-        expected.set(Calendar.MILLISECOND, 0);
-        assertEquals(format(expected.getTimeInMillis()), format(actual));
+        Instant initial = OffsetDateTime.parse("2014-11-02T00:31:59-05:00").toInstant();
+        final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+        Instant expected = OffsetDateTime.parse("2014-11-03T00:00:00-06:00").toInstant();
+        assertEquals(expected, Instant.ofEpochMilli(actual));
     }
 
     @Test
@@ -459,15 +370,11 @@ public class PatternProcessorTest {
         TimeZone.setDefault(TimeZone.getTimeZone("GMT-10")); // default is ignored even if timezone option invalid
         try {
             final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd}{NOTVALID}.log.gz");
-            final Calendar initial = Calendar.getInstance(TimeZone.getTimeZone("GMT+0"));
-            initial.set(2014, Calendar.MARCH, 4, 2, 31, 59); // Tue, March 4, 2014, 02:31
-            final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
-
-            // expect Wed, March 5, 2014, 00:00
-            final Calendar expected = Calendar.getInstance(TimeZone.getTimeZone("GMT+0"));
-            expected.set(2014, Calendar.MARCH, 5, 0, 0, 0);
-            expected.set(Calendar.MILLISECOND, 0);
-            assertEquals(format(expected.getTimeInMillis()), format(actual));
+            Instant initial = Instant.parse("2014-03-04T02:31:59Z");
+            final long actual = pp.getNextTime(initial.toEpochMilli(), 1, false);
+
+            Instant expected = Instant.parse("2014-03-05T00:00:00Z");
+            assertEquals(expected, Instant.ofEpochMilli(actual));
         } finally {
             TimeZone.setDefault(old);
         }