mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-06-12 09:31:20 +00:00
refactor(identify): bring tests up to workspace standard
This patch refactors the identify tests to use `libp2p-swarm-test`. This allows us to delete quite a bit of code and makes several dev-dependencies obsolete. The `correct_transfer` test is made obsolete by more precise assertions in the `periodic_identify` test. This allows us to remove the dependency on the `upgrade::{apply_inbound,apply_outbound}` functions. Finally, we also fix a bug where the reported listen addresses to the other node could contain duplicates. Related: #3748. Pull-Request: #3851.
This commit is contained in:
@ -284,97 +284,7 @@ pub enum UpgradeError {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use futures::channel::oneshot;
|
||||
use libp2p_core::{
|
||||
upgrade::{self, apply_inbound, apply_outbound},
|
||||
Transport,
|
||||
};
|
||||
use libp2p_identity as identity;
|
||||
use libp2p_tcp as tcp;
|
||||
|
||||
#[test]
|
||||
fn correct_transfer() {
|
||||
// We open a server and a client, send info from the server to the client, and check that
|
||||
// they were successfully received.
|
||||
let send_pubkey = identity::Keypair::generate_ed25519().public();
|
||||
let recv_pubkey = send_pubkey.clone();
|
||||
|
||||
let (tx, rx) = oneshot::channel();
|
||||
|
||||
let bg_task = async_std::task::spawn(async move {
|
||||
let mut transport = tcp::async_io::Transport::default().boxed();
|
||||
|
||||
transport
|
||||
.listen_on("/ip4/127.0.0.1/tcp/0".parse().unwrap())
|
||||
.unwrap();
|
||||
|
||||
let addr = transport
|
||||
.next()
|
||||
.await
|
||||
.expect("some event")
|
||||
.into_new_address()
|
||||
.expect("listen address");
|
||||
tx.send(addr).unwrap();
|
||||
|
||||
let socket = transport
|
||||
.next()
|
||||
.await
|
||||
.expect("some event")
|
||||
.into_incoming()
|
||||
.unwrap()
|
||||
.0
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let sender = apply_inbound(socket, Identify).await.unwrap();
|
||||
|
||||
send(
|
||||
sender,
|
||||
Info {
|
||||
public_key: send_pubkey,
|
||||
protocol_version: "proto_version".to_owned(),
|
||||
agent_version: "agent_version".to_owned(),
|
||||
listen_addrs: vec![
|
||||
"/ip4/80.81.82.83/tcp/500".parse().unwrap(),
|
||||
"/ip6/::1/udp/1000".parse().unwrap(),
|
||||
],
|
||||
protocols: vec![
|
||||
StreamProtocol::new("/proto1"),
|
||||
StreamProtocol::new("/proto2"),
|
||||
],
|
||||
observed_addr: "/ip4/100.101.102.103/tcp/5000".parse().unwrap(),
|
||||
},
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
});
|
||||
|
||||
async_std::task::block_on(async move {
|
||||
let mut transport = tcp::async_io::Transport::default();
|
||||
|
||||
let socket = transport.dial(rx.await.unwrap()).unwrap().await.unwrap();
|
||||
let info = apply_outbound(socket, Identify, upgrade::Version::V1)
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
info.observed_addr,
|
||||
"/ip4/100.101.102.103/tcp/5000".parse().unwrap()
|
||||
);
|
||||
assert_eq!(info.public_key, recv_pubkey);
|
||||
assert_eq!(info.protocol_version, "proto_version");
|
||||
assert_eq!(info.agent_version, "agent_version");
|
||||
assert_eq!(
|
||||
info.listen_addrs,
|
||||
&[
|
||||
"/ip4/80.81.82.83/tcp/500".parse().unwrap(),
|
||||
"/ip6/::1/udp/1000".parse().unwrap()
|
||||
]
|
||||
);
|
||||
assert_eq!(info.protocols, &["/proto1", "/proto2"]);
|
||||
|
||||
bg_task.await;
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn skip_invalid_multiaddr() {
|
||||
|
Reference in New Issue
Block a user