This commit is contained in:
Siarhei Fedartsou 2024-05-26 18:28:53 +02:00
parent 4476cbdc42
commit 6b6882d44b

View File

@ -1,4 +1,4 @@
from locust import HttpUser, TaskSet, task, between
from locust import HttpUser, TaskSet, task, between, events
import csv
import random
from collections import defaultdict
@ -66,3 +66,41 @@ class OSRMUser(HttpUser):
tasks = [OSRMTasks]
wait_time = between(0.01, 0.1)
@events.quitting.add_listener
def _(environment, **kwargs):
def calculate_percentiles(stats, percentiles):
response_times = sorted(stats.get_response_times())
percentile_values = {}
for percentile in percentiles:
rank = int(len(response_times) * (percentile / 100))
percentile_values[percentile] = response_times[rank-1] if rank > 0 else 0
return percentile_values
nearest_stats = environment.stats.get("/nearest/v1/driving", "GET")
route_stats = environment.stats.get("/route/v1/driving", "GET")
nearest_percentiles = calculate_percentiles(nearest_stats, [95, 99])
route_percentiles = calculate_percentiles(route_stats, [95, 99])
print("\nAggregated Statistics for /nearest/v1/driving:")
print(f"Request Count: {nearest_stats.num_requests}")
print(f"Failure Count: {nearest_stats.num_failures}")
print(f"Median Response Time: {nearest_stats.median_response_time}")
print(f"Average Response Time: {nearest_stats.avg_response_time}")
print(f"Min Response Time: {nearest_stats.min_response_time}")
print(f"Max Response Time: {nearest_stats.max_response_time}")
print(f"Average Content Size: {nearest_stats.avg_content_length}")
print(f"p95 Response Time: {nearest_percentiles[95]}")
print(f"p99 Response Time: {nearest_percentiles[99]}")
print("\nAggregated Statistics for /route/v1/driving:")
print(f"Request Count: {route_stats.num_requests}")
print(f"Failure Count: {route_stats.num_failures}")
print(f"Median Response Time: {route_stats.median_response_time}")
print(f"Average Response Time: {route_stats.avg_response_time}")
print(f"Min Response Time: {route_stats.min_response_time}")
print(f"Max Response Time: {route_stats.max_response_time}")
print(f"Average Content Size: {route_stats.avg_content_length}")
print(f"p95 Response Time: {route_percentiles[95]}")
print(f"p99 Response Time: {route_percentiles[99]}")