private static SearchQueryBuilder basicA(final BenchmarkSchemaInfo basicSchema) { final QuerySegmentSpec intervalSpec = new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval())); return Druids.newSearchQueryBuilder() .dataSource("blah") .granularity(Granularities.ALL) .intervals(intervalSpec) .query("123"); }
private Druids.SearchQueryBuilder testBuilder() { return Druids.newSearchQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnIntervalSpec); }
@Test public void testQuerySerialization() throws IOException { Query query = Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("a") .build(); String json = jsonMapper.writeValueAsString(query); Query serdeQuery = jsonMapper.readValue(json, Query.class); Assert.assertEquals(query, serdeQuery); }
@Test public void testFragmentSearch() { SearchQuery searchQuery = Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query(new FragmentSearchQuerySpec(Arrays.asList("auto", "ve"))) .build(); List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "automotive", 93)); checkSearchQuery(searchQuery, expectedHits); }
@Test public void testSearch() { SearchQuery searchQuery = Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("a") .build(); List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "automotive", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "mezzanine", 279)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "travel", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "health", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "entertainment", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.marketDimension, "total_market", 186)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.placementishDimension, "a", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.partialNullDimension, "value", 186)); checkSearchQuery(searchQuery, expectedHits); }
private SearchQuery makeSearchQuery() { return Druids.newSearchQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnInterval) .query("a") .build(); }
@Test public void testSearchSameValueInMultiDims() { SearchQuery searchQuery = Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .dimensions( Arrays.asList( QueryRunnerTestHelper.placementDimension, QueryRunnerTestHelper.placementishDimension ) ) .query("e") .build(); List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(QueryRunnerTestHelper.placementDimension, "preferred", 1209)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.placementishDimension, "e", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.placementishDimension, "preferred", 1209)); checkSearchQuery(searchQuery, expectedHits); }
@Test public void testSearchWithNumericSort() { SearchQuery searchQuery = Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("a") .sortSpec(new SearchSortSpec(StringComparators.NUMERIC)) .build(); List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(QueryRunnerTestHelper.placementishDimension, "a", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "automotive", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "entertainment", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "health", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "mezzanine", 279)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.marketDimension, "total_market", 186)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "travel", 93)); expectedHits.add(new SearchHit(QueryRunnerTestHelper.partialNullDimension, "value", 186)); checkSearchQuery(searchQuery, expectedHits); }
@Test public void testSearchWithEmptyResults() { List<SearchHit> expectedHits = new ArrayList<>(); checkSearchQuery( Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("abcd123") .build(), expectedHits ); }
@Test public void testSearchWithDimensionProvider() { List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(QueryRunnerTestHelper.marketDimension, "total_market", 186)); checkSearchQuery( Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .dimensions("market") .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("a") .build(), expectedHits ); }
@Test public void testSearchWithNotExistedDimension() { SearchQuery searchQuery = Druids.newSearchQueryBuilder() .dimensions( new DefaultDimensionSpec("asdf", "asdf") ) .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .build(); List<SearchHit> noHit = new ArrayList<>(); checkSearchQuery(searchQuery, noHit); }
@Test public void testSearchNonExistingDimension() { List<SearchHit> expectedHits = new ArrayList<>(); checkSearchQuery( Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .dimensions("does_not_exist") .query("a") .build(), expectedHits ); }
private void testFullOnSearch(QueryRunner runner, List<Result<SearchResultValue>> expectedResults, String failMsg) { SearchQuery query = Druids.newSearchQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnInterval) .query("a") .build(); failMsg += " search "; HashMap<String, Object> context = new HashMap<>(); Iterable<Result<SearchResultValue>> actualResults = runner.run(QueryPlus.wrap(query), context).toList(); TestHelper.assertExpectedResults(expectedResults, actualResults, failMsg); }
@Test public void testSearchWithSingleFilter2() { List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(QueryRunnerTestHelper.marketDimension, "total_market", 186)); checkSearchQuery( Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters(QueryRunnerTestHelper.marketDimension, "total_market") .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .dimensions(QueryRunnerTestHelper.marketDimension) .query("a") .build(), expectedHits ); }
@Test public void testSearchOnLongColumn() { SearchQuery searchQuery = Druids.newSearchQueryBuilder() .dimensions( new DefaultDimensionSpec( ColumnHolder.TIME_COLUMN_NAME, ColumnHolder.TIME_COLUMN_NAME, ValueType.LONG ) ) .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("1297123200000") .build(); List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(ColumnHolder.TIME_COLUMN_NAME, "1297123200000", 13)); checkSearchQuery(searchQuery, expectedHits); }
private void testFilteredSearch(QueryRunner runner, List<Result<SearchResultValue>> expectedResults, String failMsg) { SearchQuery query = Druids.newSearchQueryBuilder() .dataSource(dataSource) .granularity(allGran) .filters(marketDimension, "spot") .intervals(fullOnInterval) .query("a") .build(); failMsg += " filtered search "; HashMap<String, Object> context = new HashMap<>(); Iterable<Result<SearchResultValue>> actualResults = runner.run(QueryPlus.wrap(query), context).toList(); TestHelper.assertExpectedResults(expectedResults, actualResults, failMsg); }
private SearchQuery makeFilteredSearchQuery() { return Druids.newSearchQueryBuilder() .dataSource(dataSource) .filters(new NotDimFilter(new SelectorDimFilter(marketDimension, "spot", null))) .granularity(allGran) .intervals(fullOnInterval) .query("a") .build(); } }
@Test public void testSearchWithMultiOrFilter() { List<SearchHit> expectedHits = new ArrayList<>(); expectedHits.add(new SearchHit(QueryRunnerTestHelper.qualityDimension, "automotive", 93)); DimFilter filter = new OrDimFilter( new SelectorDimFilter(QueryRunnerTestHelper.qualityDimension, "total_market", null), new SelectorDimFilter(QueryRunnerTestHelper.qualityDimension, "automotive", null) ); checkSearchQuery( Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .dimensions(QueryRunnerTestHelper.qualityDimension) .filters(filter) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("a") .build(), expectedHits ); }
@Test public void testSearchWithFilterEmptyResults() { List<SearchHit> expectedHits = new ArrayList<>(); DimFilter filter = new AndDimFilter( new SelectorDimFilter(QueryRunnerTestHelper.marketDimension, "total_market", null), new SelectorDimFilter(QueryRunnerTestHelper.qualityDimension, "automotive", null) ); checkSearchQuery( Druids.newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters(filter) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .query("a") .build(), expectedHits ); }
@Test public void testDefaultSearchQueryMetricsMetricNamesAndUnits() { SearchQuery query = Druids .newSearchQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .build(); CachingEmitter cachingEmitter = new CachingEmitter(); ServiceEmitter serviceEmitter = new ServiceEmitter("", "", cachingEmitter); SearchQueryMetrics queryMetrics = DefaultSearchQueryMetricsFactory.instance().makeMetrics(query); DefaultQueryMetricsTest.testQueryMetricsDefaultMetricNamesAndUnits(cachingEmitter, serviceEmitter, queryMetrics); } }