Add unit test for TimeFilter
git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers@1104706 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java b/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
index a159854..baaca17 100644
--- a/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
+++ b/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
@@ -47,7 +47,7 @@
     /**
      * Timezone.
      */
-    private final Calendar calendar;
+    private final TimeZone timezone;
 
 
     /**
@@ -69,11 +69,12 @@
         super(onMatch, onMismatch);
         this.start = start;
         this.end = end;
-        calendar = Calendar.getInstance(tz);
+        timezone = tz;
     }
 
     @Override
     public Result filter(LogEvent event) {
+        Calendar calendar = Calendar.getInstance(timezone);
         calendar.setTimeInMillis(event.getMillis());
         //
         //   get apparent number of milliseconds since midnight
@@ -102,7 +103,7 @@
                 logger.warn("Error parsing start value " + start, ex);
             }
         }
-        long e = 0;
+        long e = Long.MAX_VALUE;
         if (end != null) {
             stf.setTimeZone(TimeZone.getTimeZone("UTC"));
             try {
diff --git a/log4j2-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java b/log4j2-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
new file mode 100644
index 0000000..a4a11db
--- /dev/null
+++ b/log4j2-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.filter;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Log4jLogEvent;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.message.SimpleMessage;
+import org.junit.Test;
+
+import java.util.Calendar;
+import java.util.TimeZone;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ *
+ */
+public class TimeFilterTest {
+
+    @Test
+    public void testTime() {
+        TimeFilter filter = TimeFilter.createFilter("02:00:00", "03:00:00", "America/LosAngeles", null, null);
+        filter.start();
+        assertTrue(filter.isStarted());
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/LosAngeles"));
+        cal.set(Calendar.HOUR_OF_DAY, 02);
+        long tod = cal.getTimeInMillis();
+        LogEvent event = new Log4jLogEvent(null, null, null, null, null, null, null, null, null, null, tod);
+        assertTrue(filter.filter(null, Level.ERROR, null, null, (Throwable)null) == Filter.Result.NEUTRAL);
+        assertTrue(filter.filter(event) == Filter.Result.NEUTRAL);
+        cal.roll(Calendar.DAY_OF_MONTH, true);
+        tod = cal.getTimeInMillis();
+        event = new Log4jLogEvent(null, null, null, null, null, null, null, null, null, null, tod);
+        assertTrue(filter.filter(event) == Filter.Result.NEUTRAL);
+        cal.set(Calendar.HOUR_OF_DAY, 04);
+        tod = cal.getTimeInMillis();
+        event = new Log4jLogEvent(null, null, null, null, null, null, null, null, null, null, tod);
+        assertTrue(filter.filter(event) == Filter.Result.DENY);
+    }
+}