From 874fc0b6fc5b4b37690f46f1113a62b1b6a1b6d2 Mon Sep 17 00:00:00 2001 From: Steven Bal Date: Thu, 13 Mar 2025 15:33:18 +0100 Subject: [PATCH] :white_check_mark: Add additional performance tests for pagination --- performance_test/test_objects_list.py | 50 ++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/performance_test/test_objects_list.py b/performance_test/test_objects_list.py index 8cfc0676..5391a5ec 100644 --- a/performance_test/test_objects_list.py +++ b/performance_test/test_objects_list.py @@ -7,7 +7,7 @@ @pytest.mark.benchmark(max_time=60, min_rounds=5) -def test_objects_api_list(benchmark, benchmark_assertions): +def test_objects_api_list_large_page_size_page_1(benchmark, benchmark_assertions): """ Regression test for maykinmedia/objects-api#538 """ @@ -27,3 +27,51 @@ def make_request(): assert result.json()["count"] == 5000 benchmark_assertions(mean=1, max=1) + + +@pytest.mark.benchmark(max_time=60, min_rounds=5) +def test_objects_api_list_large_page_size_page_5(benchmark, benchmark_assertions): + """ + Regression test for maykinmedia/objects-api#538 + """ + params = { + "pageSize": 1000, + "page": 5, + "type": "http://localhost:8001/api/v2/objecttypes/f1220670-8ab7-44f1-a318-bd0782e97662", + "data_attrs": "kiemjaar__exact__1234", + "ordering": "-record__data__contactmoment__datumContact", + } + + def make_request(): + return requests.get((BASE_URL / "objects").set(params), headers=AUTH_HEADERS) + + result = benchmark(make_request) + + assert result.status_code == 200 + assert result.json()["count"] == 5000 + + benchmark_assertions(mean=1, max=1) + + +@pytest.mark.benchmark(max_time=60, min_rounds=5) +def test_objects_api_list_small_page_size_page_20(benchmark, benchmark_assertions): + """ + Regression test for maykinmedia/objects-api#538 + """ + params = { + "pageSize": 20, + "page": 50, + "type": "http://localhost:8001/api/v2/objecttypes/f1220670-8ab7-44f1-a318-bd0782e97662", + "data_attrs": "kiemjaar__exact__1234", + "ordering": "-record__data__contactmoment__datumContact", + } + + def make_request(): + return requests.get((BASE_URL / "objects").set(params), headers=AUTH_HEADERS) + + result = benchmark(make_request) + + assert result.status_code == 200 + assert result.json()["count"] == 5000 + + benchmark_assertions(mean=1, max=1)