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()