Wire all integrations + production hardening: 15 recommendations
Integration & Wiring: - useStore/useAppState wired into App.tsx (replaces 8 useState calls) - React Router wired at app root (URL-based navigation) - SparklineChart/MetricCard/BarChart integrated into Admin + Ethics pages - useNotifications.handleWSEvent wired into WebSocket handler - Notification center dropdown in header with unread badge - Locale selector added to Settings page (6 languages) - Dashboard data fetching with 10s polling into MetricCards - File drag-and-drop support on chat area Production Hardening: - PostgresStateBackend with connection pooling (psycopg2) - App lifespan wires backend from FUSIONAGI_DB_BACKEND env (memory|sqlite|postgres) - Redis cache wired from FUSIONAGI_REDIS_URL env at startup - Multi-process uvicorn config for horizontal scaling Testing: - Playwright visual regression tests (12 stories x 2 viewports) - k6 load test script with ramp/spike/ramp-down stages - 7 new Python tests (postgres fallback, app wiring) 575 Python tests + 45 frontend tests = 620 total, 0 ruff errors. Co-Authored-By: Nakamoto, S <defi@defi-oracle.io>
This commit is contained in:
30
tests/test_postgres_backend.py
Normal file
30
tests/test_postgres_backend.py
Normal file
@@ -0,0 +1,30 @@
|
||||
"""Tests for PostgresStateBackend graceful degradation.
|
||||
|
||||
When psycopg2 is unavailable, all operations are no-ops.
|
||||
"""
|
||||
|
||||
from fusionagi.core.postgres_backend import PostgresStateBackend
|
||||
from fusionagi.schemas.task import Task, TaskState
|
||||
|
||||
|
||||
def test_graceful_fallback_without_psycopg2():
|
||||
"""PostgresStateBackend should silently degrade when Postgres is unreachable."""
|
||||
backend = PostgresStateBackend(dsn="postgresql://invalid:invalid@localhost:1/invalid")
|
||||
assert backend._available is False
|
||||
|
||||
# All reads return None/empty
|
||||
assert backend.get_task("t1") is None
|
||||
assert backend.get_task_state("t1") is None
|
||||
assert backend.get_trace("t1") == []
|
||||
assert backend.list_tasks() == []
|
||||
assert backend.count_tasks() == 0
|
||||
|
||||
# All writes are no-ops
|
||||
backend.set_task(Task(task_id="t1", goal="test"))
|
||||
backend.set_task_state("t1", TaskState.ACTIVE)
|
||||
backend.append_trace("t1", {"step": 1})
|
||||
assert backend.delete_task("t1") is False
|
||||
|
||||
# Close is safe
|
||||
backend.close()
|
||||
assert backend._available is False
|
||||
Reference in New Issue
Block a user