diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2023-11-01 00:00:00 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2023-11-01 00:00:00 +0000 |
| commit | d7ec799d3565adc0503dd2f5c42c3953cbdd1fb9 (patch) | |
| tree | d454046cb75d1c183c91455ac0adc955f477c7eb | |
| parent | 497bf71910f0f224ce66b154d58a228095a40c0a (diff) | |
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
| -rw-r--r-- | Cargo.lock | 41 | ||||
| -rw-r--r-- | test_utils/Cargo.toml | 2 | ||||
| -rw-r--r-- | test_utils/src/relay.rs | 17 | ||||
| -rw-r--r-- | tests/prs_create.rs | 14 |
4 files changed, 26 insertions, 48 deletions
| @@ -1628,7 +1628,7 @@ dependencies = [ | |||
| 1628 | "tokio", | 1628 | "tokio", |
| 1629 | "tokio-rustls", | 1629 | "tokio-rustls", |
| 1630 | "tokio-socks", | 1630 | "tokio-socks", |
| 1631 | "tokio-tungstenite 0.20.1", | 1631 | "tokio-tungstenite", |
| 1632 | "url-fork", | 1632 | "url-fork", |
| 1633 | "webpki-roots", | 1633 | "webpki-roots", |
| 1634 | "ws_stream_wasm", | 1634 | "ws_stream_wasm", |
| @@ -2554,13 +2554,11 @@ dependencies = [ | |||
| 2554 | [[package]] | 2554 | [[package]] |
| 2555 | name = "simple-websockets" | 2555 | name = "simple-websockets" |
| 2556 | version = "0.1.6" | 2556 | version = "0.1.6" |
| 2557 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2558 | checksum = "7f38cc14717bb624d10e9bb4fff30344e8f540c0d2c0f876f8fb0111d808ee7c" | ||
| 2559 | dependencies = [ | 2557 | dependencies = [ |
| 2560 | "flume", | 2558 | "flume", |
| 2561 | "futures-util", | 2559 | "futures-util", |
| 2562 | "tokio", | 2560 | "tokio", |
| 2563 | "tokio-tungstenite 0.19.0", | 2561 | "tokio-tungstenite", |
| 2564 | ] | 2562 | ] |
| 2565 | 2563 | ||
| 2566 | [[package]] | 2564 | [[package]] |
| @@ -2717,7 +2715,7 @@ dependencies = [ | |||
| 2717 | "rexpect 0.5.0 (git+https://github.com/phaer/rexpect.git?branch=skip-ansi-escape-codes)", | 2715 | "rexpect 0.5.0 (git+https://github.com/phaer/rexpect.git?branch=skip-ansi-escape-codes)", |
| 2718 | "simple-websockets", | 2716 | "simple-websockets", |
| 2719 | "strip-ansi-escapes", | 2717 | "strip-ansi-escapes", |
| 2720 | "tungstenite 0.20.1", | 2718 | "tungstenite", |
| 2721 | ] | 2719 | ] |
| 2722 | 2720 | ||
| 2723 | [[package]] | 2721 | [[package]] |
| @@ -2809,18 +2807,6 @@ dependencies = [ | |||
| 2809 | 2807 | ||
| 2810 | [[package]] | 2808 | [[package]] |
| 2811 | name = "tokio-tungstenite" | 2809 | name = "tokio-tungstenite" |
| 2812 | version = "0.19.0" | ||
| 2813 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2814 | checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" | ||
| 2815 | dependencies = [ | ||
| 2816 | "futures-util", | ||
| 2817 | "log", | ||
| 2818 | "tokio", | ||
| 2819 | "tungstenite 0.19.0", | ||
| 2820 | ] | ||
| 2821 | |||
| 2822 | [[package]] | ||
| 2823 | name = "tokio-tungstenite" | ||
| 2824 | version = "0.20.1" | 2810 | version = "0.20.1" |
| 2825 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2811 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2826 | checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" | 2812 | checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" |
| @@ -2830,7 +2816,7 @@ dependencies = [ | |||
| 2830 | "rustls", | 2816 | "rustls", |
| 2831 | "tokio", | 2817 | "tokio", |
| 2832 | "tokio-rustls", | 2818 | "tokio-rustls", |
| 2833 | "tungstenite 0.20.1", | 2819 | "tungstenite", |
| 2834 | "webpki-roots", | 2820 | "webpki-roots", |
| 2835 | ] | 2821 | ] |
| 2836 | 2822 | ||
| @@ -2911,25 +2897,6 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" | |||
| 2911 | 2897 | ||
| 2912 | [[package]] | 2898 | [[package]] |
| 2913 | name = "tungstenite" | 2899 | name = "tungstenite" |
| 2914 | version = "0.19.0" | ||
| 2915 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2916 | checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" | ||
| 2917 | dependencies = [ | ||
| 2918 | "byteorder", | ||
| 2919 | "bytes", | ||
| 2920 | "data-encoding", | ||
| 2921 | "http", | ||
| 2922 | "httparse", | ||
| 2923 | "log", | ||
| 2924 | "rand", | ||
| 2925 | "sha1", | ||
| 2926 | "thiserror", | ||
| 2927 | "url", | ||
| 2928 | "utf-8", | ||
| 2929 | ] | ||
| 2930 | |||
| 2931 | [[package]] | ||
| 2932 | name = "tungstenite" | ||
| 2933 | version = "0.20.1" | 2900 | version = "0.20.1" |
| 2934 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2901 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2935 | checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" | 2902 | checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" |
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" | |||
| 13 | once_cell = "1.18.0" | 13 | once_cell = "1.18.0" |
| 14 | rand = "0.8" | 14 | rand = "0.8" |
| 15 | rexpect = { git = "https://github.com/phaer/rexpect.git", branch= "skip-ansi-escape-codes" } | 15 | rexpect = { git = "https://github.com/phaer/rexpect.git", branch= "skip-ansi-escape-codes" } |
| 16 | simple-websockets = "0.1.6" | 16 | simple-websockets = {path = "../../simple-websockets" } |
| 17 | strip-ansi-escapes = "0.2.0" | 17 | strip-ansi-escapes = "0.2.0" |
| 18 | tungstenite = "0.20.1" | 18 | 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> { | |||
| 91 | self.respond_eose(client_id, subscription_id.clone()) | 91 | self.respond_eose(client_id, subscription_id.clone()) |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | pub fn shutdown(&mut self) -> Result<()> { | ||
| 95 | let (mut socket, _) = tungstenite::connect(format!("ws://localhost:{}", self.port))?; | ||
| 96 | socket.write(tungstenite::Message::text("shut me down"))?; | ||
| 97 | socket.close(None)?; | ||
| 98 | Ok(()) | ||
| 99 | } | ||
| 100 | /// listen, collect events and responds with event_listener to events or | 94 | /// listen, collect events and responds with event_listener to events or |
| 101 | /// Ok(eventid) if event_listner is None | 95 | /// Ok(eventid) if event_listner is None |
| 102 | pub async fn listen_until_close(&mut self) -> Result<()> { | 96 | pub async fn listen_until_close(&mut self) -> Result<()> { |
| @@ -159,9 +153,14 @@ impl<'a> Relay<'a> { | |||
| 159 | } | 153 | } |
| 160 | 154 | ||
| 161 | pub fn shutdown_relay(port: u64) -> Result<()> { | 155 | pub fn shutdown_relay(port: u64) -> Result<()> { |
| 162 | let (mut socket, _) = tungstenite::connect(format!("ws://localhost:{}", port))?; | 156 | let mut counter = 0; |
| 163 | socket.write(tungstenite::Message::text("shut me down"))?; | 157 | while let Ok((mut socket, _)) = tungstenite::connect(format!("ws://localhost:{}", port)) { |
| 164 | socket.close(None)?; | 158 | counter += 1; |
| 159 | if counter == 1 { | ||
| 160 | socket.write(tungstenite::Message::text("shut me down"))?; | ||
| 161 | } | ||
| 162 | socket.close(None)?; | ||
| 163 | } | ||
| 165 | Ok(()) | 164 | Ok(()) |
| 166 | } | 165 | } |
| 167 | 166 | ||
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 { | |||
| 204 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | 204 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { |
| 205 | let mut p = cli_tester_create_pr(&git_repo); | 205 | let mut p = cli_tester_create_pr(&git_repo); |
| 206 | p.expect_end_eventually()?; | 206 | p.expect_end_eventually()?; |
| 207 | for p in [51, 52, 53] { | ||
| 208 | relay::shutdown_relay(8000 + p)?; | ||
| 209 | } | ||
| 207 | Ok(()) | 210 | Ok(()) |
| 208 | }); | 211 | }); |
| 209 | 212 | ||
| @@ -419,7 +422,6 @@ mod sends_pr_and_2_patches_to_3_relays { | |||
| 419 | Ok(()) | 422 | Ok(()) |
| 420 | } | 423 | } |
| 421 | } | 424 | } |
| 422 | |||
| 423 | mod cli_ouput { | 425 | mod cli_ouput { |
| 424 | use super::*; | 426 | use super::*; |
| 425 | 427 | ||
| @@ -446,6 +448,9 @@ mod sends_pr_and_2_patches_to_3_relays { | |||
| 446 | 3, | 448 | 3, |
| 447 | )?; | 449 | )?; |
| 448 | p.expect_end_with_whitespace()?; | 450 | p.expect_end_with_whitespace()?; |
| 451 | for p in [51, 52, 53] { | ||
| 452 | relay::shutdown_relay(8000 + p)?; | ||
| 453 | } | ||
| 449 | Ok(()) | 454 | Ok(()) |
| 450 | }); | 455 | }); |
| 451 | 456 | ||
| @@ -493,6 +498,9 @@ mod sends_pr_and_2_patches_to_3_relays { | |||
| 493 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | 498 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { |
| 494 | let mut p = cli_tester_create_pr(&git_repo); | 499 | let mut p = cli_tester_create_pr(&git_repo); |
| 495 | p.expect_end_eventually()?; | 500 | p.expect_end_eventually()?; |
| 501 | for p in [51, 52, 53] { | ||
| 502 | relay::shutdown_relay(8000 + p)?; | ||
| 503 | } | ||
| 496 | Ok(()) | 504 | Ok(()) |
| 497 | }); | 505 | }); |
| 498 | 506 | ||
| @@ -554,6 +562,10 @@ mod sends_pr_and_2_patches_to_3_relays { | |||
| 554 | 3, | 562 | 3, |
| 555 | )?; | 563 | )?; |
| 556 | p.expect_end_with_whitespace()?; | 564 | p.expect_end_with_whitespace()?; |
| 565 | for p in [51, 52, 53] { | ||
| 566 | relay::shutdown_relay(8000 + p)?; | ||
| 567 | } | ||
| 568 | |||
| 557 | Ok(()) | 569 | Ok(()) |
| 558 | }); | 570 | }); |
| 559 | 571 | ||