mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-07-04 04:01:33 +00:00
resolve PeerInfo deserialize error (#168)
This commit is contained in:
committed by
Pierre Krieger
parent
96747441fc
commit
590bc91d59
@ -16,3 +16,4 @@ serde_derive = "1.0"
|
|||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
multihash = "0.7.0"
|
multihash = "0.7.0"
|
||||||
tempfile = "2.2"
|
tempfile = "2.2"
|
||||||
|
serde_json = "1.0"
|
||||||
|
@ -142,4 +142,27 @@ mod tests {
|
|||||||
{::json_peerstore::JsonPeerstore::new(temp_file.path()).unwrap()}
|
{::json_peerstore::JsonPeerstore::new(temp_file.path()).unwrap()}
|
||||||
{let temp_file = self::tempfile::NamedTempFile::new().unwrap()}
|
{let temp_file = self::tempfile::NamedTempFile::new().unwrap()}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn reload() {
|
||||||
|
let temp_file = self::tempfile::NamedTempFile::new().unwrap();
|
||||||
|
let peer_store = ::json_peerstore::JsonPeerstore::new(temp_file.path()).unwrap();
|
||||||
|
|
||||||
|
let peer_id = PeerId::from_public_key(&[1, 2, 3]);
|
||||||
|
let addr = "/ip4/0.0.0.0/tcp/0".parse::<Multiaddr>().unwrap();
|
||||||
|
|
||||||
|
peer_store
|
||||||
|
.peer_or_create(&peer_id)
|
||||||
|
.add_addr(addr.clone(), Duration::from_millis(5000));
|
||||||
|
peer_store.flush().unwrap();
|
||||||
|
drop(peer_store);
|
||||||
|
|
||||||
|
let peer_store = ::json_peerstore::JsonPeerstore::new(temp_file.path()).unwrap();
|
||||||
|
let addrs = peer_store
|
||||||
|
.peer(&peer_id)
|
||||||
|
.unwrap()
|
||||||
|
.addrs()
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
assert_eq!(addrs, &[addr]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ impl Serialize for PeerInfo {
|
|||||||
&self.addrs
|
&self.addrs
|
||||||
.iter()
|
.iter()
|
||||||
.map(|&(ref addr, ref expires)| {
|
.map(|&(ref addr, ref expires)| {
|
||||||
let addr = addr.to_bytes();
|
let addr = addr.to_string();
|
||||||
let from_epoch = expires.duration_since(UNIX_EPOCH)
|
let from_epoch = expires.duration_since(UNIX_EPOCH)
|
||||||
// This `unwrap_or` case happens if the user has their system time set to
|
// This `unwrap_or` case happens if the user has their system time set to
|
||||||
// before EPOCH. Times-to-live will be be longer than expected, but it's a very
|
// before EPOCH. Times-to-live will be be longer than expected, but it's a very
|
||||||
@ -177,3 +177,24 @@ impl PartialOrd for PeerInfo {
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
extern crate serde_json;
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn ser_and_deser() {
|
||||||
|
let peer_info = PeerInfo {
|
||||||
|
addrs: vec![
|
||||||
|
(
|
||||||
|
"/ip4/0.0.0.0/tcp/0".parse::<Multiaddr>().unwrap(),
|
||||||
|
UNIX_EPOCH,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
let serialized = serde_json::to_string(&peer_info).unwrap();
|
||||||
|
let deserialized: PeerInfo = serde_json::from_str(&serialized).unwrap();
|
||||||
|
assert_eq!(peer_info, deserialized);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user