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 csv
import random import random
from collections import defaultdict from collections import defaultdict
@ -66,3 +66,41 @@ class OSRMUser(HttpUser):
tasks = [OSRMTasks] tasks = [OSRMTasks]
wait_time = between(0.01, 0.1) 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]}")