From 9709b54c571ec20631c4d26b0805b3fd13a47cfd Mon Sep 17 00:00:00 2001 From: Deirdre Connolly Date: Tue, 10 Dec 2019 16:45:19 -0500 Subject: [PATCH] Fix proptest-regressions locations after reorganizations of files --- Cargo.lock | 2 +- zebra-network/Cargo.toml | 2 ++ .../protocol/internal/request.txt | 8 +++++++ .../src/protocol/internal/request.rs | 20 +++++++++++++++++ .../src/protocol/internal/response.rs | 22 ++++++++++++++++++- 5 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 zebra-network/proptest-regressions/protocol/internal/request.txt diff --git a/Cargo.lock b/Cargo.lock index ada95989..5f3e231f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1751,4 +1751,4 @@ dependencies = [ name = "zeroize" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" +checksum = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" \ No newline at end of file diff --git a/zebra-network/Cargo.toml b/zebra-network/Cargo.toml index 92321005..c40fbecf 100644 --- a/zebra-network/Cargo.toml +++ b/zebra-network/Cargo.toml @@ -17,6 +17,8 @@ hex = "0.4" # which we don't use, so disable it to drop the dependencies. indexmap = { version = "1.2", default-features = false } pin-project = "0.4" +proptest = "0.9" +proptest-derive = "0.1.0" rand = "0.7" serde = { version = "1", features = ["serde_derive"] } thiserror = "1" diff --git a/zebra-network/proptest-regressions/protocol/internal/request.txt b/zebra-network/proptest-regressions/protocol/internal/request.txt new file mode 100644 index 00000000..3f172403 --- /dev/null +++ b/zebra-network/proptest-regressions/protocol/internal/request.txt @@ -0,0 +1,8 @@ +# Seeds for failure cases proptest has generated in the past. It is +# automatically read and these particular cases re-run before any +# novel cases are generated. +# +# It is recommended to check this file in to source control so that +# everyone who runs the test benefits from these saved cases. +cc fb728d0d2a16976de785ed8525cc74c4d3f7826f8840ebe5a4fee6b5ab0edad8 # shrinks to req = GetMempool +cc 3ed95f3a436a15e33b27f4bf1105629860b8e6a895165eb83befcb625e951b1d # shrinks to req = GetPeers diff --git a/zebra-network/src/protocol/internal/request.rs b/zebra-network/src/protocol/internal/request.rs index bfeb5bff..35bf6960 100644 --- a/zebra-network/src/protocol/internal/request.rs +++ b/zebra-network/src/protocol/internal/request.rs @@ -1,20 +1,40 @@ +#[cfg(test)] +use proptest_derive::Arbitrary; + use crate::meta_addr::MetaAddr; use super::super::types::Nonce; /// A network request, represented in internal format. #[derive(Clone, Debug, Eq, PartialEq)] +#[cfg_attr(test, derive(Arbitrary))] pub enum Request { /// Requests additional peers from the server. GetPeers, /// Advertises peers to the remote server. + #[cfg_attr(test, proptest(skip))] PushPeers(Vec), /// Heartbeats triggered on peer connection start. // This is included as a bit of a hack, it should only be used // internally for connection management. You should not expect to // be firing or handling `Ping` requests or `Pong` responses. + #[cfg_attr(test, proptest(skip))] Ping(Nonce), /// Requests the transactions the remote server has verified but /// not yet confirmed. GetMempool, } + +#[cfg(test)] +mod test { + use proptest::prelude::*; + + use super::Request; + + proptest! { + #[test] + fn proptest_response(res in any::()) { + println!("{:?}", res); + } + } +} diff --git a/zebra-network/src/protocol/internal/response.rs b/zebra-network/src/protocol/internal/response.rs index 8441e507..49545489 100644 --- a/zebra-network/src/protocol/internal/response.rs +++ b/zebra-network/src/protocol/internal/response.rs @@ -1,5 +1,8 @@ use std::error::Error; +#[cfg(test)] +use proptest_derive::Arbitrary; + // XXX clean module layout of zebra_chain use zebra_chain::transaction::Transaction; @@ -7,14 +10,17 @@ use crate::meta_addr::MetaAddr; /// A response to a network request, represented in internal format. #[derive(Clone, Debug, Eq, PartialEq)] +#[cfg_attr(test, derive(Arbitrary))] pub enum Response { /// Generic success. Ok, /// Generic error. Error, /// A list of peers, used to respond to `GetPeers`. + #[cfg_attr(test, proptest(skip))] Peers(Vec), - /// A list of transactions, such as in response to `GetMempool`. + /// A list of transactions, such as in response to `GetMempool + #[cfg_attr(test, proptest(skip))] Transactions(Vec), } @@ -26,3 +32,17 @@ where Self::Error } } + +#[cfg(test)] +mod test { + use proptest::prelude::*; + + use super::Response; + + proptest! { + #[test] + fn proptest_response(res in any::()) { + println!("{:?}", res); + } + } +}