split NetworkBridge into two subsystems (#5616)

* foo

* rolling session window

* fixup

* remove use statemetn

* fmt

* split NetworkBridge into two subsystems

Pending cleanup

* split

* chore: reexport OrchestraError as OverseerError

* chore: silence warnings

* fixup tests

* chore: add default timenout of 30s to subsystem test helper ctx handle

* single item channel

* fixins

* fmt

* cleanup

* remove dead code

* remove sync bounds again

* wire up shared state

* deal with some FIXMEs

* use distinct tags

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* use tag

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>

* address naming

tx and rx are common in networking and also have an implicit meaning regarding networking
compared to incoming and outgoing which are already used with subsystems themselvesq

* remove unused sync oracle

* remove unneeded state

* fix tests

* chore: fmt

* do not try to register twice

* leak Metrics type

Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
Co-authored-by: Andronik <write@reusable.software>
This commit is contained in:
Bernhard Schuster
2022-07-12 18:22:36 +02:00
committed by GitHub
parent c11c1f38f4
commit 3240cb5e4d
40 changed files with 1880 additions and 1429 deletions
@@ -281,7 +281,7 @@ async fn modify_reputation(
) {
gum::trace!(target: LOG_TARGET, ?relay_parent, ?rep, %peer, "reputation change");
sender.send_message(NetworkBridgeMessage::ReportPeer(peer, rep)).await
sender.send_message(NetworkBridgeTxMessage::ReportPeer(peer, rep)).await
}
/// Distribute a given valid and signature checked bitfield message.
///
@@ -427,7 +427,7 @@ async fn relay_message<Context>(
);
} else {
let _span = span.child("gossip");
ctx.send_message(NetworkBridgeMessage::SendValidationMessage(
ctx.send_message(NetworkBridgeTxMessage::SendValidationMessage(
interested_peers,
message.into_validation_protocol(),
))
@@ -722,7 +722,7 @@ async fn send_tracked_gossip_message<Context>(
.or_default()
.insert(validator.clone());
ctx.send_message(NetworkBridgeMessage::SendValidationMessage(
ctx.send_message(NetworkBridgeTxMessage::SendValidationMessage(
vec![dest],
message.into_validation_protocol(),
))
@@ -227,8 +227,8 @@ fn receive_invalid_signature() {
// reputation change due to invalid signature
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_b);
assert_eq!(rep, COST_SIGNATURE_INVALID)
@@ -288,8 +288,8 @@ fn receive_invalid_validator_index() {
// reputation change due to invalid validator index
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_b);
assert_eq!(rep, COST_VALIDATOR_INDEX_INVALID)
@@ -364,8 +364,8 @@ fn receive_duplicate_messages() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_b);
assert_eq!(rep, BENEFIT_VALID_MESSAGE_FIRST)
@@ -383,8 +383,8 @@ fn receive_duplicate_messages() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_a);
assert_eq!(rep, BENEFIT_VALID_MESSAGE)
@@ -402,8 +402,8 @@ fn receive_duplicate_messages() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_b);
assert_eq!(rep, COST_PEER_DUPLICATE_MESSAGE)
@@ -484,8 +484,8 @@ fn do_not_relay_message_twice() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::SendValidationMessage(peers, send_msg),
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::SendValidationMessage(peers, send_msg),
) => {
assert_eq!(2, peers.len());
assert!(peers.contains(&peer_a));
@@ -607,8 +607,8 @@ fn changing_view() {
// reputation change for peer B
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_b);
assert_eq!(rep, BENEFIT_VALID_MESSAGE_FIRST)
@@ -639,8 +639,8 @@ fn changing_view() {
// reputation change for peer B
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_b);
assert_eq!(rep, COST_PEER_DUPLICATE_MESSAGE)
@@ -671,8 +671,8 @@ fn changing_view() {
// reputation change for peer B
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_a);
assert_eq!(rep, COST_NOT_IN_VIEW)
@@ -745,8 +745,8 @@ fn do_not_send_message_back_to_origin() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::SendValidationMessage(peers, send_msg),
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::SendValidationMessage(peers, send_msg),
) => {
assert_eq!(1, peers.len());
assert!(peers.contains(&peer_a));
@@ -756,8 +756,8 @@ fn do_not_send_message_back_to_origin() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peer_b);
assert_eq!(rep, BENEFIT_VALID_MESSAGE_FIRST)
@@ -851,8 +851,8 @@ fn topology_test() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::SendValidationMessage(peers, send_msg),
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::SendValidationMessage(peers, send_msg),
) => {
let topology = state.topologies.get_current_topology();
// It should send message to all peers in y direction and to 4 random peers in x direction
@@ -867,8 +867,8 @@ fn topology_test() {
assert_matches!(
handle.recv().await,
AllMessages::NetworkBridge(
NetworkBridgeMessage::ReportPeer(peer, rep)
AllMessages::NetworkBridgeTx(
NetworkBridgeTxMessage::ReportPeer(peer, rep)
) => {
assert_eq!(peer, peers_x[0]);
assert_eq!(rep, BENEFIT_VALID_MESSAGE_FIRST)