37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from locust import HttpUser, TaskSet, task, between
|
|
import csv
|
|
import random
|
|
|
|
class OSRMTasks(TaskSet):
|
|
def on_start(self):
|
|
random.seed(42)
|
|
|
|
self.coordinates = []
|
|
with open('~/gps_traces.csv', 'r') as file:
|
|
reader = csv.DictReader(file)
|
|
for row in reader:
|
|
self.coordinates.append((row['Latitude'], row['Longitude']))
|
|
|
|
@task
|
|
def get_route(self):
|
|
start = random.choice(self.coordinates)
|
|
end = random.choice(self.coordinates)
|
|
|
|
start_coord = f"{start[1]},{start[0]}"
|
|
end_coord = f"{end[1]},{end[0]}"
|
|
|
|
self.client.get(f"/route/v1/driving/{start_coord};{end_coord}?overview=full&steps=true")
|
|
|
|
@task
|
|
def get_table(self):
|
|
num_coords = random.randint(3, 500)
|
|
selected_coords = random.sample(self.coordinates, num_coords)
|
|
coords_str = ";".join([f"{coord[1]},{coord[0]}" for coord in selected_coords])
|
|
|
|
self.client.get(f"/table/v1/driving/{coords_str}")
|
|
|
|
class OSRMUser(HttpUser):
|
|
tasks = [OSRMTasks]
|
|
wait_time = between(0.01, 0.1)
|
|
|