mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-05-11 10:27:15 +00:00
refactor(interop-test): remove easy to replace strum
dependency
We only use `strum` for the interop-tests but we add 3 dependencies to a full build of the repository for it, including a proc-macro which needs to be pipelined in front of other crates which makes them hard to parallelize. Remove it in favor of fairly trivial reimplementation of `FromStr`. Pull-Request: #3513.
This commit is contained in:
parent
52a32ffac1
commit
2ca93e12c5
29
Cargo.lock
generated
29
Cargo.lock
generated
@ -1975,7 +1975,6 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"redis",
|
"redis",
|
||||||
"strum",
|
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -4140,12 +4139,6 @@ dependencies = [
|
|||||||
"base64 0.21.0",
|
"base64 0.21.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rustversion"
|
|
||||||
version = "1.0.11"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rw-stream-sink"
|
name = "rw-stream-sink"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
@ -4463,28 +4456,6 @@ version = "0.10.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "strum"
|
|
||||||
version = "0.24.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
|
|
||||||
dependencies = [
|
|
||||||
"strum_macros",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "strum_macros"
|
|
||||||
version = "0.24.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59"
|
|
||||||
dependencies = [
|
|
||||||
"heck",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"rustversion",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stun"
|
name = "stun"
|
||||||
version = "0.4.4"
|
version = "0.4.4"
|
||||||
|
@ -14,5 +14,4 @@ libp2p = { path = "../", features = ["websocket", "quic", "mplex", "yamux", "tc
|
|||||||
log = "0.4"
|
log = "0.4"
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
redis = { version = "0.22.1", default-features = false, features = ["tokio-comp"] }
|
redis = { version = "0.22.1", default-features = false, features = ["tokio-comp"] }
|
||||||
strum = { version = "0.24.1", features = ["derive"] }
|
|
||||||
tokio = { version = "1.24.1", features = ["full"] }
|
tokio = { version = "1.24.1", features = ["full"] }
|
||||||
|
@ -17,14 +17,13 @@ use libp2p::{
|
|||||||
OutboundUpgradeExt, PeerId, Swarm, Transport as _,
|
OutboundUpgradeExt, PeerId, Swarm, Transport as _,
|
||||||
};
|
};
|
||||||
use redis::AsyncCommands;
|
use redis::AsyncCommands;
|
||||||
use strum::EnumString;
|
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
let local_key = identity::Keypair::generate_ed25519();
|
let local_key = identity::Keypair::generate_ed25519();
|
||||||
let local_peer_id = PeerId::from(local_key.public());
|
let local_peer_id = PeerId::from(local_key.public());
|
||||||
|
|
||||||
let transport_param: Transport = from_env("transport").context("unsupported transport")?;
|
let transport_param: Transport = from_env("transport")?;
|
||||||
|
|
||||||
let ip = env::var("ip").context("ip environment variable is not set")?;
|
let ip = env::var("ip").context("ip environment variable is not set")?;
|
||||||
|
|
||||||
@ -172,7 +171,7 @@ fn secure_channel_protocol_from_env<C: AsyncRead + AsyncWrite + Unpin + Send + '
|
|||||||
MapSecOutputFn<C>,
|
MapSecOutputFn<C>,
|
||||||
>,
|
>,
|
||||||
> {
|
> {
|
||||||
let either_sec_upgrade = match from_env("security").context("unsupported secure channel")? {
|
let either_sec_upgrade = match from_env("security")? {
|
||||||
SecProtocol::Noise => Either::Left(
|
SecProtocol::Noise => Either::Left(
|
||||||
noise::NoiseAuthenticated::xx(identity).context("failed to intialise noise")?,
|
noise::NoiseAuthenticated::xx(identity).context("failed to intialise noise")?,
|
||||||
),
|
),
|
||||||
@ -199,17 +198,14 @@ fn factor_peer_id<C>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn muxer_protocol_from_env() -> Result<Either<yamux::YamuxConfig, mplex::MplexConfig>> {
|
fn muxer_protocol_from_env() -> Result<Either<yamux::YamuxConfig, mplex::MplexConfig>> {
|
||||||
Ok(
|
Ok(match from_env("muxer")? {
|
||||||
match from_env("muxer").context("unsupported multiplexer")? {
|
Muxer::Yamux => Either::Left(yamux::YamuxConfig::default()),
|
||||||
Muxer::Yamux => Either::Left(yamux::YamuxConfig::default()),
|
Muxer::Mplex => Either::Right(mplex::MplexConfig::new()),
|
||||||
Muxer::Mplex => Either::Right(mplex::MplexConfig::new()),
|
})
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Supported transports by rust-libp2p.
|
/// Supported transports by rust-libp2p.
|
||||||
#[derive(Clone, Debug, EnumString)]
|
#[derive(Clone, Debug)]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
|
||||||
pub enum Transport {
|
pub enum Transport {
|
||||||
Tcp,
|
Tcp,
|
||||||
QuicV1,
|
QuicV1,
|
||||||
@ -217,22 +213,58 @@ pub enum Transport {
|
|||||||
Ws,
|
Ws,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FromStr for Transport {
|
||||||
|
type Err = anyhow::Error;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
|
||||||
|
Ok(match s {
|
||||||
|
"tcp" => Self::Tcp,
|
||||||
|
"quic-v1" => Self::QuicV1,
|
||||||
|
"webrtc" => Self::Webrtc,
|
||||||
|
"ws" => Self::Ws,
|
||||||
|
other => bail!("unknown transport {other}"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Supported stream multiplexers by rust-libp2p.
|
/// Supported stream multiplexers by rust-libp2p.
|
||||||
#[derive(Clone, Debug, EnumString)]
|
#[derive(Clone, Debug)]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
|
||||||
pub enum Muxer {
|
pub enum Muxer {
|
||||||
Mplex,
|
Mplex,
|
||||||
Yamux,
|
Yamux,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FromStr for Muxer {
|
||||||
|
type Err = anyhow::Error;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
|
||||||
|
Ok(match s {
|
||||||
|
"mplex" => Self::Mplex,
|
||||||
|
"yamux" => Self::Yamux,
|
||||||
|
other => bail!("unknown muxer {other}"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Supported security protocols by rust-libp2p.
|
/// Supported security protocols by rust-libp2p.
|
||||||
#[derive(Clone, Debug, EnumString)]
|
#[derive(Clone, Debug)]
|
||||||
#[strum(serialize_all = "kebab-case")]
|
|
||||||
pub enum SecProtocol {
|
pub enum SecProtocol {
|
||||||
Noise,
|
Noise,
|
||||||
Tls,
|
Tls,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FromStr for SecProtocol {
|
||||||
|
type Err = anyhow::Error;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
|
||||||
|
Ok(match s {
|
||||||
|
"noise" => Self::Noise,
|
||||||
|
"tls" => Self::Tls,
|
||||||
|
other => bail!("unknown security protocol {other}"),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(NetworkBehaviour)]
|
#[derive(NetworkBehaviour)]
|
||||||
struct Behaviour {
|
struct Behaviour {
|
||||||
ping: ping::Behaviour,
|
ping: ping::Behaviour,
|
||||||
@ -242,8 +274,7 @@ struct Behaviour {
|
|||||||
/// Helper function to get a ENV variable into an test parameter like `Transport`.
|
/// Helper function to get a ENV variable into an test parameter like `Transport`.
|
||||||
pub fn from_env<T>(env_var: &str) -> Result<T>
|
pub fn from_env<T>(env_var: &str) -> Result<T>
|
||||||
where
|
where
|
||||||
T: FromStr,
|
T: FromStr<Err = anyhow::Error>,
|
||||||
T::Err: std::error::Error + Send + Sync + 'static,
|
|
||||||
{
|
{
|
||||||
env::var(env_var)
|
env::var(env_var)
|
||||||
.with_context(|| format!("{env_var} environment variable is not set"))?
|
.with_context(|| format!("{env_var} environment variable is not set"))?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user