Search in sources :

Example 21 with Result

use of io.druid.query.Result in project druid by druid-io.

the class SelectBinaryFnTest method testColumnMerge.

@Test
public void testColumnMerge() throws Exception {
    SelectBinaryFn binaryFn = new SelectBinaryFn(Granularities.ALL, new PagingSpec(null, 5), false);
    Result<SelectResultValue> res1 = new Result<>(new DateTime("2013-01-01"), new SelectResultValue(ImmutableMap.<String, Integer>of(), Sets.newHashSet("first", "second", "fourth"), Sets.newHashSet("eight", "nineth"), Lists.<EventHolder>newArrayList(new EventHolder(segmentId1, 0, ImmutableMap.<String, Object>of(EventHolder.timestampKey, new DateTime("2013-01-01T00"), "dim", "first")))));
    Result<SelectResultValue> res2 = new Result<>(new DateTime("2013-01-01"), new SelectResultValue(ImmutableMap.<String, Integer>of(), Sets.newHashSet("third", "second", "fifth"), Sets.newHashSet("seventh"), Lists.<EventHolder>newArrayList(new EventHolder(segmentId2, 0, ImmutableMap.<String, Object>of(EventHolder.timestampKey, new DateTime("2013-01-01T00"), "dim", "second")))));
    Result<SelectResultValue> merged = binaryFn.apply(res1, res2);
    Set<String> exDimensions = Sets.newHashSet("first", "second", "fourth", "third", "fifth");
    Set<String> exMetrics = Sets.newHashSet("eight", "nineth", "seventh");
    Set<String> acDimensions = merged.getValue().getDimensions();
    Set<String> acMetrics = merged.getValue().getMetrics();
    Assert.assertEquals(exDimensions, acDimensions);
    Assert.assertEquals(exMetrics, acMetrics);
}
Also used : DateTime(org.joda.time.DateTime) Result(io.druid.query.Result) Test(org.junit.Test)

Example 22 with Result

use of io.druid.query.Result in project druid by druid-io.

the class SearchBinaryFnTest method testAlphanumericMerge.

@Test
public void testAlphanumericMerge() {
    SearchSortSpec searchSortSpec = new SearchSortSpec(StringComparators.ALPHANUMERIC);
    Comparator<SearchHit> c = searchSortSpec.getComparator();
    Result<SearchResultValue> r1 = new Result<SearchResultValue>(currTime, new SearchResultValue(toHits(c, "blah:a100", "blah:a9", "alah:a100")));
    Result<SearchResultValue> r2 = new Result<SearchResultValue>(currTime, new SearchResultValue(toHits(c, "blah:b0", "alah:c3")));
    Result<SearchResultValue> expected = new Result<SearchResultValue>(currTime, new SearchResultValue(toHits(c, "blah:a9", "alah:a100", "blah:a100", "blah:b0", "alah:c3")));
    Result<SearchResultValue> actual = new SearchBinaryFn(searchSortSpec, Granularities.ALL, Integer.MAX_VALUE).apply(r1, r2);
    Assert.assertEquals(expected.getTimestamp(), actual.getTimestamp());
    assertSearchMergeResult(expected.getValue(), actual.getValue());
}
Also used : SearchHit(io.druid.query.search.search.SearchHit) SearchSortSpec(io.druid.query.search.search.SearchSortSpec) Result(io.druid.query.Result) Test(org.junit.Test)

Example 23 with Result

use of io.druid.query.Result in project druid by druid-io.

the class SearchBinaryFnTest method testMergeShiftedTimestamp.

@Test
public void testMergeShiftedTimestamp() {
    Result<SearchResultValue> r1 = new Result<SearchResultValue>(currTime, new SearchResultValue(ImmutableList.<SearchHit>of(new SearchHit("blah", "foo"))));
    Result<SearchResultValue> r2 = new Result<SearchResultValue>(currTime.plusHours(2), new SearchResultValue(ImmutableList.<SearchHit>of(new SearchHit("blah2", "foo2"))));
    Result<SearchResultValue> expected = new Result<SearchResultValue>(currTime, new SearchResultValue(ImmutableList.<SearchHit>of(new SearchHit("blah", "foo"), new SearchHit("blah2", "foo2"))));
    Result<SearchResultValue> actual = new SearchBinaryFn(new SearchSortSpec(StringComparators.LEXICOGRAPHIC), Granularities.ALL, Integer.MAX_VALUE).apply(r1, r2);
    Assert.assertEquals(expected.getTimestamp(), actual.getTimestamp());
    assertSearchMergeResult(expected.getValue(), actual.getValue());
}
Also used : SearchHit(io.druid.query.search.search.SearchHit) SearchSortSpec(io.druid.query.search.search.SearchSortSpec) Result(io.druid.query.Result) Test(org.junit.Test)

Example 24 with Result

use of io.druid.query.Result in project druid by druid-io.

the class SearchBinaryFnTest method testStrlenMerge.

@Test
public void testStrlenMerge() {
    SearchSortSpec searchSortSpec = new SearchSortSpec(StringComparators.STRLEN);
    Comparator<SearchHit> c = searchSortSpec.getComparator();
    Result<SearchResultValue> r1 = new Result<SearchResultValue>(currTime, new SearchResultValue(toHits(c, "blah:thisislong")));
    Result<SearchResultValue> r2 = new Result<SearchResultValue>(currTime, new SearchResultValue(toHits(c, "blah:short")));
    Result<SearchResultValue> expected = new Result<SearchResultValue>(currTime, new SearchResultValue(toHits(c, "blah:short", "blah:thisislong")));
    Result<SearchResultValue> actual = new SearchBinaryFn(searchSortSpec, Granularities.ALL, Integer.MAX_VALUE).apply(r1, r2);
    Assert.assertEquals(expected.getTimestamp(), actual.getTimestamp());
    assertSearchMergeResult(expected.getValue(), actual.getValue());
}
Also used : SearchHit(io.druid.query.search.search.SearchHit) SearchSortSpec(io.druid.query.search.search.SearchSortSpec) Result(io.druid.query.Result) Test(org.junit.Test)

Example 25 with Result

use of io.druid.query.Result in project druid by druid-io.

the class SearchQueryRunnerTest method checkSearchQuery.

private void checkSearchQuery(Query searchQuery, QueryRunner runner, List<SearchHit> expectedResults) {
    Iterable<Result<SearchResultValue>> results = Sequences.toList(runner.run(searchQuery, ImmutableMap.of()), Lists.<Result<SearchResultValue>>newArrayList());
    List<SearchHit> copy = Lists.newLinkedList(expectedResults);
    for (Result<SearchResultValue> result : results) {
        Assert.assertEquals(new DateTime("2011-01-12T00:00:00.000Z"), result.getTimestamp());
        Assert.assertTrue(result.getValue() instanceof Iterable);
        Iterable<SearchHit> resultValues = result.getValue();
        for (SearchHit resultValue : resultValues) {
            int index = copy.indexOf(resultValue);
            if (index < 0) {
                fail(expectedResults, results, "No result found containing " + resultValue.getDimension() + " and " + resultValue.getValue());
            }
            SearchHit expected = copy.remove(index);
            if (!resultValue.toString().equals(expected.toString())) {
                fail(expectedResults, results, "Invalid count for " + resultValue + ".. which was expected to be " + expected.getCount());
            }
        }
    }
    if (!copy.isEmpty()) {
        fail(expectedResults, results, "Some expected results are not shown: " + copy);
    }
}
Also used : SearchHit(io.druid.query.search.search.SearchHit) DateTime(org.joda.time.DateTime) Result(io.druid.query.Result)

Aggregations

Result (io.druid.query.Result)236 Test (org.junit.Test)164 DateTime (org.joda.time.DateTime)153 HashMap (java.util.HashMap)66 PostAggregator (io.druid.query.aggregation.PostAggregator)51 QueryRunner (io.druid.query.QueryRunner)49 Interval (org.joda.time.Interval)44 TimeseriesResultValue (io.druid.query.timeseries.TimeseriesResultValue)40 CountAggregatorFactory (io.druid.query.aggregation.CountAggregatorFactory)38 TimeseriesQuery (io.druid.query.timeseries.TimeseriesQuery)37 DoubleMaxAggregatorFactory (io.druid.query.aggregation.DoubleMaxAggregatorFactory)36 DoubleMinAggregatorFactory (io.druid.query.aggregation.DoubleMinAggregatorFactory)36 HyperUniqueFinalizingPostAggregator (io.druid.query.aggregation.hyperloglog.HyperUniqueFinalizingPostAggregator)35 LongSumAggregatorFactory (io.druid.query.aggregation.LongSumAggregatorFactory)34 AggregatorFactory (io.druid.query.aggregation.AggregatorFactory)31 ExtractionDimensionSpec (io.druid.query.dimension.ExtractionDimensionSpec)31 TopNResultValue (io.druid.query.topn.TopNResultValue)30 Map (java.util.Map)27 Benchmark (org.openjdk.jmh.annotations.Benchmark)27 BenchmarkMode (org.openjdk.jmh.annotations.BenchmarkMode)27