diff options
Diffstat (limited to 'test_util/src')
-rw-r--r-- | test_util/src/lib.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test_util/src/lib.rs b/test_util/src/lib.rs index 3fdc4db93..23cf6a026 100644 --- a/test_util/src/lib.rs +++ b/test_util/src/lib.rs @@ -85,6 +85,7 @@ const HTTPS_CLIENT_AUTH_PORT: u16 = 5552; const WS_PORT: u16 = 4242; const WSS_PORT: u16 = 4243; const WS_CLOSE_PORT: u16 = 4244; +const WS_PING_PORT: u16 = 4245; pub const PERMISSION_VARIANTS: [&str; 5] = ["read", "write", "env", "net", "run"]; @@ -330,6 +331,36 @@ async fn run_ws_server(addr: &SocketAddr) { } } +async fn run_ws_ping_server(addr: &SocketAddr) { + let listener = TcpListener::bind(addr).await.unwrap(); + println!("ready: ws"); // Eye catcher for HttpServerCount + while let Ok((stream, _addr)) = listener.accept().await { + tokio::spawn(async move { + let ws_stream = accept_async(stream).await; + use futures::SinkExt; + use tokio_tungstenite::tungstenite::Message; + if let Ok(mut ws_stream) = ws_stream { + for i in 0..9 { + ws_stream.send(Message::Ping(vec![])).await.unwrap(); + + let msg = ws_stream.next().await.unwrap().unwrap(); + assert_eq!(msg, Message::Pong(vec![])); + + ws_stream + .send(Message::Text(format!("hello {}", i))) + .await + .unwrap(); + + let msg = ws_stream.next().await.unwrap().unwrap(); + assert_eq!(msg, Message::Text(format!("hello {}", i))); + } + + ws_stream.close(None).await.unwrap(); + } + }); + } +} + async fn run_ws_close_server(addr: &SocketAddr) { let listener = TcpListener::bind(addr).await.unwrap(); while let Ok((stream, _addr)) = listener.accept().await { @@ -1486,6 +1517,8 @@ pub async fn run_all_servers() { let ws_addr = SocketAddr::from(([127, 0, 0, 1], WS_PORT)); let ws_server_fut = run_ws_server(&ws_addr); + let ws_ping_addr = SocketAddr::from(([127, 0, 0, 1], WS_PING_PORT)); + let ws_ping_server_fut = run_ws_ping_server(&ws_ping_addr); let wss_addr = SocketAddr::from(([127, 0, 0, 1], WSS_PORT)); let wss_server_fut = run_wss_server(&wss_addr); let ws_close_addr = SocketAddr::from(([127, 0, 0, 1], WS_CLOSE_PORT)); @@ -1503,6 +1536,7 @@ pub async fn run_all_servers() { futures::join!( redirect_server_fut, ws_server_fut, + ws_ping_server_fut, wss_server_fut, tls_server_fut, tls_client_auth_server_fut, |