Fix format alignment for cluster info trace (#25741)
* double shrinking * remove pre/post shrink time * fix cluster info trace alignemnt * add test * format * typo * add checks in cluster info trace test * update cargo lock * clippy * clippy * move regex deps to dev deps * cargo lock
This commit is contained in:
parent
73b7db4a75
commit
4223f82922
|
@ -5060,6 +5060,7 @@ dependencies = [
|
||||||
"rand 0.7.3",
|
"rand 0.7.3",
|
||||||
"rand_chacha 0.2.2",
|
"rand_chacha 0.2.2",
|
||||||
"rayon",
|
"rayon",
|
||||||
|
"regex",
|
||||||
"rustc_version 0.4.0",
|
"rustc_version 0.4.0",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_bytes",
|
"serde_bytes",
|
||||||
|
|
|
@ -48,6 +48,7 @@ solana-vote-program = { path = "../programs/vote", version = "=1.11.0" }
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
regex = "1"
|
||||||
num_cpus = "1.13.1"
|
num_cpus = "1.13.1"
|
||||||
serial_test = "0.6.0"
|
serial_test = "0.6.0"
|
||||||
|
|
||||||
|
|
|
@ -728,8 +728,8 @@ impl ClusterInfo {
|
||||||
format!(
|
format!(
|
||||||
"RPC Address |Age(ms)| Node identifier \
|
"RPC Address |Age(ms)| Node identifier \
|
||||||
| Version | RPC |PubSub|ShredVer\n\
|
| Version | RPC |PubSub|ShredVer\n\
|
||||||
------------------+-------+----------------------------------------------+---------+\
|
------------------+-------+----------------------------------------------\
|
||||||
------+------+--------\n\
|
+---------+------+------+--------\n\
|
||||||
{}\
|
{}\
|
||||||
RPC Enabled Nodes: {}",
|
RPC Enabled Nodes: {}",
|
||||||
nodes.join(""),
|
nodes.join(""),
|
||||||
|
@ -774,7 +774,7 @@ impl ClusterInfo {
|
||||||
};
|
};
|
||||||
let ip_addr = node.gossip.ip();
|
let ip_addr = node.gossip.ip();
|
||||||
Some(format!(
|
Some(format!(
|
||||||
"{:15} {:2}| {:5} | {:44} |{:^9}| {:5}| {:5}| {:5}| {:5}| {:5}| {:5}| {:5}| {:5}| {}\n",
|
"{:15} {:2}| {:5} | {:44} |{:^9}| {:5}| {:5}| {:5}| {:5}| {:5}| {:5}| {:5}| {:5}| {}\n",
|
||||||
if ContactInfo::is_valid_address(&node.gossip, &self.socket_addr_space) {
|
if ContactInfo::is_valid_address(&node.gossip, &self.socket_addr_space) {
|
||||||
ip_addr.to_string()
|
ip_addr.to_string()
|
||||||
} else {
|
} else {
|
||||||
|
@ -805,8 +805,8 @@ impl ClusterInfo {
|
||||||
format!(
|
format!(
|
||||||
"IP Address |Age(ms)| Node identifier \
|
"IP Address |Age(ms)| Node identifier \
|
||||||
| Version |Gossip|TPUvote| TPU |TPUfwd| TVU |TVUfwd|Repair|ServeR|ShredVer\n\
|
| Version |Gossip|TPUvote| TPU |TPUfwd| TVU |TVUfwd|Repair|ServeR|ShredVer\n\
|
||||||
------------------+-------+----------------------------------------------+---------+\
|
------------------+-------+----------------------------------------------\
|
||||||
------+------+-------+------+------+------+------+------+--------\n\
|
+---------+------+-------+------+------+------+------+------+------+--------\n\
|
||||||
{}\
|
{}\
|
||||||
Nodes: {}{}{}",
|
Nodes: {}{}{}",
|
||||||
nodes.join(""),
|
nodes.join(""),
|
||||||
|
@ -3064,6 +3064,7 @@ mod tests {
|
||||||
itertools::izip,
|
itertools::izip,
|
||||||
rand::{seq::SliceRandom, SeedableRng},
|
rand::{seq::SliceRandom, SeedableRng},
|
||||||
rand_chacha::ChaChaRng,
|
rand_chacha::ChaChaRng,
|
||||||
|
regex::Regex,
|
||||||
solana_ledger::shred::Shredder,
|
solana_ledger::shred::Shredder,
|
||||||
solana_net_utils::MINIMUM_VALIDATOR_PORT_RANGE_WIDTH,
|
solana_net_utils::MINIMUM_VALIDATOR_PORT_RANGE_WIDTH,
|
||||||
solana_sdk::signature::{Keypair, Signer},
|
solana_sdk::signature::{Keypair, Signer},
|
||||||
|
@ -3094,6 +3095,91 @@ mod tests {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_cluster_info_trace() {
|
||||||
|
solana_logger::setup();
|
||||||
|
let keypair = Keypair::from_base58_string("3jATNWfbii1btv6nCpToAXAJz6a4km5HsLSWiwLfNvHNQAmvksLFVAKGUz286bXb9N4ivXx8nuwkn91PFDTyoFEp");
|
||||||
|
|
||||||
|
let node = {
|
||||||
|
let tpu = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8900);
|
||||||
|
let _tpu_quic = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8901);
|
||||||
|
|
||||||
|
let gossip = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8888);
|
||||||
|
let tvu = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8902);
|
||||||
|
let tvu_forwards = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8903);
|
||||||
|
let tpu_forwards = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8904);
|
||||||
|
|
||||||
|
let tpu_vote = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8906);
|
||||||
|
let repair = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8907);
|
||||||
|
let rpc = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8908);
|
||||||
|
let rpc_pubsub = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8909);
|
||||||
|
|
||||||
|
let serve_repair = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8910);
|
||||||
|
|
||||||
|
let info = ContactInfo {
|
||||||
|
id: keypair.pubkey(),
|
||||||
|
gossip,
|
||||||
|
tvu,
|
||||||
|
tvu_forwards,
|
||||||
|
repair,
|
||||||
|
tpu,
|
||||||
|
tpu_forwards,
|
||||||
|
tpu_vote,
|
||||||
|
rpc,
|
||||||
|
rpc_pubsub,
|
||||||
|
serve_repair,
|
||||||
|
wallclock: timestamp(),
|
||||||
|
shred_version: 0,
|
||||||
|
};
|
||||||
|
Node {
|
||||||
|
info,
|
||||||
|
sockets: Sockets {
|
||||||
|
gossip: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||||
|
ip_echo: None,
|
||||||
|
tvu: vec![],
|
||||||
|
tvu_forwards: vec![],
|
||||||
|
tpu: vec![],
|
||||||
|
tpu_forwards: vec![],
|
||||||
|
tpu_vote: vec![],
|
||||||
|
broadcast: vec![],
|
||||||
|
repair: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||||
|
retransmit_sockets: vec![],
|
||||||
|
serve_repair: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||||
|
ancestor_hashes_requests: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||||
|
tpu_quic: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||||
|
tpu_forwards_quic: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let cluster_info = Arc::new(ClusterInfo::new(
|
||||||
|
node.info,
|
||||||
|
Arc::new(keypair),
|
||||||
|
SocketAddrSpace::Unspecified,
|
||||||
|
));
|
||||||
|
|
||||||
|
let golden = r#"
|
||||||
|
IP Address |Age(ms)| Node identifier | Version |Gossip|TPUvote| TPU |TPUfwd| TVU |TVUfwd|Repair|ServeR|ShredVer
|
||||||
|
------------------+-------+----------------------------------------------+---------+------+-------+------+------+------+------+------+------+--------
|
||||||
|
127.0.0.1 me| \d | 7fGBVaezz2YrTxAkwvLjBZpxrGEfNsd14Jxw9W5Df5zY | - | 8888 | 8906 | 8900 | 8904 | 8902 | 8903 | 8907 | 8910 | 0
|
||||||
|
Nodes: 1
|
||||||
|
|
||||||
|
RPC Address |Age(ms)| Node identifier | Version | RPC |PubSub|ShredVer
|
||||||
|
------------------+-------+----------------------------------------------+---------+------+------+--------
|
||||||
|
127.0.0.1 me| \d | 7fGBVaezz2YrTxAkwvLjBZpxrGEfNsd14Jxw9W5Df5zY | - | 8908 | 8909 | 0
|
||||||
|
RPC Enabled Nodes: 1"#;
|
||||||
|
|
||||||
|
let re = Regex::new(golden).unwrap();
|
||||||
|
|
||||||
|
let output = format!(
|
||||||
|
"\n{}\n\n{}",
|
||||||
|
cluster_info.contact_info_trace(),
|
||||||
|
cluster_info.rpc_info_trace()
|
||||||
|
);
|
||||||
|
|
||||||
|
assert!(re.is_match(&output));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_handle_pull() {
|
fn test_handle_pull() {
|
||||||
solana_logger::setup();
|
solana_logger::setup();
|
||||||
|
|
Loading…
Reference in New Issue