add fn debug_info to peerset (#2258)

This commit is contained in:
Marek Kotewicz
2019-04-16 13:35:04 +02:00
committed by Bastian Köcher
parent 72840bd71e
commit 700e5acf90
2 changed files with 80 additions and 2 deletions
+11 -2
View File
@@ -25,7 +25,7 @@ use libp2p::PeerId;
use log::trace;
use lru_cache::LruCache;
use slots::{SlotType, SlotState, Slots};
pub use serde_json::Value;
use serde_json::json;
const PEERSET_SCORES_CACHE_SIZE: usize = 1000;
const DISCOVERED_NODES_LIMIT: u32 = 1000;
@@ -407,7 +407,16 @@ impl Peerset {
/// Produces a JSON object containing the state of the peerset manager, for debugging purposes.
pub fn debug_info(&self) -> serde_json::Value {
serde_json::Value::Null
json!({
"data": {
// add scores
"discovered": self.data.discovered.debug_info(),
"reserved_only": self.data.reserved_only,
"out_slots": self.data.out_slots.debug_info(),
"in_slots": self.data.in_slots.debug_info()
},
"message_queue": self.message_queue.len(),
})
}
}
+69
View File
@@ -17,6 +17,7 @@
use std::{fmt, mem};
use libp2p::PeerId;
use linked_hash_map::LinkedHashMap;
use serde_json::json;
/// Describes the nature of connection with a given peer.
#[derive(Debug, PartialEq, Clone, Copy)]
@@ -182,4 +183,72 @@ impl Slots {
pub fn is_reserved(&self, peer_id: &PeerId) -> bool {
self.reserved.contains_key(peer_id)
}
/// Produces a JSON object containing the state of slots, for debugging purposes.
pub fn debug_info(&self) -> serde_json::Value {
json!({
"max_slots": self.max_slots,
"reserved": self.reserved.keys().map(|peer_id| peer_id.to_base58()).collect::<Vec<_>>(),
"common": self.common.keys().map(|peer_id| peer_id.to_base58()).collect::<Vec<_>>()
})
}
}
#[cfg(test)]
mod tests {
use libp2p::PeerId;
use serde_json::json;
use super::{Slots, SlotType};
#[test]
fn test_slots_debug_info() {
let reserved_peer = PeerId::random();
let reserved_peer2 = PeerId::random();
let common_peer = PeerId::random();
let mut slots = Slots::new(10);
slots.add_peer(reserved_peer.clone(), SlotType::Reserved);
slots.add_peer(reserved_peer2.clone(), SlotType::Reserved);
slots.add_peer(common_peer.clone(), SlotType::Common);
let expected = json!({
"max_slots": 10,
"reserved": vec![reserved_peer.to_base58(), reserved_peer2.to_base58()],
"common": vec![common_peer.to_base58()],
});
assert_eq!(expected, slots.debug_info());
}
#[test]
fn test_slots_debug() {
let reserved_peer = PeerId::random();
let reserved_peer2 = PeerId::random();
let common_peer = PeerId::random();
let mut slots = Slots::new(10);
slots.add_peer(reserved_peer.clone(), SlotType::Reserved);
slots.add_peer(reserved_peer2.clone(), SlotType::Reserved);
slots.add_peer(common_peer.clone(), SlotType::Common);
let expected = format!("Slots {{
max_slots: 10,
reserved: [
PeerId(
{:?}
),
PeerId(
{:?}
)
],
common: [
PeerId(
{:?}
)
]
}}", reserved_peer.to_base58(), reserved_peer2.to_base58(), common_peer.to_base58());
let s = format!("{:#?}", slots);
assert_eq!(expected, s);
}
}