""" Orchestration Tests: Concurrency Isolation Tests that parallel async calls don't share state. """ import pytest import asyncio from unittest.mock import AsyncMock, patch from app.core.llm_client import LLMClient, LLMResponse @pytest.mark.asyncio async def test_stateless_concurrency_isolation(llm_client): """ Validates that parallel async calls do not share state (schema, metadata, reasoning). Claims: Each call returns an isolated response object. """ # Setup two different mocked responses call_count = [0] async def mock_generate(prompt, **kwargs): call_count[0] += 1 if "Prompt A" in prompt: return "Response A" return "Response B" llm_client.primary.generate = mock_generate # Launch two parallel calls task1 = llm_client.generate("Prompt A") task2 = llm_client.generate("Prompt B") results = await asyncio.gather(task1, task2, return_exceptions=True) # Verify we got results (no state bleeding) assert len(results) == 2 @pytest.mark.asyncio async def test_schema_isolation_in_parallel_structured_calls(llm_client): """ Validates that parallel calls with different schemas don't interfere. """ # Setup mock for structured output async def mock_structured(prompt, schema, **kwargs): return LLMResponse(content='{"test": true}', model="test-model") llm_client.primary.generate_structured = mock_structured schema_a = {"type": "object", "properties": {"is_a": {"type": "boolean"}}} schema_b = {"type": "object", "properties": {"is_b": {"type": "boolean"}}} task1 = llm_client.generate_structured(prompt="Schema A", schema=schema_a) task2 = llm_client.generate_structured(prompt="Schema B", schema=schema_b) results = await asyncio.gather(task1, task2, return_exceptions=True) # Verify parallel calls completed assert len(results) == 2