mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-07-04 12:11:35 +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]
|
||||
multihash = "0.7.0"
|
||||
tempfile = "2.2"
|
||||
serde_json = "1.0"
|
||||
|
@ -142,4 +142,27 @@ mod tests {
|
||||
{::json_peerstore::JsonPeerstore::new(temp_file.path()).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
|
||||
.iter()
|
||||
.map(|&(ref addr, ref expires)| {
|
||||
let addr = addr.to_bytes();
|
||||
let addr = addr.to_string();
|
||||
let from_epoch = expires.duration_since(UNIX_EPOCH)
|
||||
// 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
|
||||
@ -177,3 +177,24 @@ impl PartialOrd for PeerInfo {
|
||||
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