Repository: lens Updated Branches: refs/heads/master 71cf9ffd0 -> c73d5844b
LENS-913: Seeing DateUtil exception in all cube tests Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/c73d5844 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/c73d5844 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/c73d5844 Branch: refs/heads/master Commit: c73d5844b6e74eb3184b70aea283bf26b1bd267c Parents: 71cf9ff Author: Rajat Khandelwal <pro...@apache.org> Authored: Fri Jan 8 17:23:19 2016 +0530 Committer: Rajat Khandelwal <rajatgupt...@gmail.com> Committed: Fri Jan 8 17:23:19 2016 +0530 ---------------------------------------------------------------------- .../lens/cube/metadata/CubeFactTable.java | 45 +++++++++++--------- .../org/apache/lens/cube/metadata/DateUtil.java | 3 +- .../lens/cube/metadata/CubeFactTableTest.java | 4 ++ 3 files changed, 30 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/c73d5844/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java index dd0adb7..b1fec8c 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/CubeFactTable.java @@ -21,6 +21,7 @@ package org.apache.lens.cube.metadata; import java.util.*; import org.apache.lens.cube.metadata.UpdatePeriod.UpdatePeriodComparator; +import org.apache.lens.server.api.error.LensException; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.metastore.api.FieldSchema; @@ -28,7 +29,9 @@ import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.Table; import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class CubeFactTable extends AbstractCubeTable { private String cubeName; private final Map<String, Set<UpdatePeriod>> storageUpdatePeriods; @@ -80,7 +83,7 @@ public class CubeFactTable extends AbstractCubeTable { } private static Map<String, Set<UpdatePeriod>> getUpdatePeriods(String name, Map<String, String> props) { - Map<String, Set<UpdatePeriod>> storageUpdatePeriods = new HashMap<String, Set<UpdatePeriod>>(); + Map<String, Set<UpdatePeriod>> storageUpdatePeriods = new HashMap<>(); String storagesStr = props.get(MetastoreUtil.getFactStorageListKey(name)); if (!StringUtils.isBlank(storagesStr)) { String[] storages = storagesStr.split(","); @@ -88,7 +91,7 @@ public class CubeFactTable extends AbstractCubeTable { String updatePeriodStr = props.get(MetastoreUtil.getFactUpdatePeriodKey(name, storage)); if (StringUtils.isNotBlank(updatePeriodStr)) { String[] periods = updatePeriodStr.split(","); - Set<UpdatePeriod> updatePeriods = new TreeSet<UpdatePeriod>(); + Set<UpdatePeriod> updatePeriods = new TreeSet<>(); for (String period : periods) { updatePeriods.add(UpdatePeriod.valueOf(period)); } @@ -321,20 +324,28 @@ public class CubeFactTable extends AbstractCubeTable { getProperties().put(MetastoreConstants.FACT_AGGREGATED_PROPERTY, Boolean.toString(isAggregated)); } - public Date getAbsoluteStartTime() { + public Date getDateFromProperty(String propKey, boolean relative, boolean start) { + String prop = getProperties().get(propKey); try { - return DateUtil.resolveAbsoluteDate(getProperties().get(MetastoreConstants.FACT_ABSOLUTE_START_TIME)); - } catch (Exception e) { - return new Date(Long.MIN_VALUE); + if (StringUtils.isNotBlank(prop)) { + if (relative) { + return DateUtil.resolveRelativeDate(prop, now()); + } else { + return DateUtil.resolveAbsoluteDate(prop); + } + } + } catch (LensException e) { + log.error("unable to parse {} {} date: {}", relative ? "relative" : "absolute", start ? "start" : "end", prop); } + return start ? DateUtil.MIN_DATE : DateUtil.MAX_DATE; + } + + public Date getAbsoluteStartTime() { + return getDateFromProperty(MetastoreConstants.FACT_ABSOLUTE_START_TIME, false, true); } public Date getRelativeStartTime() { - try { - return DateUtil.resolveRelativeDate(getProperties().get(MetastoreConstants.FACT_RELATIVE_START_TIME), now()); - } catch (Exception e) { - return new Date(Long.MIN_VALUE); - } + return getDateFromProperty(MetastoreConstants.FACT_RELATIVE_START_TIME, true, true); } public Date getStartTime() { @@ -342,19 +353,11 @@ public class CubeFactTable extends AbstractCubeTable { } public Date getAbsoluteEndTime() { - try { - return DateUtil.resolveAbsoluteDate(getProperties().get(MetastoreConstants.FACT_ABSOLUTE_END_TIME)); - } catch (Exception e) { - return new Date(Long.MAX_VALUE); - } + return getDateFromProperty(MetastoreConstants.FACT_ABSOLUTE_END_TIME, false, false); } public Date getRelativeEndTime() { - try { - return DateUtil.resolveRelativeDate(getProperties().get(MetastoreConstants.FACT_RELATIVE_END_TIME), now()); - } catch (Exception e) { - return new Date(Long.MAX_VALUE); - } + return getDateFromProperty(MetastoreConstants.FACT_RELATIVE_END_TIME, true, false); } public Date getEndTime() { http://git-wip-us.apache.org/repos/asf/lens/blob/c73d5844/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java b/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java index b76c567..b82cd95 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/metadata/DateUtil.java @@ -54,7 +54,8 @@ public final class DateUtil { * <NUM>UNIT or Hardcoded dates in DD-MM-YYYY hh:mm:ss,sss */ public static final String UNIT; - + public static final Date MAX_DATE = new Date(Long.MAX_VALUE); + public static final Date MIN_DATE = new Date(Long.MIN_VALUE); static { StringBuilder sb = new StringBuilder(); String sep = ""; http://git-wip-us.apache.org/repos/asf/lens/blob/c73d5844/lens-cube/src/test/java/org/apache/lens/cube/metadata/CubeFactTableTest.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/test/java/org/apache/lens/cube/metadata/CubeFactTableTest.java b/lens-cube/src/test/java/org/apache/lens/cube/metadata/CubeFactTableTest.java index 25eaaef..0935509 100644 --- a/lens-cube/src/test/java/org/apache/lens/cube/metadata/CubeFactTableTest.java +++ b/lens-cube/src/test/java/org/apache/lens/cube/metadata/CubeFactTableTest.java @@ -18,6 +18,8 @@ */ package org.apache.lens.cube.metadata; +import static org.mockito.Matchers.anyBoolean; +import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.testng.Assert.assertEquals; @@ -66,6 +68,8 @@ public class CubeFactTableTest { when(cubeFactTable.getProperties()).thenReturn(properties); + when(cubeFactTable.getDateFromProperty(anyString(), anyBoolean(), anyBoolean())).thenCallRealMethod(); + when(cubeFactTable.getRelativeStartTime()).thenCallRealMethod(); when(cubeFactTable.getAbsoluteStartTime()).thenCallRealMethod();