use of com.jayway.jsonpath.DocumentContext in project graylog2-server by Graylog2.
the class ESPivotTest method mixedPivotsShouldBeNested.
@Test
public void mixedPivotsShouldBeNested() {
final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
final ESPivotBucketSpecHandler<? extends BucketSpec, ? extends Aggregation> valuesBucketHandler = mock(ESValuesHandler.class);
mockBucketSpecGeneratesComparableString(valuesBucketHandler);
final ESPivotBucketSpecHandler<? extends BucketSpec, ? extends Aggregation> timeBucketHandler = mock(ESTimeHandler.class);
mockBucketSpecGeneratesComparableString(timeBucketHandler);
bucketHandlers.put(Values.NAME, valuesBucketHandler);
bucketHandlers.put(Time.NAME, timeBucketHandler);
when(queryContext.searchSourceBuilder(pivot)).thenReturn(searchSourceBuilder);
when(queryContext.nextName()).thenReturn("time-agg", "values-agg");
final Time time = Time.builder().field("timestamp").interval(AutoInterval.create()).build();
final Values values = Values.builder().field("action").limit(10).build();
when(pivot.rowGroups()).thenReturn(Collections.singletonList(time));
when(pivot.columnGroups()).thenReturn(Collections.singletonList(values));
this.esPivot.doGenerateQueryPart(job, query, pivot, queryContext);
verify(valuesBucketHandler, times(1)).createAggregation(eq("values-agg"), eq(pivot), eq(values), eq(this.esPivot), eq(queryContext), eq(query));
verify(timeBucketHandler, times(1)).createAggregation(eq("time-agg"), eq(pivot), eq(time), eq(this.esPivot), eq(queryContext), eq(query));
final DocumentContext context = JsonPath.parse(searchSourceBuilder.toString());
extractAggregation(context, "time-agg").isEqualTo("Time{type=time, field=timestamp, interval=AutoInterval{type=auto, scaling=1.0}}");
extractAggregation(context, "time-agg.values-agg").isEqualTo("Values{type=values, field=action, limit=10}");
}
use of com.jayway.jsonpath.DocumentContext in project graylog2-server by Graylog2.
the class ESPivotTest method rowPivotsShouldBeNested.
@Test
public void rowPivotsShouldBeNested() {
final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
final ESPivotBucketSpecHandler<? extends BucketSpec, ? extends Aggregation> valuesBucketHandler = mock(ESValuesHandler.class);
mockBucketSpecGeneratesComparableString(valuesBucketHandler);
final ESPivotBucketSpecHandler<? extends BucketSpec, ? extends Aggregation> timeBucketHandler = mock(ESTimeHandler.class);
mockBucketSpecGeneratesComparableString(timeBucketHandler);
bucketHandlers.put(Values.NAME, valuesBucketHandler);
bucketHandlers.put(Time.NAME, timeBucketHandler);
when(queryContext.searchSourceBuilder(pivot)).thenReturn(searchSourceBuilder);
when(queryContext.nextName()).thenReturn("time-agg", "values-agg");
final Time time = Time.builder().field("timestamp").interval(AutoInterval.create()).build();
final Values values = Values.builder().field("action").limit(10).build();
when(pivot.rowGroups()).thenReturn(ImmutableList.of(time, values));
this.esPivot.doGenerateQueryPart(job, query, pivot, queryContext);
verify(valuesBucketHandler, times(1)).createAggregation(eq("values-agg"), eq(pivot), eq(values), eq(this.esPivot), eq(queryContext), eq(query));
verify(timeBucketHandler, times(1)).createAggregation(eq("time-agg"), eq(pivot), eq(time), eq(this.esPivot), eq(queryContext), eq(query));
final DocumentContext context = JsonPath.parse(searchSourceBuilder.toString());
extractAggregation(context, "time-agg").isEqualTo("Time{type=time, field=timestamp, interval=AutoInterval{type=auto, scaling=1.0}}");
extractAggregation(context, "time-agg.values-agg").isEqualTo("Values{type=values, field=action, limit=10}");
}
use of com.jayway.jsonpath.DocumentContext in project graylog2-server by Graylog2.
the class ESPivotTest method mixedPivotsAndSeriesShouldBeNested.
@Test
public void mixedPivotsAndSeriesShouldBeNested() {
final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
final ESPivotBucketSpecHandler<? extends BucketSpec, ? extends Aggregation> valuesBucketHandler = mock(ESValuesHandler.class);
mockBucketSpecGeneratesComparableString(valuesBucketHandler);
final ESPivotBucketSpecHandler<? extends BucketSpec, ? extends Aggregation> timeBucketHandler = mock(ESTimeHandler.class);
mockBucketSpecGeneratesComparableString(timeBucketHandler);
final ESPivotSeriesSpecHandler<? extends SeriesSpec, ? extends Aggregation> countHandler = mock(ESCountHandler.class);
mockSeriesSpecGeneratesComparableString(countHandler);
bucketHandlers.put(Values.NAME, valuesBucketHandler);
bucketHandlers.put(Time.NAME, timeBucketHandler);
seriesHandlers.put(Count.NAME, countHandler);
when(queryContext.searchSourceBuilder(pivot)).thenReturn(searchSourceBuilder);
when(queryContext.nextName()).thenReturn("rowPivot1", "rowPivot2", "columnPivot1", "columnPivot2");
final BucketSpec rowPivot1 = Time.builder().field("timestamp").interval(AutoInterval.create()).build();
final BucketSpec rowPivot2 = Values.builder().field("http_method").limit(10).build();
final BucketSpec columnPivot1 = Values.builder().field("controller").limit(10).build();
final BucketSpec columnPivot2 = Values.builder().field("action").limit(10).build();
final Count count = Count.builder().build();
when(pivot.rowGroups()).thenReturn(ImmutableList.of(rowPivot1, rowPivot2));
when(pivot.columnGroups()).thenReturn(ImmutableList.of(columnPivot1, columnPivot2));
when(pivot.series()).thenReturn(Collections.singletonList(count));
when(pivot.rollup()).thenReturn(false);
when(queryContext.seriesName(any(), any())).thenCallRealMethod();
this.esPivot.doGenerateQueryPart(job, query, pivot, queryContext);
verify(timeBucketHandler).createAggregation(eq("rowPivot1"), eq(pivot), eq(rowPivot1), eq(this.esPivot), eq(queryContext), eq(query));
verify(valuesBucketHandler).createAggregation(eq("rowPivot2"), eq(pivot), eq(rowPivot2), eq(this.esPivot), eq(queryContext), eq(query));
verify(valuesBucketHandler).createAggregation(eq("columnPivot1"), eq(pivot), eq(columnPivot1), eq(this.esPivot), eq(queryContext), eq(query));
verify(valuesBucketHandler).createAggregation(eq("columnPivot2"), eq(pivot), eq(columnPivot2), eq(this.esPivot), eq(queryContext), eq(query));
final DocumentContext context = JsonPath.parse(searchSourceBuilder.toString());
extractAggregation(context, "rowPivot1").isEqualTo("Time{type=time, field=timestamp, interval=AutoInterval{type=auto, scaling=1.0}}");
extractAggregation(context, "rowPivot1.rowPivot2").isEqualTo("Values{type=values, field=http_method, limit=10}");
extractAggregation(context, "rowPivot1.rowPivot2.columnPivot1").isEqualTo("Values{type=values, field=controller, limit=10}");
extractAggregation(context, "rowPivot1.rowPivot2.columnPivot1.columnPivot2").isEqualTo("Values{type=values, field=action, limit=10}");
extractAggregation(context, "rowPivot1.rowPivot2.dummypivot-series-count()").isEqualTo("Count{type=count, id=count(), field=null}");
extractAggregation(context, "rowPivot1.rowPivot2.columnPivot1.columnPivot2.dummypivot-series-count()").isEqualTo("Count{type=count, id=count(), field=null}");
}
use of com.jayway.jsonpath.DocumentContext in project graylog2-server by Graylog2.
the class ElasticsearchBackendQueryStringDecoratorsTest method generateAppliesQueryStringDecoratorsOnSearchTypes.
@Test
void generateAppliesQueryStringDecoratorsOnSearchTypes() throws Exception {
final Query query = mock(Query.class);
final SearchJob searchJob = searchJobWithSearchTypeQueryString(query);
final DocumentContext request = generateJsonRequest(query, searchJob);
assertThat(request).jsonPathAsString(PATH_TO_QUERY_STRING).isEqualTo("decorated");
}
use of com.jayway.jsonpath.DocumentContext in project graylog2-server by Graylog2.
the class ESMessageListTest method passesNullForUnmappedTypeIfTypeIsNotFound.
@Test
public void passesNullForUnmappedTypeIfTypeIsNotFound() {
final MessageList messageList = someMessageListWithSorting("stream1", "somefield");
final ESGeneratedQueryContext context = mockQueryContext(messageList);
when(context.fieldType(Collections.singleton("stream1"), "somefield")).thenReturn(Optional.empty());
final ESGeneratedQueryContext queryContext = generateQueryPartWithContextFor(messageList, true, Collections.emptySet(), context);
final DocumentContext doc = JsonPath.parse(queryContext.searchSourceBuilder(messageList).toString());
assertThat(doc.read("$.sort[0].somefield", Map.class)).doesNotContainKey("unmapped_type");
}
Aggregations