Skip to content
This repository was archived by the owner on Jun 26, 2024. It is now read-only.

Commit 2a2068a

Browse files
committed
added unit tests
1 parent 9c43c6f commit 2a2068a

File tree

2 files changed

+96
-1
lines changed

2 files changed

+96
-1
lines changed

gateway-service-impl/src/test/java/org/hypertrace/gateway/service/common/EntitiesRequestAndResponseUtils.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ public static AggregatedMetricValue getAggregatedMetricValue(FunctionType functi
115115
.build();
116116
}
117117

118+
public static AggregatedMetricValue getAggregatedMetricValue(FunctionType functionType, long value) {
119+
return AggregatedMetricValue.newBuilder()
120+
.setFunction(functionType)
121+
.setValue(Value.newBuilder().setLong(value).setValueType(ValueType.LONG))
122+
.build();
123+
}
124+
118125
public static Expression getLiteralExpression(long value) {
119126
return Expression.newBuilder()
120127
.setLiteral(

gateway-service-impl/src/test/java/org/hypertrace/gateway/service/common/datafetcher/QueryServiceEntityFetcherTests.java

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import static org.hypertrace.gateway.service.common.EntitiesRequestAndResponseUtils.buildTimeAggregation;
77
import static org.hypertrace.gateway.service.common.EntitiesRequestAndResponseUtils.compareEntityFetcherResponses;
88
import static org.hypertrace.gateway.service.common.EntitiesRequestAndResponseUtils.generateEQFilter;
9+
import static org.hypertrace.gateway.service.common.EntitiesRequestAndResponseUtils.getAggregatedMetricValue;
910
import static org.hypertrace.gateway.service.common.EntitiesRequestAndResponseUtils.getStringValue;
1011
import static org.hypertrace.gateway.service.common.QueryServiceRequestAndResponseUtils.createQsAggregationExpression;
1112
import static org.hypertrace.gateway.service.common.QueryServiceRequestAndResponseUtils.createQsRequestFilter;
1213
import static org.hypertrace.gateway.service.common.QueryServiceRequestAndResponseUtils.getResultSetChunk;
1314
import static org.hypertrace.gateway.service.common.converters.QueryRequestUtil.createColumnExpression;
14-
import static org.hypertrace.gateway.service.common.converters.QueryRequestUtil.createCountByColumnSelection;
1515
import static org.hypertrace.gateway.service.common.converters.QueryRequestUtil.createStringFilter;
1616
import static org.hypertrace.gateway.service.v1.common.Operator.AND;
1717
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -20,6 +20,8 @@
2020
import static org.mockito.Mockito.mock;
2121
import static org.mockito.Mockito.when;
2222

23+
import java.util.Collections;
24+
import java.util.LinkedHashMap;
2325
import java.util.List;
2426
import java.util.Map;
2527
import java.util.Optional;
@@ -77,6 +79,92 @@ public void setup () {
7779
attributeMetadataProvider, entityIdColumnsConfigs);
7880
}
7981

82+
@Test
83+
public void testGetEntities() {
84+
List<OrderByExpression> orderByExpressions = List.of(buildOrderByExpression(API_ID_ATTR));
85+
long startTime = 1L;
86+
long endTime = 10L;
87+
int limit = 10;
88+
int offset = 5;
89+
String tenantId = "TENANT_ID";
90+
Map<String, String> requestHeaders = Map.of("x-tenant-id", tenantId);
91+
AttributeScope entityType = AttributeScope.API;
92+
EntitiesRequest entitiesRequest =
93+
EntitiesRequest.newBuilder()
94+
.setEntityType(entityType.name())
95+
.setStartTimeMillis(startTime)
96+
.setEndTimeMillis(endTime)
97+
.addSelection(buildExpression(API_NAME_ATTR))
98+
.addSelection(
99+
buildAggregateExpression(
100+
API_NUM_CALLS_ATTR, FunctionType.SUM, "Sum_numCalls", Collections.emptyList()))
101+
.setFilter(
102+
Filter.newBuilder()
103+
.setOperator(AND)
104+
.addChildFilter(
105+
EntitiesRequestAndResponseUtils.getTimeRangeFilter(
106+
"API.startTime", startTime, endTime))
107+
.addChildFilter(generateEQFilter(API_DISCOVERY_STATE_ATTR, "DISCOVERED")))
108+
.addAllOrderBy(orderByExpressions)
109+
.setLimit(limit)
110+
.setOffset(offset)
111+
.build();
112+
EntitiesRequestContext entitiesRequestContext =
113+
new EntitiesRequestContext(
114+
tenantId, startTime, endTime, entityType.name(), "API.startTime", requestHeaders);
115+
116+
QueryRequest expectedQueryRequest =
117+
QueryRequest.newBuilder()
118+
.addSelection(createColumnExpression(API_ID_ATTR))
119+
.addSelection(createQsAggregationExpression("SUM", API_NUM_CALLS_ATTR, "Sum_numCalls"))
120+
.addSelection(createColumnExpression(API_NAME_ATTR))
121+
.setFilter(
122+
createQsRequestFilter(
123+
API_START_TIME_ATTR,
124+
API_ID_ATTR,
125+
startTime,
126+
endTime,
127+
createStringFilter(API_DISCOVERY_STATE_ATTR, Operator.EQ, "DISCOVERED")))
128+
.addGroupBy(createColumnExpression(API_ID_ATTR))
129+
.addGroupBy(createColumnExpression(API_NAME_ATTR))
130+
.setOffset(offset)
131+
.setLimit(QueryServiceClient.DEFAULT_QUERY_SERVICE_GROUP_BY_LIMIT)
132+
.addAllOrderBy(
133+
QueryAndGatewayDtoConverter.convertToQueryOrderByExpressions(orderByExpressions))
134+
.build();
135+
136+
List<ResultSetChunk> resultSetChunks =
137+
List.of(
138+
getResultSetChunk(
139+
List.of("API.id", "API.name", "Sum_numCalls"),
140+
new String[][] {{"apiId1", "api 1", "3"}, {"apiId2", "api 2", "5"}}));
141+
142+
when(queryServiceClient.executeQuery(eq(expectedQueryRequest), eq(requestHeaders), eq(500)))
143+
.thenReturn(resultSetChunks.iterator());
144+
145+
EntityFetcherResponse response =
146+
queryServiceEntityFetcher.getEntities(entitiesRequestContext, entitiesRequest);
147+
assertEquals(2, response.size());
148+
149+
Map<EntityKey, Builder> expectedEntityKeyBuilderResponseMap = new LinkedHashMap<>();
150+
expectedEntityKeyBuilderResponseMap.put(EntityKey.of("apiId1"), Entity.newBuilder()
151+
.setId("apiId1")
152+
.setEntityType("API")
153+
.putAttribute("API.id", getStringValue("apiId1"))
154+
.putAttribute("API.name", getStringValue("api 1"))
155+
.putMetric("Sum_numCalls", getAggregatedMetricValue(FunctionType.SUM, 3))
156+
);
157+
expectedEntityKeyBuilderResponseMap.put(EntityKey.of("apiId2"), Entity.newBuilder()
158+
.setId("apiId2")
159+
.setEntityType("API")
160+
.putAttribute("API.id", getStringValue("apiId2"))
161+
.putAttribute("API.name", getStringValue("api 2"))
162+
.putMetric("Sum_numCalls", getAggregatedMetricValue(FunctionType.SUM, 5))
163+
);
164+
compareEntityFetcherResponses(
165+
new EntityFetcherResponse(expectedEntityKeyBuilderResponseMap), response);
166+
}
167+
80168
@Test
81169
public void test_getEntitiesWithPagination() {
82170
List<OrderByExpression> orderByExpressions = List.of(buildOrderByExpression(API_ID_ATTR));

0 commit comments

Comments
 (0)