test: Add wait for server startup for letta batch tests (#1916)

This commit is contained in:
Matthew Zhou
2025-04-28 15:23:53 -07:00
committed by GitHub
parent beed896d60
commit 55c51f2d28
2 changed files with 20 additions and 2 deletions

View File

@@ -1,6 +1,5 @@
import os
import threading
import time
from datetime import datetime, timezone
from typing import Tuple
from unittest.mock import AsyncMock, patch
@@ -32,6 +31,7 @@ from letta.schemas.message import MessageCreate
from letta.schemas.tool_rule import InitToolRule
from letta.server.db import db_context
from letta.server.server import SyncServer
from tests.utils import wait_for_server
# --------------------------------------------------------------------------- #
# Test Constants
@@ -311,7 +311,7 @@ def server_url():
if not os.getenv("LETTA_SERVER_URL"):
thread = threading.Thread(target=run_server, daemon=True)
thread.start()
time.sleep(1) # Give server time to start
wait_for_server(url)
return url

View File

@@ -175,3 +175,21 @@ def wait_for_incoming_message(
time.sleep(sleep_interval)
return False
def wait_for_server(url, timeout=30, interval=0.5):
"""Wait for server to become available by polling the given URL."""
import requests
from requests.exceptions import ConnectionError
start_time = time.time()
while time.time() - start_time < timeout:
try:
response = requests.get(f"{url}/v1/health", timeout=2)
if response.status_code == 200:
return True
except (ConnectionError, requests.Timeout):
pass
time.sleep(interval)
raise TimeoutError(f"Server at {url} did not start within {timeout} seconds")