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

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit e43fe3fe580eec28d94226218dc6787cd01fa541
Author: Mykola Mandra <[email protected]>
AuthorDate: Mon Jul 19 10:03:25 2021 +0100

    Calculate UTC timestamp in file logstore
    
    Signed-off-by: Mykola Mandra <[email protected]>
---
 .../util/core/logbook/file/FileLogStore.java       | 33 +++++++++++++---------
 .../util/core/logbook/file/FileLogStoreTest.java   | 18 ++++++------
 2 files changed, 29 insertions(+), 22 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/logbook/file/FileLogStore.java
 
b/core/src/main/java/org/apache/brooklyn/util/core/logbook/file/FileLogStore.java
index 6a8b6c3..e25428c 100644
--- 
a/core/src/main/java/org/apache/brooklyn/util/core/logbook/file/FileLogStore.java
+++ 
b/core/src/main/java/org/apache/brooklyn/util/core/logbook/file/FileLogStore.java
@@ -36,9 +36,9 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Predicate;
 import java.util.regex.Matcher;
@@ -70,23 +70,28 @@ public class FileLogStore implements LogStore {
     public final static ConfigKey<String> LOGBOOK_LOG_STORE_DATEFORMAT = 
ConfigKeys.newStringConfigKey(
             BASE_NAME_FILE_LOG_STORE + ".dateFormat", "Date format", 
"yyyy-MM-dd'T'HH:mm:ss,SSS");
 
+    public final static TimeZone UTC_TIMEZONE = TimeZone.getTimeZone("UTC");
+
     private final String filePath;
     private final Path path;
     private final String logLinePattern;
-    private final String logDateFormat;
+    private final DateFormat dateFormat;
+
 
     @VisibleForTesting
     public FileLogStore() {
         this.path = null;
         this.filePath = "";
         this.logLinePattern = LOGBOOK_LOG_STORE_REGEX.getDefaultValue();
-        this.logDateFormat = LOGBOOK_LOG_STORE_DATEFORMAT.getDefaultValue();
+        dateFormat = new 
SimpleDateFormat(LOGBOOK_LOG_STORE_DATEFORMAT.getDefaultValue());
+        dateFormat.setTimeZone(UTC_TIMEZONE);
     }
 
     public FileLogStore(ManagementContext mgmt) {
         this.filePath = mgmt.getConfig().getConfig(LOGBOOK_LOG_STORE_PATH);
         this.logLinePattern = 
mgmt.getConfig().getConfig(LOGBOOK_LOG_STORE_REGEX);
-        this.logDateFormat = 
mgmt.getConfig().getConfig(LOGBOOK_LOG_STORE_DATEFORMAT);
+        dateFormat = new 
SimpleDateFormat(mgmt.getConfig().getConfig(LOGBOOK_LOG_STORE_DATEFORMAT));
+        dateFormat.setTimeZone(UTC_TIMEZONE);
         Preconditions.checkNotNull(filePath, "Log file path must be set: " + 
LOGBOOK_LOG_STORE_PATH.getName());
         this.path = Paths.get(this.filePath);
     }
@@ -97,6 +102,10 @@ public class FileLogStore implements LogStore {
         // TODO: the read of the file needs to be improved, specially to 
implement reading the file backwards and
         //  do a correct multiline log reading
         try (Stream<String> stream = Files.lines(path)) {
+
+            Date dateTimeFrom = Strings.isNonBlank(params.getDateTimeFrom()) ? 
Time.parseDate(params.getDateTimeFrom()) : null;
+            Date dateTimeTo = Strings.isNonBlank(params.getDateTimeTo()) ? 
Time.parseDate(params.getDateTimeTo()) : null;
+
             Predicate<BrooklynLogEntry> filter = brooklynLogEntry -> {
 
                 // Excludes unrecognized items or items without a date, 
typically they are multiline log messages.
@@ -121,15 +130,13 @@ public class FileLogStore implements LogStore {
                 if (brooklynLogEntry.getDatetime() != null) {
 
                     // Date-time from.
-                    if (Strings.isNonBlank(params.getDateTimeFrom())) {
-                        Date initDate = 
Time.parseDate(params.getDateTimeFrom());
-                        isDateTimeFromMatch = 
brooklynLogEntry.getDatetime().compareTo(initDate) >= 0;
+                    if (!Objects.isNull(dateTimeFrom)) {
+                        isDateTimeFromMatch = 
brooklynLogEntry.getDatetime().compareTo(dateTimeFrom) >= 0;
                     }
 
                     // Date-time to.
-                    if (Strings.isNonBlank(params.getDateTimeTo())) {
-                        Date finalDate = 
Time.parseDate(params.getDateTimeTo());
-                        isDateTimeToMatch = 
brooklynLogEntry.getDatetime().compareTo(finalDate) <= 0;
+                    if (!Objects.isNull(dateTimeTo)) {
+                        isDateTimeToMatch = 
brooklynLogEntry.getDatetime().compareTo(dateTimeTo) <= 0;
                     }
                 }
 
@@ -178,7 +185,7 @@ public class FileLogStore implements LogStore {
         if (m.matches()) {
             entry = new BrooklynLogEntry();
             entry.setTimestampString(m.group("timestamp"));
-            Maybe<Calendar> calendarMaybe = 
Time.parseCalendarFormat(entry.getTimestampString(), logDateFormat);
+            Maybe<Calendar> calendarMaybe = 
Time.parseCalendarFormat(entry.getTimestampString(), dateFormat);
             if (calendarMaybe.isPresentAndNonNull()) {
                 entry.setDatetime(calendarMaybe.get().getTime());
             }
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/logbook/file/FileLogStoreTest.java
 
b/core/src/test/java/org/apache/brooklyn/util/core/logbook/file/FileLogStoreTest.java
index de9d962..21131d6 100644
--- 
a/core/src/test/java/org/apache/brooklyn/util/core/logbook/file/FileLogStoreTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/util/core/logbook/file/FileLogStoreTest.java
@@ -53,7 +53,7 @@ public class FileLogStoreTest extends TestCase {
 
     @BeforeTest
     public void setUp() {
-        TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
     }
 
     @BeforeMethod
@@ -68,7 +68,7 @@ public class FileLogStoreTest extends TestCase {
         assertNull(brooklynLogEntry.getTaskId());
         assertNull(brooklynLogEntry.getEntityIds());
         assertEquals("2021-05-27T11:36:59,251", 
brooklynLogEntry.getTimestampString());
-        assertEquals("Thu May 27 11:36:59 GMT 2021", 
brooklynLogEntry.getDatetime().toString());
+        assertEquals("Thu May 27 11:36:59 UTC 2021", 
brooklynLogEntry.getDatetime().toString());
         assertEquals("DEBUG", brooklynLogEntry.getLevel());
         assertEquals("146", brooklynLogEntry.getBundleId());
         assertEquals("o.a.b.c.m.i.LocalManagementContext", 
brooklynLogEntry.getClazz());
@@ -84,7 +84,7 @@ public class FileLogStoreTest extends TestCase {
         assertNull(brooklynLogEntry.getTaskId());
         assertNull(brooklynLogEntry.getEntityIds());
         assertEquals("2021-06-07T14:58:58,487", 
brooklynLogEntry.getTimestampString());
-        assertEquals("Mon Jun 07 14:58:58 GMT 2021", 
brooklynLogEntry.getDatetime().toString());
+        assertEquals("Mon Jun 07 14:58:58 UTC 2021", 
brooklynLogEntry.getDatetime().toString());
         assertEquals("INFO", brooklynLogEntry.getLevel());
         assertEquals("6", brooklynLogEntry.getBundleId());
         assertEquals("o.o.p.l.s.s.EventAdminConfigurationNotifier", 
brooklynLogEntry.getClazz());
@@ -98,7 +98,7 @@ public class FileLogStoreTest extends TestCase {
         FileLogStore cut = new FileLogStore();
         BrooklynLogEntry brooklynLogEntry = cut.parseLogLine(TASK_LOG_LINE, 
lineCount);
         assertEquals("2021-05-27T11:36:59,258", 
brooklynLogEntry.getTimestampString());
-        assertEquals("Thu May 27 11:36:59 GMT 2021", 
brooklynLogEntry.getDatetime().toString());
+        assertEquals("Thu May 27 11:36:59 UTC 2021", 
brooklynLogEntry.getDatetime().toString());
         assertEquals("OGObOWJs", brooklynLogEntry.getTaskId());
         assertEquals("[gwpndj09r8]", brooklynLogEntry.getEntityIds());
         assertEquals("DEBUG", brooklynLogEntry.getLevel());
@@ -116,7 +116,7 @@ public class FileLogStoreTest extends TestCase {
         assertNull(brooklynLogEntry.getTaskId());
         assertNull(brooklynLogEntry.getEntityIds());
         assertEquals("2021-07-05T12:38:09,351", 
brooklynLogEntry.getTimestampString());
-        assertEquals("Mon Jul 05 12:38:09 GMT 2021", 
brooklynLogEntry.getDatetime().toString());
+        assertEquals("Mon Jul 05 12:38:09 UTC 2021", 
brooklynLogEntry.getDatetime().toString());
         assertEquals("ERROR", brooklynLogEntry.getLevel());
         assertEquals("293", brooklynLogEntry.getBundleId());
         assertEquals("o.a.b.u.m.ExternalUiModule", 
brooklynLogEntry.getClazz());
@@ -171,7 +171,7 @@ public class FileLogStoreTest extends TestCase {
         assertNull(firstBrooklynLogEntry.getTaskId());
         assertNull(firstBrooklynLogEntry.getEntityIds());
         assertEquals("2021-05-27T11:36:59,251", 
firstBrooklynLogEntry.getTimestampString());
-        assertEquals("Thu May 27 11:36:59 GMT 
2021",firstBrooklynLogEntry.getDatetime().toString());
+        assertEquals("Thu May 27 11:36:59 UTC 
2021",firstBrooklynLogEntry.getDatetime().toString());
         assertEquals("DEBUG", firstBrooklynLogEntry.getLevel());
         assertEquals("146", firstBrooklynLogEntry.getBundleId());
         assertEquals("o.a.b.c.m.i.LocalManagementContext", 
firstBrooklynLogEntry.getClazz());
@@ -184,7 +184,7 @@ public class FileLogStoreTest extends TestCase {
         assertNull(secondBrooklynLogEntry.getTaskId());
         assertNull(secondBrooklynLogEntry.getEntityIds());
         assertEquals("2021-07-05T12:38:09,351", 
secondBrooklynLogEntry.getTimestampString());
-        assertEquals("Mon Jul 05 12:38:09 GMT 2021", 
secondBrooklynLogEntry.getDatetime().toString());
+        assertEquals("Mon Jul 05 12:38:09 UTC 2021", 
secondBrooklynLogEntry.getDatetime().toString());
         assertEquals("ERROR", secondBrooklynLogEntry.getLevel());
         assertEquals("293", secondBrooklynLogEntry.getBundleId());
         assertEquals("o.a.b.u.m.ExternalUiModule", 
secondBrooklynLogEntry.getClazz());
@@ -289,8 +289,8 @@ public class FileLogStoreTest extends TestCase {
         logBookQueryParams.setNumberOfItems(1000); // Request all.
         logBookQueryParams.setTail(false);
         logBookQueryParams.setLevels(ImmutableList.of());
-        logBookQueryParams.setDateTimeFrom("Mon Jul 05 12:38:10 GMT 2021"); // 
Date of the first INFO log line.
-        logBookQueryParams.setDateTimeTo("Mon Jul 05 12:38:12 GMT 2021"); // 
Date of the second INFO log line.
+        logBookQueryParams.setDateTimeFrom("Mon Jul 05 12:38:10 UTC 2021"); // 
Date of the first INFO log line.
+        logBookQueryParams.setDateTimeTo("Mon Jul 05 12:38:12 UTC 2021"); // 
Date of the second INFO log line.
         FileLogStore fileLogStore = new FileLogStore(mgmt);
         List<BrooklynLogEntry> brooklynLogEntries = 
fileLogStore.query(logBookQueryParams);
         assertEquals(2, brooklynLogEntries.size());

Reply via email to