@Override public GranularitySpec withIntervals(List<Interval> inputIntervals) { return new ArbitraryGranularitySpec(queryGranularity, rollup, inputIntervals); } }
@Override public Optional<Interval> bucketInterval(DateTime dt) { if (wrappedSpec == null) { return Optional.absent(); } else { return wrappedSpec.bucketInterval(dt); } }
@Override public Optional<SortedSet<Interval>> bucketIntervals() { if (wrappedSpec == null) { return Optional.absent(); } else { return wrappedSpec.bucketIntervals(); } }
@Override public int hashCode() { int result = segmentGranularity.hashCode(); result = 31 * result + queryGranularity.hashCode(); result = 31 * result + rollup.hashCode(); result = 31 * result + (inputIntervals != null ? inputIntervals.hashCode() : 0); result = 31 * result + (wrappedSpec != null ? wrappedSpec.hashCode() : 0); return result; }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } UniformGranularitySpec that = (UniformGranularitySpec) o; if (!segmentGranularity.equals(that.segmentGranularity)) { return false; } if (!queryGranularity.equals(that.queryGranularity)) { return false; } if (!rollup.equals(that.rollup)) { return false; } if (inputIntervals != null ? !inputIntervals.equals(that.inputIntervals) : that.inputIntervals != null) { return false; } return !(wrappedSpec != null ? !wrappedSpec.equals(that.wrappedSpec) : that.wrappedSpec != null); }
@Override public int hashCode() { int result = segmentGranularity.hashCode(); result = 31 * result + queryGranularity.hashCode(); result = 31 * result + rollup.hashCode(); result = 31 * result + (inputIntervals != null ? inputIntervals.hashCode() : 0); result = 31 * result + (wrappedSpec != null ? wrappedSpec.hashCode() : 0); return result; }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } UniformGranularitySpec that = (UniformGranularitySpec) o; if (segmentGranularity != that.segmentGranularity) { return false; } if (!queryGranularity.equals(that.queryGranularity)) { return false; } if (!rollup.equals(that.rollup)) { return false; } if (inputIntervals != null ? !inputIntervals.equals(that.inputIntervals) : that.inputIntervals != null) { return false; } return !(wrappedSpec != null ? !wrappedSpec.equals(that.wrappedSpec) : that.wrappedSpec != null); }
@JsonCreator public UniformGranularitySpec( @JsonProperty("segmentGranularity") Granularity segmentGranularity, @JsonProperty("queryGranularity") Granularity queryGranularity, @JsonProperty("rollup") Boolean rollup, @JsonProperty("intervals") List<Interval> inputIntervals ) { this.queryGranularity = queryGranularity == null ? DEFAULT_QUERY_GRANULARITY : queryGranularity; this.rollup = rollup == null ? Boolean.TRUE : rollup; this.segmentGranularity = segmentGranularity == null ? DEFAULT_SEGMENT_GRANULARITY : segmentGranularity; if (inputIntervals != null) { List<Interval> granularIntervals = new ArrayList<>(); for (Interval inputInterval : inputIntervals) { Iterables.addAll(granularIntervals, this.segmentGranularity.getIterable(inputInterval)); } this.inputIntervals = ImmutableList.copyOf(inputIntervals); this.wrappedSpec = new ArbitraryGranularitySpec(queryGranularity, rollup, granularIntervals); } else { this.inputIntervals = null; this.wrappedSpec = null; } }
@Override public Optional<SortedSet<Interval>> bucketIntervals() { if (wrappedSpec == null) { return Optional.absent(); } else { return wrappedSpec.bucketIntervals(); } }
@Override public Optional<Interval> bucketInterval(DateTime dt) { if (wrappedSpec == null) { return Optional.absent(); } else { return wrappedSpec.bucketInterval(dt); } }
@Test public void testOverlapViolationSameStartInstant() { List<Interval> intervals = Lists.newArrayList( Intervals.of("2012-01-03T00Z/2012-01-04T00Z"), Intervals.of("2012-01-03T00Z/2012-01-05T00Z") ); boolean thrown = false; try { final GranularitySpec spec = new ArbitraryGranularitySpec(Granularities.NONE, intervals); } catch (IllegalArgumentException e) { thrown = true; } Assert.assertTrue("Exception thrown", thrown); }
tmpDir, null, new ArbitraryGranularitySpec( Granularities.MINUTE, Collections.singletonList(Intervals.of("2014-01-01/2014-01-02"))
@Test public void testOverlapViolation() { List<Interval> intervals = Lists.newArrayList( Intervals.of("2012-01-02T00Z/2012-01-04T00Z"), Intervals.of("2012-01-07T00Z/2012-01-08T00Z"), Intervals.of("2012-01-01T00Z/2012-01-03T00Z") ); boolean thrown = false; try { final GranularitySpec spec = new ArbitraryGranularitySpec(Granularities.NONE, intervals); } catch (IllegalArgumentException e) { thrown = true; } Assert.assertTrue("Exception thrown", thrown); }
@Test public void testJson() { final GranularitySpec spec = new ArbitraryGranularitySpec(Granularities.NONE, Lists.newArrayList( Intervals.of("2012-01-08T00Z/2012-01-11T00Z"), Intervals.of("2012-02-01T00Z/2012-03-01T00Z"), Intervals.of("2012-01-07T00Z/2012-01-08T00Z"), Intervals.of("2012-01-03T00Z/2012-01-04T00Z"), Intervals.of("2012-01-01T00Z/2012-01-03T00Z") )); try { final GranularitySpec rtSpec = jsonMapper.readValue(jsonMapper.writeValueAsString(spec), GranularitySpec.class); Assert.assertEquals("Round-trip", spec.bucketIntervals(), rtSpec.bucketIntervals()); } catch (Exception e) { throw Throwables.propagate(e); } } }
ArbitraryGranularitySpec granularitySpec = new ArbitraryGranularitySpec( Granularities.NONE, ImmutableList.of(interval)
@Test public void testRollupSetting() { List<Interval> intervals = Lists.newArrayList( Intervals.of("2012-01-08T00Z/2012-01-11T00Z"), Intervals.of("2012-02-01T00Z/2012-03-01T00Z"), Intervals.of("2012-01-07T00Z/2012-01-08T00Z"), Intervals.of("2012-01-03T00Z/2012-01-04T00Z"), Intervals.of("2012-01-01T00Z/2012-01-03T00Z") ); final GranularitySpec spec = new ArbitraryGranularitySpec(Granularities.NONE, false, intervals); Assert.assertFalse(spec.isRollup()); }
@Test public void testDefaultQueryGranularity() { final GranularitySpec spec = new ArbitraryGranularitySpec( null, Lists.newArrayList( Intervals.of("2012-01-08T00Z/2012-01-11T00Z"), Intervals.of("2012-02-01T00Z/2012-03-01T00Z"), Intervals.of("2012-01-07T00Z/2012-01-08T00Z"), Intervals.of("2012-01-03T00Z/2012-01-04T00Z"), Intervals.of("2012-01-01T00Z/2012-01-03T00Z") )); Assert.assertNotNull(spec.getQueryGranularity()); }
new DoubleSumAggregatorFactory("metric2", "col2"), }, new ArbitraryGranularitySpec(Granularities.DAY, ImmutableList.of(Intervals.of("2014/2015"))), null, jsonMapper
new DoubleSumAggregatorFactory("metric2", "col2"), }, new ArbitraryGranularitySpec(Granularities.DAY, ImmutableList.of(Intervals.of("2014/2015"))), null, jsonMapper
new DoubleSumAggregatorFactory("metric1", "col3"), }, new ArbitraryGranularitySpec(Granularities.DAY, ImmutableList.of(Intervals.of("2014/2015"))), null, jsonMapper