mirror of
https://github.com/openai/codex.git
synced 2026-04-28 00:25:56 +00:00
turn metadata: per-turn non-blocking (#11677)
This commit is contained in:
@@ -106,7 +106,7 @@ async fn responses_websocket_preconnect_reuses_connection() {
|
||||
let harness = websocket_harness(&server).await;
|
||||
let mut client_session = harness.client.new_session();
|
||||
client_session
|
||||
.prewarm_websocket(&harness.otel_manager, &harness.model_info, None)
|
||||
.prewarm_websocket(&harness.otel_manager, &harness.model_info)
|
||||
.await
|
||||
.expect("websocket prewarm failed");
|
||||
let prompt = prompt_with_input(vec![message_item("hello")]);
|
||||
@@ -131,7 +131,7 @@ async fn responses_websocket_preconnect_is_reused_even_with_header_changes() {
|
||||
let harness = websocket_harness(&server).await;
|
||||
let mut client_session = harness.client.new_session();
|
||||
client_session
|
||||
.prewarm_websocket(&harness.otel_manager, &harness.model_info, None)
|
||||
.prewarm_websocket(&harness.otel_manager, &harness.model_info)
|
||||
.await
|
||||
.expect("websocket prewarm failed");
|
||||
let prompt = prompt_with_input(vec![message_item("hello")]);
|
||||
@@ -172,7 +172,7 @@ async fn responses_websocket_prewarm_uses_model_preference_when_feature_disabled
|
||||
let harness = websocket_harness_with_options(&server, false, false, false, true).await;
|
||||
let mut client_session = harness.client.new_session();
|
||||
client_session
|
||||
.prewarm_websocket(&harness.otel_manager, &harness.model_info, None)
|
||||
.prewarm_websocket(&harness.otel_manager, &harness.model_info)
|
||||
.await
|
||||
.expect("websocket prewarm failed");
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ use core_test_support::responses::start_websocket_server_with_headers;
|
||||
use core_test_support::skip_if_no_network;
|
||||
use core_test_support::test_codex::test_codex;
|
||||
use pretty_assertions::assert_eq;
|
||||
use serde_json::Value;
|
||||
|
||||
const TURN_STATE_HEADER: &str = "x-codex-turn-state";
|
||||
|
||||
@@ -65,6 +66,25 @@ async fn responses_turn_state_persists_within_turn_and_resets_after() -> Result<
|
||||
);
|
||||
assert_eq!(requests[2].header(TURN_STATE_HEADER), None);
|
||||
|
||||
let parse_turn_id = |header: Option<String>| {
|
||||
let value = header?;
|
||||
let parsed: Value = serde_json::from_str(&value).ok()?;
|
||||
parsed
|
||||
.get("turn_id")
|
||||
.and_then(Value::as_str)
|
||||
.map(str::to_string)
|
||||
};
|
||||
|
||||
let first_turn_id = parse_turn_id(requests[0].header("x-codex-turn-metadata"))
|
||||
.expect("first request should include turn metadata turn_id");
|
||||
let second_turn_id = parse_turn_id(requests[1].header("x-codex-turn-metadata"))
|
||||
.expect("follow-up request should include turn metadata turn_id");
|
||||
let third_turn_id = parse_turn_id(requests[2].header("x-codex-turn-metadata"))
|
||||
.expect("new turn request should include turn metadata turn_id");
|
||||
|
||||
assert_eq!(first_turn_id, second_turn_id);
|
||||
assert_ne!(second_turn_id, third_turn_id);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user