diff --git a/Cargo.lock b/Cargo.lock index 8112055e..842b7bd8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2896,6 +2896,7 @@ dependencies = [ "quickcheck", "quinn", "rand 0.8.5", + "rand_xorshift", "rcgen 0.10.0", "ring 0.16.20", "rustls 0.20.8", @@ -4180,6 +4181,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rayon" version = "1.7.0" diff --git a/Cargo.toml b/Cargo.toml index fc0b875f..dcb6fbef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -79,6 +79,7 @@ libp2p = { version = "0.51.3", features = [ "quic", ]} quickcheck = "1.0.3" +rand_xorshift = "0.3.0" sc-network = "0.28.0" sc-utils = "8.0.0" serde_json = "1.0.108" diff --git a/tests/protocol/request_response.rs b/tests/protocol/request_response.rs index a9d32ed1..4d15e42e 100644 --- a/tests/protocol/request_response.rs +++ b/tests/protocol/request_response.rs @@ -36,6 +36,8 @@ use litep2p::{ use futures::{channel, StreamExt}; use multiaddr::{Multiaddr, Protocol}; use multihash::Multihash; +use rand::{Rng, SeedableRng}; +use rand_xorshift::XorShiftRng; use tokio::time::sleep; use std::{ @@ -2582,7 +2584,10 @@ async fn large_response(transport1: Transport, transport2: Transport) { } }); - let response = vec![0; 15 * 1024 * 1024]; + // Generate the response first and use a fast insecure RNG to make the test not timeout on + // GitHub CI when generating 15 MB of data. + let mut rng = XorShiftRng::from_rng(rand::thread_rng()).expect("`thread_rng` to seed"); + let response = (0..15 * 1024 * 1024).map(|_| rng.gen::()).collect::>(); let request_id = handle1.try_send_request(peer2, vec![1, 3, 3, 7], DialOptions::Reject).unwrap();