Implement end-to-end benchmark
This commit is contained in:
parent
778560d325
commit
c7657f8aca
28
.github/workflows/osrm-backend.yml
vendored
28
.github/workflows/osrm-backend.yml
vendored
@ -660,20 +660,20 @@ jobs:
|
||||
make -j$(nproc) benchmarks
|
||||
cd ..
|
||||
make -C test/data
|
||||
- name: Checkout Base Branch
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.base.ref }}
|
||||
path: base
|
||||
- name: Build Base Branch
|
||||
run: |
|
||||
mkdir base/build
|
||||
cd base/build
|
||||
cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release ..
|
||||
make -j$(nproc)
|
||||
make -j$(nproc) benchmarks
|
||||
cd ..
|
||||
make -C test/data
|
||||
# - name: Checkout Base Branch
|
||||
# uses: actions/checkout@v4
|
||||
# with:
|
||||
# ref: ${{ github.event.pull_request.base.ref }}
|
||||
# path: base
|
||||
# - name: Build Base Branch
|
||||
# run: |
|
||||
# mkdir base/build
|
||||
# cd base/build
|
||||
# cmake -DENABLE_CONAN=ON -DCMAKE_BUILD_TYPE=Release ..
|
||||
# make -j$(nproc)
|
||||
# make -j$(nproc) benchmarks
|
||||
# cd ..
|
||||
# make -C test/data
|
||||
- name: Run Benchmarks
|
||||
run: |
|
||||
./pr/scripts/ci/run_benchmarks.sh base pr
|
||||
|
@ -1,24 +1,32 @@
|
||||
from locust import HttpUser, TaskSet, task, between
|
||||
import csv
|
||||
import random
|
||||
from collections import defaultdict
|
||||
import os
|
||||
|
||||
class OSRMTasks(TaskSet):
|
||||
def on_start(self):
|
||||
random.seed(42)
|
||||
|
||||
self.coordinates = []
|
||||
with open('~/gps_traces.csv', 'r') as file:
|
||||
self.tracks = defaultdict(list)
|
||||
|
||||
gps_traces_file_path = os.path.expanduser('~/gps_traces.csv')
|
||||
with open(gps_traces_file_path, 'r') as file:
|
||||
reader = csv.DictReader(file)
|
||||
for row in reader:
|
||||
self.coordinates.append((row['Latitude'], row['Longitude']))
|
||||
coord = (row['Latitude'], row['Longitude'])
|
||||
self.coordinates.append(coord)
|
||||
self.tracks[row['TrackID']].append(coord)
|
||||
self.track_ids = list(self.tracks.keys())
|
||||
|
||||
@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]}"
|
||||
start_coord = f"{start[1]:.6f},{start[0]:.6f}"
|
||||
end_coord = f"{end[1]:.6f},{end[0]:.6f}"
|
||||
|
||||
self.client.get(f"/route/v1/driving/{start_coord};{end_coord}?overview=full&steps=true")
|
||||
|
||||
@ -26,10 +34,33 @@ class OSRMTasks(TaskSet):
|
||||
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])
|
||||
coords_str = ";".join([f"{coord[1]:.6f},{coord[0]:.6f}" for coord in selected_coords])
|
||||
|
||||
self.client.get(f"/table/v1/driving/{coords_str}")
|
||||
|
||||
@task
|
||||
def get_match(self):
|
||||
track_id = random.choice(self.track_ids)
|
||||
track_coords = self.tracks[track_id]
|
||||
coords_str = ";".join([f"{coord[1]:.6f},{coord[0]:.6f}" for coord in track_coords])
|
||||
|
||||
self.client.get(f"/match/v1/driving/{coords_str}?steps=true")
|
||||
|
||||
@task
|
||||
def get_nearest(self):
|
||||
coord = random.choice(self.coordinates)
|
||||
coord_str = f"{coord[1]:.6f},{coord[0]:.6f}"
|
||||
|
||||
self.client.get(f"/nearest/v1/driving/{coord_str}")
|
||||
|
||||
@task
|
||||
def get_trip(self):
|
||||
num_coords = random.randint(2, 10)
|
||||
selected_coords = random.sample(self.coordinates, num_coords)
|
||||
coords_str = ";".join([f"{coord[1]:.6f},{coord[0]:.6f}" for coord in selected_coords])
|
||||
|
||||
self.client.get(f"/trip/v1/driving/{coords_str}?steps=true")
|
||||
|
||||
class OSRMUser(HttpUser):
|
||||
tasks = [OSRMTasks]
|
||||
wait_time = between(0.01, 0.1)
|
||||
|
@ -30,6 +30,7 @@ function run_benchmarks_for_folder {
|
||||
$BINARIES_FOLDER/osrm-routed --algorithm mld $FOLDER/data.osrm &
|
||||
OSRM_ROUTED_PID=$!
|
||||
|
||||
|
||||
# TODO: save results
|
||||
if [ -f "$FOLDER/locustfile.py" ]; then
|
||||
curl --retry-delay 3 --retry 10 --retry-all-errors "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"
|
||||
@ -49,6 +50,6 @@ function run_benchmarks_for_folder {
|
||||
fi
|
||||
}
|
||||
|
||||
run_benchmarks_for_folder $1 "${1}_results"
|
||||
# run_benchmarks_for_folder $1 "${1}_results"
|
||||
run_benchmarks_for_folder $2 "${2}_results"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user