Spaces:
Running
Running
| """ | |
| backend/api/advanced_complex_benchmark.py — Stress test per task complessi e concorrenza. | |
| """ | |
| import asyncio | |
| import time | |
| import random | |
| import statistics | |
| from .execution_fabric import ExecutionFabric, DispatchRequest, ProviderKind, ProviderSpec, AlwaysOn, ProviderHealth | |
| from .token_rotator import rotator | |
| class AdvancedBenchmark: | |
| def __init__(self): | |
| self.fabric = ExecutionFabric() | |
| self.metrics = { | |
| "complex_reasoning": [], | |
| "data_heavy_sync": [], | |
| "multi_provider_chain": [], | |
| "failures": 0, | |
| "successes": 0 | |
| } | |
| async def setup(self): | |
| # Configurazione flotta | |
| for char in ['a', 'b', 'c', 'd']: | |
| self.fabric._specs[f"sb-{char}"] = ProviderSpec( | |
| provider_id=f"sb-{char}", name=f"Supabase {char.upper()}", kind=ProviderKind.LOCAL, | |
| capabilities=["memory"], always_on=AlwaysOn.YES | |
| ) | |
| self.fabric._states[f"sb-{char}"] = type('State', (), {"health": ProviderHealth.OK})() | |
| self.fabric._specs["oracle-core"] = ProviderSpec( | |
| provider_id="oracle-core", name="Oracle Core", kind=ProviderKind.ORACLE, | |
| capabilities=["reasoning", "sandbox"], always_on=AlwaysOn.YES, timeout=60.0 | |
| ) | |
| self.fabric._states["oracle-core"] = type('State', (), {"health": ProviderHealth.OK})() | |
| self.fabric._specs["railway-core"] = ProviderSpec( | |
| provider_id="railway-core", name="Railway Space E", kind=ProviderKind.RAILWAY, | |
| capabilities=["reasoning", "sandbox"], always_on=AlwaysOn.YES | |
| ) | |
| self.fabric._states["railway-core"] = type('State', (), {"health": ProviderHealth.OK})() | |
| self.fabric._initialized = True | |
| async def _simulate_call(self, spec, req): | |
| # Simula complessità variabile | |
| if "reasoning" in spec.capabilities: | |
| await asyncio.sleep(random.uniform(0.5, 2.0)) # Calcolo pesante | |
| if random.random() < 0.05: # 5% probabilità di errore casuale | |
| raise Exception("Random Provider Glitch") | |
| if spec.provider_id == "sb-a" and random.random() < 0.3: | |
| return {"status_code": 402} # 30% probabilità rate limit su A | |
| return {"status": "ok", "provider": spec.name} | |
| async def run_complex_task(self, name, capability, count=20): | |
| print(f"⚙️ Esecuzione: {name} ({count} task)...") | |
| tasks = [] | |
| for _ in range(count): | |
| req = DispatchRequest(capability=capability, payload={"complexity": "high"}) | |
| tasks.append(self.fabric.dispatch(req)) | |
| t0 = time.time() | |
| results = await asyncio.gather(*tasks) | |
| duration = (time.time() - t0) * 1000 | |
| latencies = [] | |
| for r in results: | |
| if r.status == "executed": | |
| self.metrics["successes"] += 1 | |
| latencies.append(r.latency_ms) | |
| else: | |
| self.metrics["failures"] += 1 | |
| self.metrics[name] = latencies | |
| def print_stats(self): | |
| print("\n" + "="*50) | |
| print("📊 REPORT AVANZATO PRESTAZIONI SISTEMA") | |
| print("="*50) | |
| total = self.metrics["successes"] + self.metrics["failures"] | |
| print(f"Success Rate Totale: {(self.metrics['successes']/total)*100:.2f}% ({self.metrics['successes']}/{total})") | |
| for name in ["complex_reasoning", "data_heavy_sync"]: | |
| data = self.metrics.get(name, []) | |
| if data: | |
| print(f"\n[{name.upper()}]") | |
| print(f" - Media Latenza: {statistics.mean(data):.2f}ms") | |
| print(f" - P95: {statistics.quantiles(data, n=20)[18]:.2f}ms") | |
| print(f" - P99: {max(data):.2f}ms") | |
| print(f" - Efficienza: {len(data)} task completati con successo") | |
| print("\n" + "="*50) | |
| async def run(self): | |
| await self.setup() | |
| self.fabric._call_provider = self._simulate_call | |
| # Scenario 1: Ragionamento Complesso (Oracle/Railway) | |
| await self.run_complex_task("complex_reasoning", "reasoning", count=30) | |
| # Scenario 2: Sincronizzazione Dati (Supabase A-D) | |
| await self.run_complex_task("data_heavy_sync", "memory", count=50) | |
| self.print_stats() | |
| if __name__ == "__main__": | |
| asyncio.run(AdvancedBenchmark().run()) | |