Files
railseek6/test_paginated_performance.py

70 lines
2.1 KiB
Python

import requests
import time
import json
BASE_URL = "http://localhost:3015"
API_KEY = "jleu1212"
headers = {"X-API-Key": API_KEY, "Content-Type": "application/json"}
def upload_document():
"""Upload a test document."""
files = {"file": ("test.txt", b"Test content", "text/plain")}
resp = requests.post(f"{BASE_URL}/documents/upload", headers={"X-API-Key": API_KEY}, files=files)
print(f"Upload response: {resp.status_code}")
if resp.status_code == 200:
data = resp.json()
print(f"Track ID: {data.get('track_id')}")
return data.get('track_id')
return None
def call_paginated():
"""Call paginated endpoint and measure time."""
payload = {
"page": 1,
"page_size": 50,
"status_filter": None,
"sort_field": "updated_at",
"sort_direction": "desc"
}
start = time.time()
try:
resp = requests.post(f"{BASE_URL}/documents/paginated", headers=headers, json=payload, timeout=120)
elapsed = time.time() - start
print(f"Paginated response time: {elapsed:.2f}s, status: {resp.status_code}")
if resp.status_code != 200:
print(f"Response: {resp.text}")
return elapsed
except requests.exceptions.Timeout:
print("Paginated request timed out after 120 seconds")
return None
except Exception as e:
print(f"Error: {e}")
return None
def main():
print("Testing paginated endpoint performance...")
# First, ensure there are documents (upload one)
track_id = upload_document()
if track_id:
print("Waiting 5 seconds for processing...")
time.sleep(5)
# Call paginated multiple times
times = []
for i in range(3):
print(f"Attempt {i+1}:")
t = call_paginated()
if t:
times.append(t)
time.sleep(1)
if times:
avg = sum(times) / len(times)
print(f"Average response time: {avg:.2f}s")
if avg > 30:
print("WARNING: Response time >30 seconds, may cause nginx timeout.")
else:
print("All attempts failed.")
if __name__ == "__main__":
main()