From ad1146e1fafe38c8861e650780a11392893ff9f0 Mon Sep 17 00:00:00 2001 From: MasterPtato <23087326+MasterPtato@users.noreply.github.com> Date: Fri, 9 Aug 2024 20:35:44 +0000 Subject: [PATCH] fix: fix ds echo build (#1032) ## Changes --- .../dockerfiles/test-ds-echo/Cargo.lock | 16 +++ .../dockerfiles/test-ds-echo/Cargo.toml | 6 +- .../dockerfiles/test-ds-echo/src/main.rs | 98 +++++-------------- .../outputs/game-multiplayer-tag.txt | 2 +- .../outputs/game-multiplayer.tar | 2 +- .../outputs/test-ds-echo-tag.txt | 2 +- infra/default-builds/outputs/test-ds-echo.tar | 4 +- .../outputs/test-fail-immediately-tag.txt | 2 +- .../outputs/test-fail-immediately.tar | 2 +- .../outputs/test-hang-indefinitely-tag.txt | 2 +- .../outputs/test-hang-indefinitely.tar | 2 +- .../outputs/test-mm-lobby-echo-tag.txt | 2 +- .../outputs/test-mm-lobby-echo.tar | 4 +- .../outputs/test-mm-lobby-ready-tag.txt | 2 +- .../outputs/test-mm-lobby-ready.tar | 2 +- .../outputs/test-mm-player-connect-tag.txt | 2 +- .../outputs/test-mm-player-connect.tar | 4 +- .../server-create/tests/print_test_data.rs | 3 +- 18 files changed, 61 insertions(+), 96 deletions(-) diff --git a/infra/default-builds/dockerfiles/test-ds-echo/Cargo.lock b/infra/default-builds/dockerfiles/test-ds-echo/Cargo.lock index 222c374a8..9514d1f00 100644 --- a/infra/default-builds/dockerfiles/test-ds-echo/Cargo.lock +++ b/infra/default-builds/dockerfiles/test-ds-echo/Cargo.lock @@ -178,6 +178,17 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "futures-sink" version = "0.3.30" @@ -197,9 +208,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", + "futures-macro", + "futures-sink", "futures-task", "pin-project-lite", "pin-utils", + "slab", ] [[package]] @@ -815,9 +829,11 @@ name = "test-ds-echo" version = "0.1.0" dependencies = [ "anyhow", + "futures-util", "hyper", "reqwest", "tokio", + "tokio-util", ] [[package]] diff --git a/infra/default-builds/dockerfiles/test-ds-echo/Cargo.toml b/infra/default-builds/dockerfiles/test-ds-echo/Cargo.toml index 8208e11d7..d77bb9b66 100644 --- a/infra/default-builds/dockerfiles/test-ds-echo/Cargo.toml +++ b/infra/default-builds/dockerfiles/test-ds-echo/Cargo.toml @@ -4,10 +4,12 @@ version = "0.1.0" edition = "2021" [dependencies] -tokio = { version = "1.29", features = ["full"] } -reqwest = "0.11" anyhow = "1.0" +futures-util = { version = "0.3", features = ["sink"] } hyper = { version = "0.14", features = ["server"] } +reqwest = "0.11" +tokio = { version = "1.29", features = ["full"] } +tokio-util = "0.7.11" [profile.release] opt-level = 'z' diff --git a/infra/default-builds/dockerfiles/test-ds-echo/src/main.rs b/infra/default-builds/dockerfiles/test-ds-echo/src/main.rs index 89427e450..61e5e164c 100644 --- a/infra/default-builds/dockerfiles/test-ds-echo/src/main.rs +++ b/infra/default-builds/dockerfiles/test-ds-echo/src/main.rs @@ -1,10 +1,9 @@ use std::{convert::Infallible, env, net::SocketAddr, process::Command}; use anyhow::{Context, Result}; -use tokio::{ - io::{AsyncBufReadExt, AsyncWriteExt}, - net::{TcpListener, UdpSocket}, -}; +use futures_util::{sink::SinkExt, stream::StreamExt}; +use tokio::net::{TcpListener, UdpSocket}; +use tokio_util::codec::{BytesCodec, Framed}; #[tokio::main] async fn main() -> Result<()> { @@ -22,44 +21,21 @@ async fn main() -> Result<()> { String::from_utf8_lossy(&output.stdout) ); - // TEMP: Expose dev port - tokio::spawn(with_select_term(echo_http_server(28234))); - - // TODO: Add back - // Echo servers (bridge networking) - // if let Ok(http_port) = env::var("PORT_test_http") { - // let http_port: u16 = http_port.parse()?; - // tokio::spawn(with_select_term(echo_http_server(http_port))); - // } - // - // if let Ok(tcp_port) = env::var("PORT_test_tcp") { - // let tcp_port: u16 = tcp_port.parse()?; - // tokio::spawn(with_select_term(echo_tcp_server(tcp_port))); - // } - // - // if let Ok(udp_port) = env::var("PORT_test_udp") { - // let udp_port: u16 = udp_port.parse()?; - // tokio::spawn(with_select_term(echo_udp_server(udp_port))); - // } - // - // // Echo servers (host networking) - // if let Ok(http_port) = env::var("HOST_PORT_HTTP") { - // let http_port: u16 = http_port.parse()?; - // tokio::spawn(with_select_term(echo_http_server(http_port))); - // } - // - // if let Ok(tcp_port) = env::var("HOST_PORT_TCP") { - // let tcp_port: u16 = tcp_port.parse()?; - // tokio::spawn(with_select_term(echo_tcp_server(tcp_port))); - // } - // - // if let Ok(udp_port) = env::var("HOST_PORT_UDP") { - // let udp_port: u16 = udp_port.parse()?; - // tokio::spawn(with_select_term(echo_udp_server(udp_port))); - // } - - // Lobby ready - // lobby_ready().await?; + // Echo servers + if let Ok(http_port) = env::var("HTTP_PORT") { + let http_port: u16 = http_port.parse()?; + tokio::spawn(with_select_term(echo_http_server(http_port))); + } + + if let Ok(tcp_port) = env::var("TCP_PORT") { + let tcp_port: u16 = tcp_port.parse()?; + tokio::spawn(with_select_term(echo_tcp_server(tcp_port))); + } + + if let Ok(udp_port) = env::var("UDP_PORT") { + let udp_port: u16 = udp_port.parse()?; + tokio::spawn(with_select_term(echo_udp_server(udp_port))); + } // Wait indefinitely println!("Waiting indefinitely..."); @@ -69,25 +45,6 @@ async fn main() -> Result<()> { Ok(()) } -// async fn lobby_ready() -> Result<()> { -// let url = format!( -// "{}/matchmaker/lobbies/ready", -// env::var("RIVET_API_ENDPOINT").context("RIVET_API_ENDPOINT")? -// ); -// let token = env::var("RIVET_TOKEN").context("RIVET_TOKEN")?; -// -// let client = reqwest::Client::new(); -// client -// .post(&url) -// .header("Content-Type", "application/json") -// .header("Authorization", format!("Bearer {}", token)) -// .send() -// .await?; -// -// println!("Success, waiting indefinitely"); -// Ok(()) -// } - /// Waits for the SIGTERM signal. async fn wait_term() -> Result<()> { use tokio::signal::unix::{signal, SignalKind}; @@ -141,22 +98,13 @@ async fn echo_tcp_server(port: u16) -> Result<()> { loop { let (socket, _) = listener.accept().await.context("accept failed")?; tokio::spawn(async move { - let mut reader = tokio::io::BufReader::new(socket); - let mut line = String::new(); - loop { - let bytes_read = reader.read_line(&mut line).await.expect("read line failed"); - if bytes_read == 0 { - break; - } - - // Echo the line - reader - .get_mut() - .write_all(format!("{line}\n").as_bytes()) + let mut framed = Framed::new(socket, BytesCodec::new()); + + while let Some(res) = framed.next().await { + framed + .send(res.expect("read failed")) .await .expect("write failed"); - reader.get_mut().flush().await.expect("flush failed"); - line.clear(); } }); } diff --git a/infra/default-builds/outputs/game-multiplayer-tag.txt b/infra/default-builds/outputs/game-multiplayer-tag.txt index 8ec92a3ea..60493cd23 100644 --- a/infra/default-builds/outputs/game-multiplayer-tag.txt +++ b/infra/default-builds/outputs/game-multiplayer-tag.txt @@ -1 +1 @@ -game-multiplayer:1717019324 \ No newline at end of file +game-multiplayer:1723062223 \ No newline at end of file diff --git a/infra/default-builds/outputs/game-multiplayer.tar b/infra/default-builds/outputs/game-multiplayer.tar index 3429208fd..cf7a3fc7f 100644 --- a/infra/default-builds/outputs/game-multiplayer.tar +++ b/infra/default-builds/outputs/game-multiplayer.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:465c89cb386883b35a63fa2e07a5e34d5839ce025342988c2c281ace41eda98d +oid sha256:7f76656bc4fa3c90068cd123e9bc9491030aa23434ae90bfe3c7a09cd4308476 size 8397824 diff --git a/infra/default-builds/outputs/test-ds-echo-tag.txt b/infra/default-builds/outputs/test-ds-echo-tag.txt index e41e02271..f7340d824 100644 --- a/infra/default-builds/outputs/test-ds-echo-tag.txt +++ b/infra/default-builds/outputs/test-ds-echo-tag.txt @@ -1 +1 @@ -test-ds-echo:1719995033 \ No newline at end of file +test-ds-echo:1723071093 \ No newline at end of file diff --git a/infra/default-builds/outputs/test-ds-echo.tar b/infra/default-builds/outputs/test-ds-echo.tar index fe0434cce..e44a4d573 100644 --- a/infra/default-builds/outputs/test-ds-echo.tar +++ b/infra/default-builds/outputs/test-ds-echo.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a75331b6eb2cab6edf6fc07ac60683e7f73aa8d989fbe6a2e8e3550806ef237b -size 10483712 +oid sha256:bb862183cdb553e5ce8a2505bb11ed8facc37eb9e767af77198f930ff6d34ceb +size 10588672 diff --git a/infra/default-builds/outputs/test-fail-immediately-tag.txt b/infra/default-builds/outputs/test-fail-immediately-tag.txt index 2bd3ccf83..315130402 100644 --- a/infra/default-builds/outputs/test-fail-immediately-tag.txt +++ b/infra/default-builds/outputs/test-fail-immediately-tag.txt @@ -1 +1 @@ -test-fail-immediately:1717019324 \ No newline at end of file +test-fail-immediately:1723062223 \ No newline at end of file diff --git a/infra/default-builds/outputs/test-fail-immediately.tar b/infra/default-builds/outputs/test-fail-immediately.tar index c98d8ceab..202c2bcc3 100644 --- a/infra/default-builds/outputs/test-fail-immediately.tar +++ b/infra/default-builds/outputs/test-fail-immediately.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27293d2f6c2fe63431af0044ee61045c4cbef741a7f3c02ca0584f2904ead4a2 +oid sha256:be24d6a7e1be923427786915044d91691bc5ca2021597f61eea20d30fe04b100 size 5918720 diff --git a/infra/default-builds/outputs/test-hang-indefinitely-tag.txt b/infra/default-builds/outputs/test-hang-indefinitely-tag.txt index db58ef7b1..dd0232026 100644 --- a/infra/default-builds/outputs/test-hang-indefinitely-tag.txt +++ b/infra/default-builds/outputs/test-hang-indefinitely-tag.txt @@ -1 +1 @@ -test-hang-indefinitely:1717019324 \ No newline at end of file +test-hang-indefinitely:1723062223 \ No newline at end of file diff --git a/infra/default-builds/outputs/test-hang-indefinitely.tar b/infra/default-builds/outputs/test-hang-indefinitely.tar index d60e937a8..8b939687b 100644 --- a/infra/default-builds/outputs/test-hang-indefinitely.tar +++ b/infra/default-builds/outputs/test-hang-indefinitely.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95687b16fda0e490cef324b927601ca456df18e1d854690ed46320091557005d +oid sha256:77ff37874340fc828ce5d63e6d8bdf4df983fe019e58e709e99569068132d3cf size 5918720 diff --git a/infra/default-builds/outputs/test-mm-lobby-echo-tag.txt b/infra/default-builds/outputs/test-mm-lobby-echo-tag.txt index 5bbff24bf..fcd9bff6a 100644 --- a/infra/default-builds/outputs/test-mm-lobby-echo-tag.txt +++ b/infra/default-builds/outputs/test-mm-lobby-echo-tag.txt @@ -1 +1 @@ -test-mm-lobby-echo:1717019324 \ No newline at end of file +test-mm-lobby-echo:1723062223 \ No newline at end of file diff --git a/infra/default-builds/outputs/test-mm-lobby-echo.tar b/infra/default-builds/outputs/test-mm-lobby-echo.tar index 01a739ef4..bc4de8341 100644 --- a/infra/default-builds/outputs/test-mm-lobby-echo.tar +++ b/infra/default-builds/outputs/test-mm-lobby-echo.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d7c0d649b9f292072e05ad4c38a732971b889f24e094882b885a63f016483ab -size 18330112 +oid sha256:31bbdec9a8a1e971afec71064eb2116d82f246e06734d1753f46136bca20400b +size 18341376 diff --git a/infra/default-builds/outputs/test-mm-lobby-ready-tag.txt b/infra/default-builds/outputs/test-mm-lobby-ready-tag.txt index ff82bb667..b54df7a0c 100644 --- a/infra/default-builds/outputs/test-mm-lobby-ready-tag.txt +++ b/infra/default-builds/outputs/test-mm-lobby-ready-tag.txt @@ -1 +1 @@ -test-mm-lobby-ready:1717019324 \ No newline at end of file +test-mm-lobby-ready:1723062223 \ No newline at end of file diff --git a/infra/default-builds/outputs/test-mm-lobby-ready.tar b/infra/default-builds/outputs/test-mm-lobby-ready.tar index ee9d394e3..c51f554cf 100644 --- a/infra/default-builds/outputs/test-mm-lobby-ready.tar +++ b/infra/default-builds/outputs/test-mm-lobby-ready.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8656c4831f5b80a197e04d7f1daef5af6587c405d3eb6f6ce5a46d6c871d3754 +oid sha256:d8c11c36d10521036945ff3c824f9ed30a4fbf5f09b24159d30bf4af93f532fa size 15896576 diff --git a/infra/default-builds/outputs/test-mm-player-connect-tag.txt b/infra/default-builds/outputs/test-mm-player-connect-tag.txt index 2b0525bad..8e911eca4 100644 --- a/infra/default-builds/outputs/test-mm-player-connect-tag.txt +++ b/infra/default-builds/outputs/test-mm-player-connect-tag.txt @@ -1 +1 @@ -test-mm-player-connect:1717019324 \ No newline at end of file +test-mm-player-connect:1723062223 \ No newline at end of file diff --git a/infra/default-builds/outputs/test-mm-player-connect.tar b/infra/default-builds/outputs/test-mm-player-connect.tar index 966e7b6a7..cc2eb66ed 100644 --- a/infra/default-builds/outputs/test-mm-player-connect.tar +++ b/infra/default-builds/outputs/test-mm-player-connect.tar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c5d3dffaf736ef70b1217442d53c2e7930be26c6454833fd7335a752df0edf88 -size 272893440 +oid sha256:8ff752b983b60488eedc6e4a9f78bebba3490479f70e5cda575e57d2b85009c0 +size 272918016 diff --git a/svc/pkg/ds/ops/server-create/tests/print_test_data.rs b/svc/pkg/ds/ops/server-create/tests/print_test_data.rs index 4421f42cc..026b93c31 100644 --- a/svc/pkg/ds/ops/server-create/tests/print_test_data.rs +++ b/svc/pkg/ds/ops/server-create/tests/print_test_data.rs @@ -94,7 +94,7 @@ async fn print_test_data(ctx: TestCtx) { )), }]}, )), - label: Some("game_service".to_owned()), + label: Some("cloud".to_owned()), ..Default::default() }) .await @@ -128,7 +128,6 @@ async fn print_test_data(ctx: TestCtx) { cloud_token = ?cloud_token_res.token.clone().unwrap().token, invalid_token = ?invalid_token.token.clone().unwrap().token, build_id = ?build_res.build_id.unwrap(), - game_id = ?game_id, "test data"); // // let runtime = Some(