Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
import org.hypertrace.graphql.entity.schema.argument.EntityTypeStringArgument;
import org.hypertrace.graphql.metric.request.MetricAggregationRequest;
import org.hypertrace.graphql.metric.request.MetricRequest;
import org.hypertrace.graphql.metric.request.MetricRequestBuilder;
import org.hypertrace.graphql.metric.schema.argument.AggregatableOrderArgument;

@Slf4j
Expand All @@ -70,6 +71,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
private final GraphQlSelectionFinder selectionFinder;
private final ArgumentDeserializer argumentDeserializer;
private final ResultSetRequestBuilder resultSetRequestBuilder;
private final MetricRequestBuilder metricRequestBuilder;
private final FilterRequestBuilder filterRequestBuilder;
private final Scheduler boundedIoScheduler;
private final EntityLabelRequestBuilder entityLabelRequestBuilder;
Expand All @@ -80,6 +82,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
GraphQlSelectionFinder selectionFinder,
ArgumentDeserializer argumentDeserializer,
ResultSetRequestBuilder resultSetRequestBuilder,
MetricRequestBuilder metricRequestBuilder,
FilterRequestBuilder filterRequestBuilder,
@BoundedIoScheduler Scheduler boundedIoScheduler,
EntityLabelRequestBuilder entityLabelRequestBuilder) {
Expand All @@ -88,6 +91,7 @@ class DefaultEntityJoinerBuilder implements EntityJoinerBuilder {
this.selectionFinder = selectionFinder;
this.argumentDeserializer = argumentDeserializer;
this.resultSetRequestBuilder = resultSetRequestBuilder;
this.metricRequestBuilder = metricRequestBuilder;
this.filterRequestBuilder = filterRequestBuilder;
this.boundedIoScheduler = boundedIoScheduler;
this.entityLabelRequestBuilder = entityLabelRequestBuilder;
Expand Down Expand Up @@ -268,6 +272,8 @@ private Single<EntityRequest> buildEntityRequest(
String entityType,
int entityIdsToFilterSize,
List<AttributeAssociation<FilterArgument>> filterArguments) {
Collection<SelectedField> selections = this.entityFieldsByType.get(entityType);

return zip(
resultSetRequestBuilder.build(
context,
Expand All @@ -277,12 +283,14 @@ private Single<EntityRequest> buildEntityRequest(
timeRange,
List.<AttributeAssociation<AggregatableOrderArgument>>of(), // Order does not matter
filterArguments,
this.entityFieldsByType.get(entityType).stream(),
selections.stream(),
Optional.empty()),
metricRequestBuilder.build(context, entityType, selections.stream()),
entityLabelRequestBuilder.buildLabelRequestIfPresentInAnyEntity(
context, entityType, this.entityFieldsByType.get(entityType)),
(resultSetRequest, optionalLabelRequest) ->
new DefaultEntityRequest(entityType, resultSetRequest, optionalLabelRequest));
(resultSetRequest, metricRequestList, optionalLabelRequest) ->
new DefaultEntityRequest(
entityType, resultSetRequest, metricRequestList, optionalLabelRequest));
}

private Single<List<AttributeAssociation<FilterArgument>>> buildIdFilter(
Expand All @@ -297,7 +305,7 @@ private Single<List<AttributeAssociation<FilterArgument>>> buildIdFilter(
private static class DefaultEntityRequest implements EntityRequest {
String entityType;
ResultSetRequest<AggregatableOrderArgument> resultSetRequest;
List<MetricRequest> metricRequests = Collections.emptyList(); // Only support attributes for now
List<MetricRequest> metricRequests;
boolean fetchTotal = false; // Not needed for a single entity
EdgeSetGroupRequest incomingEdgeRequests = new EmptyEdgeSetGroupRequest();
EdgeSetGroupRequest outgoingEdgeRequests = new EmptyEdgeSetGroupRequest();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
import org.hypertrace.graphql.entity.schema.EntityType;
import org.hypertrace.graphql.entity.schema.argument.EntityTypeStringArgument;
import org.hypertrace.graphql.label.schema.LabelResultSet;
import org.hypertrace.graphql.metric.request.MetricRequest;
import org.hypertrace.graphql.metric.request.MetricRequestBuilder;
import org.hypertrace.graphql.metric.schema.MetricContainer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -64,11 +66,13 @@ class DefaultEntityJoinerBuilderTest {
@Mock GraphQlSelectionFinder mockSelectionFinder;
@Mock ArgumentDeserializer mockDeserializer;
@Mock ResultSetRequestBuilder mockResultSetRequestBuilder;
@Mock MetricRequestBuilder mockMetricRequestBuilder;
@Mock FilterRequestBuilder mockFilterRequestBuilder;
@Mock GraphQlRequestContext mockRequestContext;
@Mock DataFetchingFieldSelectionSet mockSelectionSet;
@Mock AttributeAssociation<FilterArgument> mockFilter;
@Mock ResultSetRequest mockResultSetRequest;
@Mock List<MetricRequest> mockMetricRequests;
@Mock EntityLabelRequestBuilder mockEntityLabelRequestBuilder;

Scheduler testScheduler = Schedulers.single();
Expand All @@ -83,6 +87,7 @@ void beforeEach() {
mockSelectionFinder,
mockDeserializer,
mockResultSetRequestBuilder,
mockMetricRequestBuilder,
mockFilterRequestBuilder,
testScheduler,
mockEntityLabelRequestBuilder);
Expand Down Expand Up @@ -278,6 +283,9 @@ private void mockRequestBuilding() {
any(Stream.class),
eq(Optional.empty())))
.thenReturn(Single.just(mockResultSetRequest));
when(mockMetricRequestBuilder.build(
eq(mockRequestContext), any(String.class), any(Stream.class)))
.thenReturn(Single.just(mockMetricRequests));
}

private void mockResult(Map<String, List<Entity>> resultsByEntityType) {
Expand Down