Feature/gateway monitoring (#499)
* ability to read from multiple gateway clients * A very initial updated network monitor * Summary producer printing report on each finished run * fixed gateway startup issue * initial cleanup pass * Sending to gateways at specified rate * Renaming * Fixed first run interval * Removed false positive error print * Ability to use 'good' topology that is different from the one being tested * Fixed clippy warnings
This commit is contained in:
committed by
GitHub
parent
d7ec81ad0a
commit
9cd463b22c
@@ -17,7 +17,7 @@ use crypto::asymmetric::{encryption, identity};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::convert::TryInto;
|
||||
use std::io;
|
||||
use std::net::ToSocketAddrs;
|
||||
use std::net::{SocketAddr, ToSocketAddrs};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum ConversionError {
|
||||
@@ -93,14 +93,17 @@ impl RegisteredGateway {
|
||||
pub fn clients_listener(&self) -> String {
|
||||
self.gateway_info.clients_host.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<topology::gateway::Node> for RegisteredGateway {
|
||||
type Error = ConversionError;
|
||||
pub fn version(&self) -> String {
|
||||
self.gateway_info.node_info.version.clone()
|
||||
}
|
||||
|
||||
fn try_into(self) -> Result<topology::gateway::Node, Self::Error> {
|
||||
let resolved_mix_hostname = self
|
||||
.gateway_info
|
||||
pub fn version_ref(&self) -> &str {
|
||||
&self.gateway_info.node_info.version
|
||||
}
|
||||
|
||||
fn resolve_hostname(&self) -> Result<SocketAddr, ConversionError> {
|
||||
self.gateway_info
|
||||
.node_info
|
||||
.mix_host
|
||||
.to_socket_addrs()
|
||||
@@ -111,11 +114,17 @@ impl TryInto<topology::gateway::Node> for RegisteredGateway {
|
||||
io::ErrorKind::Other,
|
||||
"no valid socket address",
|
||||
))
|
||||
})?;
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<topology::gateway::Node> for RegisteredGateway {
|
||||
type Error = ConversionError;
|
||||
|
||||
fn try_into(self) -> Result<topology::gateway::Node, Self::Error> {
|
||||
Ok(topology::gateway::Node {
|
||||
mixnet_listener: self.resolve_hostname()?,
|
||||
location: self.gateway_info.node_info.location,
|
||||
mixnet_listener: resolved_mix_hostname,
|
||||
client_listener: self.gateway_info.clients_host,
|
||||
identity_key: identity::PublicKey::from_base58_string(
|
||||
self.gateway_info.node_info.identity_key,
|
||||
@@ -129,3 +138,24 @@ impl TryInto<topology::gateway::Node> for RegisteredGateway {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> TryInto<topology::gateway::Node> for &'a RegisteredGateway {
|
||||
type Error = ConversionError;
|
||||
|
||||
fn try_into(self) -> Result<topology::gateway::Node, Self::Error> {
|
||||
Ok(topology::gateway::Node {
|
||||
mixnet_listener: self.resolve_hostname()?,
|
||||
location: self.gateway_info.node_info.location.clone(),
|
||||
client_listener: self.gateway_info.clients_host.clone(),
|
||||
identity_key: identity::PublicKey::from_base58_string(
|
||||
&self.gateway_info.node_info.identity_key,
|
||||
)?,
|
||||
sphinx_key: encryption::PublicKey::from_base58_string(
|
||||
&self.gateway_info.node_info.sphinx_key,
|
||||
)?,
|
||||
registration_time: self.registration_time,
|
||||
reputation: self.reputation,
|
||||
version: self.gateway_info.node_info.version.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ use crypto::asymmetric::{encryption, identity};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::convert::TryInto;
|
||||
use std::io;
|
||||
use std::net::ToSocketAddrs;
|
||||
use std::net::{SocketAddr, ToSocketAddrs};
|
||||
use topology::mix::Node;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum ConversionError {
|
||||
@@ -97,14 +98,21 @@ impl RegisteredMix {
|
||||
pub fn layer(&self) -> u64 {
|
||||
self.mix_info.layer
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<topology::mix::Node> for RegisteredMix {
|
||||
type Error = ConversionError;
|
||||
pub fn version(&self) -> String {
|
||||
self.mix_info.node_info.version.clone()
|
||||
}
|
||||
|
||||
fn try_into(self) -> Result<topology::mix::Node, Self::Error> {
|
||||
let resolved_hostname = self
|
||||
.mix_info
|
||||
pub fn version_ref(&self) -> &str {
|
||||
&self.mix_info.node_info.version
|
||||
}
|
||||
|
||||
pub fn incentives_address(&self) -> String {
|
||||
self.mix_info.node_info.incentives_address.clone()
|
||||
}
|
||||
|
||||
fn resolve_hostname(&self) -> Result<SocketAddr, ConversionError> {
|
||||
self.mix_info
|
||||
.node_info
|
||||
.mix_host
|
||||
.to_socket_addrs()
|
||||
@@ -115,11 +123,17 @@ impl TryInto<topology::mix::Node> for RegisteredMix {
|
||||
io::ErrorKind::Other,
|
||||
"no valid socket address",
|
||||
))
|
||||
})?;
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl TryInto<topology::mix::Node> for RegisteredMix {
|
||||
type Error = ConversionError;
|
||||
|
||||
fn try_into(self) -> Result<topology::mix::Node, Self::Error> {
|
||||
Ok(topology::mix::Node {
|
||||
host: self.resolve_hostname()?,
|
||||
location: self.mix_info.node_info.location,
|
||||
host: resolved_hostname,
|
||||
identity_key: identity::PublicKey::from_base58_string(
|
||||
self.mix_info.node_info.identity_key,
|
||||
)?,
|
||||
@@ -133,3 +147,24 @@ impl TryInto<topology::mix::Node> for RegisteredMix {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> TryInto<topology::mix::Node> for &'a RegisteredMix {
|
||||
type Error = ConversionError;
|
||||
|
||||
fn try_into(self) -> Result<Node, Self::Error> {
|
||||
Ok(topology::mix::Node {
|
||||
host: self.resolve_hostname()?,
|
||||
location: self.mix_info.node_info.location.clone(),
|
||||
identity_key: identity::PublicKey::from_base58_string(
|
||||
&self.mix_info.node_info.identity_key,
|
||||
)?,
|
||||
sphinx_key: encryption::PublicKey::from_base58_string(
|
||||
&self.mix_info.node_info.sphinx_key,
|
||||
)?,
|
||||
layer: self.mix_info.layer,
|
||||
registration_time: self.registration_time,
|
||||
reputation: self.reputation,
|
||||
version: self.mix_info.node_info.version.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user