@Test public void testChunking() { Query query = queryBuilder.intervals("2015-01-01T00:00:00.000/2015-01-11T00:00:00.000").context(ImmutableMap.of("chunkPeriod", "P1D")).build(); executors.execute(EasyMock.anyObject(Runnable.class)); EasyMock.expectLastCall().times(10); EasyMock.replay(executors); EasyMock.replay(toolChest); QueryRunner runner = decorator.decorate(baseRunner, toolChest); runner.run(QueryPlus.wrap(query), Collections.EMPTY_MAP); EasyMock.verify(executors); }
@Test public void testDefaultNoChunking() { QueryPlus queryPlus = QueryPlus.wrap(queryBuilder.intervals("2014/2016").build()); EasyMock.expect(baseRunner.run(queryPlus, Collections.EMPTY_MAP)).andReturn(Sequences.empty()); EasyMock.replay(baseRunner); QueryRunner runner = decorator.decorate(baseRunner, toolChest); runner.run(queryPlus, Collections.EMPTY_MAP); EasyMock.verify(baseRunner); }
@Test public void testChunkingOnMonths() { Query query = queryBuilder.intervals("2015-01-01T00:00:00.000/2015-02-11T00:00:00.000").context(ImmutableMap.of("chunkPeriod", "P1M")).build(); executors.execute(EasyMock.anyObject(Runnable.class)); EasyMock.expectLastCall().times(2); EasyMock.replay(executors); EasyMock.replay(toolChest); QueryRunner runner = decorator.decorate(baseRunner, toolChest); runner.run(QueryPlus.wrap(query), Collections.EMPTY_MAP); EasyMock.verify(executors); } }
@Test public void testFilterOnCurrentTimestampOnView() throws Exception { testQuery( "SELECT * FROM bview", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Intervals.of("2000-01-02/2002"))) .granularity(Granularities.ALL) .aggregators(AGGS(new CountAggregatorFactory("a0"))) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of( new Object[]{5L} ) ); }
@Test public void testCountStarWithSinglePointInTime() throws Exception { testQuery( "SELECT COUNT(*) FROM druid.foo WHERE __time = TIMESTAMP '2000-01-01 00:00:00'", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Intervals.of("2000-01-01/2000-01-01T00:00:00.001"))) .granularity(Granularities.ALL) .aggregators(AGGS(new CountAggregatorFactory("a0"))) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of( new Object[]{1L} ) ); }
@Test public void testCountNonNullColumn() throws Exception { testQuery( "SELECT COUNT(cnt) FROM druid.foo", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.ALL) .aggregators(AGGS(new CountAggregatorFactory("a0"))) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of( new Object[]{6L} ) ); }
@Test public void testCountStar() throws Exception { testQuery( "SELECT COUNT(*) FROM druid.foo", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.ALL) .aggregators(AGGS(new CountAggregatorFactory("a0"))) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of( new Object[]{6L} ) ); }
@Test public void testUnqualifiedTableName() throws Exception { testQuery( "SELECT COUNT(*) FROM foo", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.ALL) .aggregators(AGGS(new CountAggregatorFactory("a0"))) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of( new Object[]{6L} ) ); }
@Test public void testFilterOnTimeFloorMisaligned() throws Exception { testQuery( "SELECT COUNT(*) FROM druid.foo " + "WHERE floor(__time TO month) = TIMESTAMP '2000-01-01 00:00:01'", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS()) .granularity(Granularities.ALL) .aggregators(AGGS(new CountAggregatorFactory("a0"))) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of() ); }
@Test public void testTimeseriesWithFilterOnNonExistentDimensionSkipBuckets() { TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .filters("bobby", "billy") .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .context(ImmutableMap.of("skipEmptyBuckets", "true")) .descending(descending) .build(); List<Result<TimeseriesResultValue>> expectedResults = Collections.emptyList(); Iterable<Result<TimeseriesResultValue>> results = runner.run(QueryPlus.wrap(query), new HashMap<String, Object>()).toList(); assertExpectedResults(expectedResults, results); }
@Test public void testQuerySerialization() throws IOException { Query query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .aggregators(QueryRunnerTestHelper.rowsCount, QueryRunnerTestHelper.indexDoubleSum) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); String json = jsonMapper.writeValueAsString(query); Query serdeQuery = jsonMapper.readValue(json, Query.class); Assert.assertEquals(query, serdeQuery); }
@Test public void testBasicSelect2() { Pair<String, Server> p = brokerSelector.select( Druids.newTimeseriesQueryBuilder() .dataSource("test") .granularity("all") .aggregators(Collections.singletonList(new CountAggregatorFactory("rows"))) .intervals(Collections.singletonList(Intervals.of("2013-08-31/2013-09-01"))) .build() ); Assert.assertEquals("hotBroker", p.lhs); Assert.assertEquals("hotHost:8080", p.rhs.getHost()); }
public TimeseriesQuery withDimFilter(DimFilter dimFilter) { return Druids.TimeseriesQueryBuilder.copy(this).filters(dimFilter).build(); }
public TimeseriesQuery withPostAggregatorSpecs(final List<PostAggregator> postAggregatorSpecs) { return Druids.TimeseriesQueryBuilder.copy(this).postAggregators(postAggregatorSpecs).build(); }
@Test public void testSelectMatchesNothing() { String brokerName = (String) brokerSelector.select( Druids.newTimeseriesQueryBuilder() .dataSource("test") .granularity("all") .aggregators(Collections.singletonList(new CountAggregatorFactory("rows"))) .intervals(Collections.singletonList(Intervals.of("2010-08-31/2010-09-01"))) .build() ).lhs; Assert.assertEquals("hotBroker", brokerName); }
@Override public TimeseriesQuery withQuerySegmentSpec(QuerySegmentSpec querySegmentSpec) { return Druids.TimeseriesQueryBuilder.copy(this).intervals(querySegmentSpec).build(); }
@Override public Query<Result<TimeseriesResultValue>> withDataSource(DataSource dataSource) { return Druids.TimeseriesQueryBuilder.copy(this).dataSource(dataSource).build(); }
@Override public TimeseriesQuery withOverriddenContext(Map<String, Object> contextOverrides) { Map<String, Object> newContext = computeOverriddenContext(getContext(), contextOverrides); return Druids.TimeseriesQueryBuilder.copy(this).context(newContext).build(); }
@Override public Query<Result<TimeseriesResultValue>> optimizeForSegment(PerSegmentQueryOptimizationContext optimizationContext) { return Druids.TimeseriesQueryBuilder.copy(this).aggregators(optimizeAggs(optimizationContext)).build(); }
public AsyncQueryRunnerTest() { this.executor = Executors.newSingleThreadExecutor(); query = Druids.newTimeseriesQueryBuilder() .dataSource("test") .intervals("2014/2015") .aggregators(Collections.singletonList(new CountAggregatorFactory("count"))) .build(); }