| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- from __future__ import annotations
- import httpx
- from production_build_agents.observability.context_tracking import (
- activate_context_tracking,
- begin_model_call,
- context_tracking_active,
- deactivate_context_tracking,
- finish_model_call,
- observe_transport_request,
- observe_transport_response,
- observed_http_clients,
- )
- def _snapshot() -> dict:
- return {
- "physical_call_id": "physical-1",
- "logical_call_index": 1,
- "logical_call_key": "logical-1",
- "identity": {"agent_run_id": "agent-1"},
- "previous": None,
- }
- def test_transport_attempts_and_retries_are_recorded() -> None:
- capture_token = activate_context_tracking()
- call_token = begin_model_call(_snapshot())
- try:
- first = httpx.Request(
- "POST",
- "https://provider.example/v1/chat",
- headers={"x-stainless-retry-count": "0"},
- )
- observe_transport_request(first)
- observe_transport_response(httpx.Response(429, request=first))
- second = httpx.Request(
- "POST",
- "https://provider.example/v1/chat",
- headers={"x-stainless-retry-count": "1"},
- )
- observe_transport_request(second)
- observe_transport_response(httpx.Response(200, request=second))
- terminal = finish_model_call(
- call_token,
- message=None,
- response=None,
- status="success",
- )
- finally:
- deactivate_context_tracking(capture_token)
- transport = terminal["transport"]
- assert transport["observed"] is True
- assert transport["attempt_count"] == 2
- assert transport["retry_count"] == 1
- assert [item["status_code"] for item in transport["attempts"]] == [
- 429,
- 200,
- ]
- assert "provider.example" not in str(transport)
- def test_unobserved_transport_is_unknown_not_zero() -> None:
- call_token = begin_model_call(_snapshot())
- terminal = finish_model_call(
- call_token,
- message=None,
- response=None,
- status="failure",
- error_type="TimeoutError",
- )
- assert terminal["transport"] == {
- "observed": False,
- "attempt_count": None,
- "retry_count": None,
- "attempts": [],
- }
- assert terminal["error_type"] == "TimeoutError"
- def test_transport_exception_marks_attempt_without_response_as_error() -> None:
- capture_token = activate_context_tracking()
- call_token = begin_model_call(_snapshot())
- try:
- request = httpx.Request(
- "POST",
- "https://provider.example/v1/chat",
- headers={"x-stainless-retry-count": "0"},
- )
- observe_transport_request(request)
- terminal = finish_model_call(
- call_token,
- message=None,
- response=None,
- status="failure",
- error_type="ConnectError",
- )
- finally:
- deactivate_context_tracking(capture_token)
- assert terminal["transport"]["attempt_count"] == 1
- assert terminal["transport"]["retry_count"] == 0
- assert terminal["transport"]["attempts"][0]["outcome"] == "error"
- assert terminal["transport"]["attempts"][0]["status_code"] is None
- def test_http_client_is_only_enabled_inside_full_capture() -> None:
- assert context_tracking_active() is False
- assert observed_http_clients("openai") == {}
- token = activate_context_tracking()
- try:
- assert context_tracking_active() is True
- assert "http_client" in observed_http_clients("openai")
- assert observed_http_clients("anthropic") == {}
- finally:
- deactivate_context_tracking(token)
|