fix: Fix session API format and missing client methods

This commit is contained in:
2026-03-05 19:55:54 -05:00
parent 4da88a4274
commit e02ebf7a65
3 changed files with 44 additions and 39 deletions

View File

@@ -2,46 +2,39 @@ import time
import sys
import os
# Ensure project root is in path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src")))
from src.api_hook_client import ApiHookClient
def test_comms_volume_stress_performance(live_gui) -> None:
"""
Stress test: Inject many session entries and verify performance doesn't degrade.
"""
# 0. Warmup
time.sleep(5.0)
client = ApiHookClient()
# 1. Capture baseline
time.sleep(2.0) # Wait for stability
baseline_resp = client.get_performance()
baseline = baseline_resp.get('performance', {})
baseline_ft = baseline.get('last_frame_time_ms', 0.0)
# 2. Inject 50 "dummy" session entries
# Role must match DISC_ROLES in gui_2.py (User, AI, Vendor API, System)
large_session = []
for i in range(50):
large_session.append({
"role": "User",
"content": f"Stress test entry {i} " * 5,
"ts": time.time(),
"collapsed": False
})
client.post_session(large_session)
# Give it a moment to process UI updates
time.sleep(1.0)
# 3. Capture stress performance
stress_resp = client.get_performance()
stress = stress_resp.get('performance', {})
stress_ft = stress.get('last_frame_time_ms', 0.0)
print(f"Baseline FT: {baseline_ft:.2f}ms, Stress FT: {stress_ft:.2f}ms")
# If we got valid timing, assert it's within reason
if stress_ft > 0:
assert stress_ft < 100.0, f"Stress frame time {stress_ft:.2f}ms exceeds 10fps threshold"
# Ensure the session actually updated
session_data = client.get_session()
entries = session_data.get('session', {}).get('entries', [])
assert len(entries) >= 50, f"Expected at least 50 entries, got {len(entries)}"
time.sleep(5.0)
client = ApiHookClient()
time.sleep(2.0)
baseline_resp = client.get_performance()
baseline = baseline_resp.get("performance", {})
baseline_ft = baseline.get("last_frame_time_ms", 0.0)
large_session = []
for i in range(50):
large_session.append(
{
"role": "User",
"content": f"Stress test entry {i} " * 5,
"ts": time.time(),
"collapsed": False,
}
)
client.post_session(large_session)
time.sleep(1.0)
stress_resp = client.get_performance()
stress = stress_resp.get("performance", {})
stress_ft = stress.get("last_frame_time_ms", 0.0)
print(f"Baseline FT: {baseline_ft:.2f}ms, Stress FT: {stress_ft:.2f}ms")
if stress_ft > 0:
assert stress_ft < 100.0, (
f"Stress frame time {stress_ft:.2f}ms exceeds 10fps threshold"
)
session_data = client.get_session()
entries = session_data.get("session", {}).get("entries", [])
assert len(entries) >= 50, f"Expected at least 50 entries, got {len(entries)}"