[SEC] gossipsub - handleGraft/handlePrune recommendations & notes (#530)
Fixes #401
This commit is contained in:
parent
1368bf7ecb
commit
8236319a91
|
@ -543,18 +543,50 @@ suite "GossipSub internal":
|
||||||
await conn.close()
|
await conn.close()
|
||||||
await gossipSub.switch.stop()
|
await gossipSub.switch.stop()
|
||||||
|
|
||||||
|
asyncTest "rebalanceMesh fail due to backoff":
|
||||||
|
let gossipSub = TestGossipSub.init(newStandardSwitch())
|
||||||
|
let topic = "foobar"
|
||||||
|
gossipSub.mesh[topic] = initHashSet[PubSubPeer]()
|
||||||
|
gossipSub.topicParams[topic] = TopicParams.init()
|
||||||
|
|
||||||
|
var conns = newSeq[Connection]()
|
||||||
|
gossipSub.gossipsub[topic] = initHashSet[PubSubPeer]()
|
||||||
|
for i in 0..<15:
|
||||||
|
let conn = newBufferStream(noop)
|
||||||
|
conns &= conn
|
||||||
|
let peerInfo = randomPeerInfo()
|
||||||
|
conn.peerInfo = peerInfo
|
||||||
|
let peer = gossipSub.getPubSubPeer(peerInfo.peerId)
|
||||||
|
peer.sendConn = conn
|
||||||
|
gossipSub.onNewPeer(peer)
|
||||||
|
gossipSub.peers[peerInfo.peerId] = peer
|
||||||
|
gossipSub.gossipsub[topic].incl(peer)
|
||||||
|
gossipSub.backingOff
|
||||||
|
.mgetOrPut(topic, initTable[PeerID, Moment]())
|
||||||
|
.add(peerInfo.peerId, Moment.now() + 1.hours)
|
||||||
|
let prunes = gossipSub.handleGraft(peer, @[ControlGraft(topicID: topic)])
|
||||||
|
# there must be a control prune due to violation of backoff
|
||||||
|
check prunes.len != 0
|
||||||
|
|
||||||
|
check gossipSub.peers.len == 15
|
||||||
|
gossipSub.rebalanceMesh(topic)
|
||||||
|
# expect 0 since they are all backing off
|
||||||
|
check gossipSub.mesh[topic].len == 0
|
||||||
|
|
||||||
|
await allFuturesThrowing(conns.mapIt(it.close()))
|
||||||
|
await gossipSub.switch.stop()
|
||||||
|
|
||||||
asyncTest "rebalanceMesh Degree Hi - audit scenario":
|
asyncTest "rebalanceMesh Degree Hi - audit scenario":
|
||||||
let gossipSub = TestGossipSub.init(newStandardSwitch())
|
let gossipSub = TestGossipSub.init(newStandardSwitch())
|
||||||
|
let topic = "foobar"
|
||||||
|
gossipSub.mesh[topic] = initHashSet[PubSubPeer]()
|
||||||
|
gossipSub.topicParams[topic] = TopicParams.init()
|
||||||
gossipSub.parameters.dScore = 4
|
gossipSub.parameters.dScore = 4
|
||||||
gossipSub.parameters.d = 6
|
gossipSub.parameters.d = 6
|
||||||
gossipSub.parameters.dOut = 3
|
gossipSub.parameters.dOut = 3
|
||||||
gossipSub.parameters.dHigh = 12
|
gossipSub.parameters.dHigh = 12
|
||||||
gossipSub.parameters.dLow = 4
|
gossipSub.parameters.dLow = 4
|
||||||
|
|
||||||
let topic = "foobar"
|
|
||||||
gossipSub.mesh[topic] = initHashSet[PubSubPeer]()
|
|
||||||
gossipSub.topicParams[topic] = TopicParams.init()
|
|
||||||
|
|
||||||
var conns = newSeq[Connection]()
|
var conns = newSeq[Connection]()
|
||||||
gossipSub.gossipsub[topic] = initHashSet[PubSubPeer]()
|
gossipSub.gossipsub[topic] = initHashSet[PubSubPeer]()
|
||||||
for i in 0..<6:
|
for i in 0..<6:
|
||||||
|
|
Loading…
Reference in New Issue