mirror of
https://github.com/openai/codex.git
synced 2026-11-09 08:40:33 +00:00
Remove WebSocket transport from code-mode hosts (#40692)
## What changed - Accept only `http://` and `https://` gRPC endpoints for app server `--code-mode-host` connections. - Limit the standalone code-mode host to stdio and gRPC listeners. - Remove the WebSocket session provider, dual-WebSocket negotiation, transport lanes, and related dependencies and tests. - Keep coverage for shared and prewarmed gRPC hosts and reject WebSocket host URLs in CLI parsing tests. GitOrigin-RevId: 8792604e79ffd54ce776074a4dc3f7d55e63752a
This commit is contained in:
1 parent
9be8d6e1c3
commit
725b3a44f8
31 files changed
+153
-2766
No files matched your search
@@ -24,49 +24,11 @@ const DEFAULT_READ_TIMEOUT: Duration = Duration::from_secs(/*secs*/ 60);
|
||||
#[cfg(not(any(target_os = "macos", windows)))]
|
||||
const DEFAULT_READ_TIMEOUT: Duration = Duration::from_secs(/*secs*/ 10);
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn app_server_shares_flag_selected_code_mode_host_across_threads() -> Result<()> {
|
||||
assert_shared_remote_code_mode_host("ws://127.0.0.1:0").await
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn app_server_shares_flag_selected_grpc_code_mode_host_across_threads() -> Result<()> {
|
||||
assert_shared_remote_code_mode_host("grpc://127.0.0.1:0").await
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn app_server_prewarms_flag_selected_code_mode_host_before_first_turn() -> Result<()> {
|
||||
let model_server = responses::start_mock_server().await;
|
||||
let codex_home = TempDir::new()?;
|
||||
MockResponsesConfig::new(&model_server.uri())
|
||||
.enable_feature(Feature::CodeModePrewarm)
|
||||
.write(codex_home.path())?;
|
||||
|
||||
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await?;
|
||||
let host_url = format!("ws://{}", listener.local_addr()?);
|
||||
let mut app_server = TestAppServer::builder()
|
||||
.with_codex_home(codex_home.path())
|
||||
.with_args(&["--code-mode-host", &host_url])
|
||||
.build_initialized_with_timeout(DEFAULT_READ_TIMEOUT)
|
||||
.await?;
|
||||
app_server
|
||||
.start_thread(ThreadStartParams::default())
|
||||
.await?;
|
||||
|
||||
let (_stalled_connection, _) = timeout(DEFAULT_READ_TIMEOUT, listener.accept())
|
||||
.await
|
||||
.context("code-mode host was not contacted before the first turn")??;
|
||||
let status = timeout(Duration::from_secs(5), app_server.shutdown_gracefully())
|
||||
.await
|
||||
.context("stalled code-mode prewarm blocked thread shutdown")??;
|
||||
assert!(status.success(), "app-server did not exit successfully");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn assert_shared_remote_code_mode_host(listen_url: &str) -> Result<()> {
|
||||
let host_program = codex_utils_cargo_bin::cargo_bin("codex-code-mode-host")?;
|
||||
let mut code_mode_host = Command::new(host_program)
|
||||
.args(["--listen", listen_url])
|
||||
.args(["--listen", "grpc://127.0.0.1:0"])
|
||||
.stdin(Stdio::null())
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::inherit())
|
||||
@@ -174,3 +136,32 @@ async fn assert_shared_remote_code_mode_host(listen_url: &str) -> Result<()> {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn app_server_prewarms_flag_selected_grpc_code_mode_host_before_first_turn() -> Result<()> {
|
||||
let model_server = responses::start_mock_server().await;
|
||||
let codex_home = TempDir::new()?;
|
||||
MockResponsesConfig::new(&model_server.uri())
|
||||
.enable_feature(Feature::CodeModePrewarm)
|
||||
.write(codex_home.path())?;
|
||||
|
||||
let listener = tokio::net::TcpListener::bind("127.0.0.1:0").await?;
|
||||
let host_url = format!("http://{}", listener.local_addr()?);
|
||||
let mut app_server = TestAppServer::builder()
|
||||
.with_codex_home(codex_home.path())
|
||||
.with_args(&["--code-mode-host", &host_url])
|
||||
.build_initialized_with_timeout(DEFAULT_READ_TIMEOUT)
|
||||
.await?;
|
||||
app_server
|
||||
.start_thread(ThreadStartParams::default())
|
||||
.await?;
|
||||
|
||||
let (_stalled_connection, _) = timeout(DEFAULT_READ_TIMEOUT, listener.accept())
|
||||
.await
|
||||
.context("code-mode host was not contacted before the first turn")??;
|
||||
let status = timeout(Duration::from_secs(5), app_server.shutdown_gracefully())
|
||||
.await
|
||||
.context("stalled code-mode prewarm blocked thread shutdown")??;
|
||||
assert!(status.success(), "app-server did not exit successfully");
|
||||
Ok(())
|
||||
}
|
||||
Reference in new issue
Block a user