From d7ec799d3565adc0503dd2f5c42c3953cbdd1fb9 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 1 Nov 2023 00:00:00 +0000 Subject: build(test) fix running tests together use a patched websocket server that releases port after x connections enabling its use in many tests included in the same test run --- Cargo.lock | 41 ++++------------------------------------- test_utils/Cargo.toml | 2 +- test_utils/src/relay.rs | 17 ++++++++--------- tests/prs_create.rs | 14 +++++++++++++- 4 files changed, 26 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e977d30..ea83740 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1628,7 +1628,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-socks", - "tokio-tungstenite 0.20.1", + "tokio-tungstenite", "url-fork", "webpki-roots", "ws_stream_wasm", @@ -2554,13 +2554,11 @@ dependencies = [ [[package]] name = "simple-websockets" version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f38cc14717bb624d10e9bb4fff30344e8f540c0d2c0f876f8fb0111d808ee7c" dependencies = [ "flume", "futures-util", "tokio", - "tokio-tungstenite 0.19.0", + "tokio-tungstenite", ] [[package]] @@ -2717,7 +2715,7 @@ dependencies = [ "rexpect 0.5.0 (git+https://github.com/phaer/rexpect.git?branch=skip-ansi-escape-codes)", "simple-websockets", "strip-ansi-escapes", - "tungstenite 0.20.1", + "tungstenite", ] [[package]] @@ -2807,18 +2805,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-tungstenite" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" -dependencies = [ - "futures-util", - "log", - "tokio", - "tungstenite 0.19.0", -] - [[package]] name = "tokio-tungstenite" version = "0.20.1" @@ -2830,7 +2816,7 @@ dependencies = [ "rustls", "tokio", "tokio-rustls", - "tungstenite 0.20.1", + "tungstenite", "webpki-roots", ] @@ -2909,25 +2895,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" -[[package]] -name = "tungstenite" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "rand", - "sha1", - "thiserror", - "url", - "utf-8", -] - [[package]] name = "tungstenite" version = "0.20.1" diff --git a/test_utils/Cargo.toml b/test_utils/Cargo.toml index 6a3fff8..7901b13 100644 --- a/test_utils/Cargo.toml +++ b/test_utils/Cargo.toml @@ -13,6 +13,6 @@ nostr = "0.24.0" once_cell = "1.18.0" rand = "0.8" rexpect = { git = "https://github.com/phaer/rexpect.git", branch= "skip-ansi-escape-codes" } -simple-websockets = "0.1.6" +simple-websockets = {path = "../../simple-websockets" } strip-ansi-escapes = "0.2.0" tungstenite = "0.20.1" diff --git a/test_utils/src/relay.rs b/test_utils/src/relay.rs index ce618a3..db6a96c 100644 --- a/test_utils/src/relay.rs +++ b/test_utils/src/relay.rs @@ -91,12 +91,6 @@ impl<'a> Relay<'a> { self.respond_eose(client_id, subscription_id.clone()) } - pub fn shutdown(&mut self) -> Result<()> { - let (mut socket, _) = tungstenite::connect(format!("ws://localhost:{}", self.port))?; - socket.write(tungstenite::Message::text("shut me down"))?; - socket.close(None)?; - Ok(()) - } /// listen, collect events and responds with event_listener to events or /// Ok(eventid) if event_listner is None pub async fn listen_until_close(&mut self) -> Result<()> { @@ -159,9 +153,14 @@ impl<'a> Relay<'a> { } pub fn shutdown_relay(port: u64) -> Result<()> { - let (mut socket, _) = tungstenite::connect(format!("ws://localhost:{}", port))?; - socket.write(tungstenite::Message::text("shut me down"))?; - socket.close(None)?; + let mut counter = 0; + while let Ok((mut socket, _)) = tungstenite::connect(format!("ws://localhost:{}", port)) { + counter += 1; + if counter == 1 { + socket.write(tungstenite::Message::text("shut me down"))?; + } + socket.close(None)?; + } Ok(()) } diff --git a/tests/prs_create.rs b/tests/prs_create.rs index 564ef16..42f83b4 100644 --- a/tests/prs_create.rs +++ b/tests/prs_create.rs @@ -204,6 +204,9 @@ mod sends_pr_and_2_patches_to_3_relays { let cli_tester_handle = std::thread::spawn(move || -> Result<()> { let mut p = cli_tester_create_pr(&git_repo); p.expect_end_eventually()?; + for p in [51, 52, 53] { + relay::shutdown_relay(8000 + p)?; + } Ok(()) }); @@ -419,7 +422,6 @@ mod sends_pr_and_2_patches_to_3_relays { Ok(()) } } - mod cli_ouput { use super::*; @@ -446,6 +448,9 @@ mod sends_pr_and_2_patches_to_3_relays { 3, )?; p.expect_end_with_whitespace()?; + for p in [51, 52, 53] { + relay::shutdown_relay(8000 + p)?; + } Ok(()) }); @@ -493,6 +498,9 @@ mod sends_pr_and_2_patches_to_3_relays { let cli_tester_handle = std::thread::spawn(move || -> Result<()> { let mut p = cli_tester_create_pr(&git_repo); p.expect_end_eventually()?; + for p in [51, 52, 53] { + relay::shutdown_relay(8000 + p)?; + } Ok(()) }); @@ -554,6 +562,10 @@ mod sends_pr_and_2_patches_to_3_relays { 3, )?; p.expect_end_with_whitespace()?; + for p in [51, 52, 53] { + relay::shutdown_relay(8000 + p)?; + } + Ok(()) }); -- cgit v1.2.3