From 85f70d835acfe27a2c540ab124bda996a1f5e6e2 Mon Sep 17 00:00:00 2001 From: Helldragon67 Date: Wed, 15 Jan 2025 06:58:25 +0100 Subject: [PATCH] parallel test to compare speeds --- backend/src/tests/test_main.py | 120 ++++++++++++++++++++++++++++++--- 1 file changed, 111 insertions(+), 9 deletions(-) diff --git a/backend/src/tests/test_main.py b/backend/src/tests/test_main.py index 25f58d4..60e1278 100644 --- a/backend/src/tests/test_main.py +++ b/backend/src/tests/test_main.py @@ -1,9 +1,9 @@ """Collection of tests to ensure correct implementation and track progress. """ - +import time from fastapi.testclient import TestClient import pytest -from .test_utils import landmarks_to_osmid, load_trip_landmarks, log_trip_details +from .test_utils import load_trip_landmarks, log_trip_details from ..main import app @pytest.fixture(scope="module") @@ -20,7 +20,9 @@ def test_turckheim(client, request): # pylint: disable=redefined-outer-name client: request: """ + start_time = time.time() # Start timer duration_minutes = 15 + response = client.post( "/trip/new", json={ @@ -35,15 +37,23 @@ def test_turckheim(client, request): # pylint: disable=redefined-outer-name result = response.json() landmarks = load_trip_landmarks(client, result['first_landmark_uuid']) + + # Get computation time + comp_time = time.time() - start_time + # Add details to report log_trip_details(request, landmarks, result['total_time'], duration_minutes) + # for elem in landmarks : + # print(elem) + # checks : assert response.status_code == 200 # check for successful planning assert isinstance(landmarks, list) # check that the return type is a list assert duration_minutes*0.8 < int(result['total_time']) < duration_minutes*1.2 assert len(landmarks) > 2 # check that there is something to visit - + assert comp_time < 30, f"Computation time exceeded 30 seconds: {comp_time:.2f} seconds" + # assert 2==3 def test_bellecour(client, request) : # pylint: disable=redefined-outer-name """ @@ -53,7 +63,9 @@ def test_bellecour(client, request) : # pylint: disable=redefined-outer-name client: request: """ + start_time = time.time() # Start timer duration_minutes = 120 + response = client.post( "/trip/new", json={ @@ -67,22 +79,102 @@ def test_bellecour(client, request) : # pylint: disable=redefined-outer-name ) result = response.json() landmarks = load_trip_landmarks(client, result['first_landmark_uuid']) - osm_ids = landmarks_to_osmid(landmarks) + + # Get computation time + comp_time = time.time() - start_time # Add details to report log_trip_details(request, landmarks, result['total_time'], duration_minutes) - for elem in landmarks : - print(elem) - print(elem.osm_id) + # for elem in landmarks : + # print(elem) # checks : assert response.status_code == 200 # check for successful planning + assert comp_time < 30, f"Computation time exceeded 30 seconds: {comp_time:.2f} seconds" assert duration_minutes*0.8 < int(result['total_time']) < duration_minutes*1.2 - assert 136200148 in osm_ids # check for Cathédrale St. Jean in trip - # assert response.status_code == 2000 # check for successful planning + # assert 2 == 3 +def test_Paris(client, request) : # pylint: disable=redefined-outer-name + """ + Test n°2 : Custom test in Paris (les Halles) centre to ensure proper decision making in crowded area. + + Args: + client: + request: + """ + start_time = time.time() # Start timer + duration_minutes = 300 + + response = client.post( + "/trip/new", + json={ + "preferences": {"sightseeing": {"type": "sightseeing", "score": 5}, + "nature": {"type": "nature", "score": 5}, + "shopping": {"type": "shopping", "score": 5}, + "max_time_minute": duration_minutes, + "detour_tolerance_minute": 0}, + "start": [48.86248803298562, 2.346451131285925] + } + ) + result = response.json() + landmarks = load_trip_landmarks(client, result['first_landmark_uuid']) + + # Get computation time + comp_time = time.time() - start_time + + # Add details to report + log_trip_details(request, landmarks, result['total_time'], duration_minutes) + + # for elem in landmarks : + # print(elem) + + # checks : + assert response.status_code == 200 # check for successful planning + assert comp_time < 30, f"Computation time exceeded 30 seconds: {comp_time:.2f} seconds" + assert duration_minutes*0.8 < int(result['total_time']) < duration_minutes*1.2 + + +def test_New_York(client, request) : # pylint: disable=redefined-outer-name + """ + Test n°2 : Custom test in New York (les Halles) centre to ensure proper decision making in crowded area. + + Args: + client: + request: + """ + start_time = time.time() # Start timer + duration_minutes = 600 + + response = client.post( + "/trip/new", + json={ + "preferences": {"sightseeing": {"type": "sightseeing", "score": 5}, + "nature": {"type": "nature", "score": 5}, + "shopping": {"type": "shopping", "score": 5}, + "max_time_minute": duration_minutes, + "detour_tolerance_minute": 0}, + "start": [40.72592726802, -73.9920434795] + } + ) + result = response.json() + landmarks = load_trip_landmarks(client, result['first_landmark_uuid']) + + # Get computation time + comp_time = time.time() - start_time + + # Add details to report + log_trip_details(request, landmarks, result['total_time'], duration_minutes) + + # for elem in landmarks : + # print(elem) + + # checks : + assert response.status_code == 200 # check for successful planning + assert comp_time < 30, f"Computation time exceeded 30 seconds: {comp_time:.2f} seconds" + assert duration_minutes*0.8 < int(result['total_time']) < duration_minutes*1.2 + def test_shopping(client, request) : # pylint: disable=redefined-outer-name """ @@ -92,7 +184,9 @@ def test_shopping(client, request) : # pylint: disable=redefined-outer-name client: request: """ + start_time = time.time() # Start timer duration_minutes = 240 + response = client.post( "/trip/new", json={ @@ -107,13 +201,21 @@ def test_shopping(client, request) : # pylint: disable=redefined-outer-name result = response.json() landmarks = load_trip_landmarks(client, result['first_landmark_uuid']) + # Get computation time + comp_time = time.time() - start_time + # Add details to report log_trip_details(request, landmarks, result['total_time'], duration_minutes) + # for elem in landmarks : + # print(elem) + # checks : assert response.status_code == 200 # check for successful planning + assert comp_time < 30, f"Computation time exceeded 30 seconds: {comp_time:.2f} seconds" assert duration_minutes*0.8 < int(result['total_time']) < duration_minutes*1.2 + # def test_new_trip_single_prefs(client): # response = client.post( # "/trip/new",