in loadtesting-utilities/src/main/java/org/apache/airavata/datalake/loadtesting/handlers/LoadTestHandler.java [35:91]
public String testFetchResource(@RequestParam("username") String username, @RequestParam("tenantId") String tenantId,
@RequestParam("entityId") String entityId,
@RequestParam("totalIterations") int iterations,
@RequestParam("reportChunkSize") int reportChunkSize,
@RequestParam("filePath") String filePath) {
ManagedChannel channel = ManagedChannelBuilder.forAddress(serviceHost, servicePort).usePlaintext().build();
ResourceServiceGrpc.ResourceServiceBlockingStub resourceClient = ResourceServiceGrpc.newBlockingStub(channel);
ResourceFetchRequest request = ResourceFetchRequest.newBuilder()
.setResourceId(entityId)
.setAuthToken(DRMSServiceAuthToken.newBuilder()
.setAuthenticatedUser(AuthenticatedUser.newBuilder()
.setTenantId(tenantId)
.setUsername(username)
.build())).build();
int successRequests = 0;
int failureRequests = 0;
long sum = 0;
Map<String, String> latencyMap = new HashMap<>();
int chunkSize = 1;
for (int i = 0; i < iterations; i++) {
try {
long beginLatency = System.currentTimeMillis();
ResourceFetchResponse response = resourceClient.fetchResource(request);
long endLatency = System.currentTimeMillis();
long diff = endLatency - beginLatency;
latencyMap.put(String.valueOf(i), String.valueOf(diff));
sum += diff;
String resourceId = response.getResource().getResourceId();
if (!resourceId.isEmpty()) {
successRequests++;
}
} catch (Exception ex) {
failureRequests++;
}
if (chunkSize % reportChunkSize == 0) {
long avgSuccessRate = (successRequests / chunkSize) * 100;
long avgFailureRare = (failureRequests / chunkSize) * 100;
writeToAFile(latencyMap, avgSuccessRate, avgFailureRare, filePath, "testFetchResource");
latencyMap.clear();
successRequests = 0;
failureRequests = 0;
chunkSize = 1;
} else {
chunkSize++;
}
}
return "load test completed";
}