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

xxyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/master by this push:
     new 53aeb70  KYLIN-4571 Add config kylin.metrics.event-time-zone for 
indicating RecordEventTimeDetail time zone
53aeb70 is described below

commit 53aeb7044e0a7c157458476e344c50d6413657c7
Author: Zhong, Yanghong <nju_y...@apache.org>
AuthorDate: Mon Jun 15 16:01:08 2020 +0800

    KYLIN-4571 Add config kylin.metrics.event-time-zone for indicating 
RecordEventTimeDetail time zone
---
 .../org/apache/kylin/common/KylinConfigBase.java   |  4 ++
 .../metrics/lib/impl/RecordEventTimeDetail.java    |  8 +--
 .../lib/impl/RecordEventTimeDetailTest.java        | 60 ++++++++++++++++++++++
 3 files changed, 68 insertions(+), 4 deletions(-)

diff --git 
a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index 041f545..a5af5e3 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -2316,6 +2316,10 @@ public abstract class KylinConfigBase implements 
Serializable {
         return 
Boolean.parseBoolean(getOptional("kylin.htrace.trace-every-query", FALSE));
     }
 
+    public String getKylinMetricsEventTimeZone() {
+        return getOptional("kylin.metrics.event-time-zone", 
getTimeZone()).toUpperCase(Locale.ROOT);
+    }
+    
     public boolean isKylinMetricsMonitorEnabled() {
         return 
Boolean.parseBoolean(getOptional("kylin.metrics.monitor-enabled", FALSE));
     }
diff --git 
a/core-metrics/src/main/java/org/apache/kylin/metrics/lib/impl/RecordEventTimeDetail.java
 
b/core-metrics/src/main/java/org/apache/kylin/metrics/lib/impl/RecordEventTimeDetail.java
index 4c549bc..fc4d86d 100644
--- 
a/core-metrics/src/main/java/org/apache/kylin/metrics/lib/impl/RecordEventTimeDetail.java
+++ 
b/core-metrics/src/main/java/org/apache/kylin/metrics/lib/impl/RecordEventTimeDetail.java
@@ -18,22 +18,22 @@
 
 package org.apache.kylin.metrics.lib.impl;
 
+import org.apache.kylin.common.KylinConfig;
+
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import org.apache.kylin.common.KylinConfig;
-
 public class RecordEventTimeDetail {
     private static final TimeZone timeZone;
     private static final ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = 
new ThreadLocal<>();
     private static final ThreadLocal<SimpleDateFormat> timeFormatThreadLocal = 
new ThreadLocal<>();
 
     static {
-        timeZone = 
TimeZone.getTimeZone(KylinConfig.getInstanceFromEnv().getTimeZone());
+        timeZone = 
TimeZone.getTimeZone(KylinConfig.getInstanceFromEnv().getKylinMetricsEventTimeZone());
     }
-
+    
     public final String year_begin_date;
     public final String month_begin_date;
     public final String date;
diff --git 
a/core-metrics/src/test/java/org/apache/kylin/metrics/lib/impl/RecordEventTimeDetailTest.java
 
b/core-metrics/src/test/java/org/apache/kylin/metrics/lib/impl/RecordEventTimeDetailTest.java
new file mode 100644
index 0000000..a8e286b
--- /dev/null
+++ 
b/core-metrics/src/test/java/org/apache/kylin/metrics/lib/impl/RecordEventTimeDetailTest.java
@@ -0,0 +1,60 @@
+/*
+ * 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.kylin.metrics.lib.impl;
+
+import org.apache.kylin.common.util.LocalFileMetadataTestCase;
+import org.apache.kylin.common.util.StringUtil;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class RecordEventTimeDetailTest extends LocalFileMetadataTestCase {
+
+    private static String eventTimeZone;
+
+    @BeforeClass
+    public static void beforeClass() throws Exception {
+        staticCreateTestMetadata();
+        eventTimeZone = System.getProperty("kylin.metrics.event-time-zone");
+        System.setProperty("kylin.metrics.event-time-zone", "GMT");
+    }
+
+    @AfterClass
+    public static void afterClass() throws Exception {
+        staticCleanupTestMetadata();
+        if (!StringUtil.isEmpty(eventTimeZone)) {
+            System.setProperty("kylin.metrics.event-time-zone", eventTimeZone);
+        }
+    }
+
+    @Test
+    public void testFormatted() {
+        RecordEventTimeDetail timeDetail = new 
RecordEventTimeDetail(200000000000L);
+
+        Assert.assertEquals("1976-01-01", timeDetail.year_begin_date);
+        Assert.assertEquals("1976-05-01", timeDetail.month_begin_date);
+        Assert.assertEquals("1976-05-02", timeDetail.week_begin_date);
+        Assert.assertEquals("1976-05-03", timeDetail.date);
+        Assert.assertEquals("19:33:20", timeDetail.time);
+        Assert.assertEquals(19, timeDetail.hour);
+        Assert.assertEquals(33, timeDetail.minute);
+        Assert.assertEquals(20, timeDetail.second);
+    }
+}

Reply via email to