update IHAVE spam test to test for behavioural tests because of broken promises

This commit is contained in:
vyzo 2020-05-08 10:26:52 +03:00
parent 5f682c8ca5
commit 883f8b8c92
1 changed files with 26 additions and 1 deletions

View File

@ -140,7 +140,20 @@ func TestGossipsubAttackSpamIHAVE(t *testing.T) {
attacker := hosts[1]
// Set up gossipsub on the legit host
ps, err := NewGossipSub(ctx, legit)
ps, err := NewGossipSub(ctx, legit,
WithPeerScore(
&PeerScoreParams{
AppSpecificScore: func(peer.ID) float64 { return 0 },
BehaviourPenaltyWeight: -1,
BehaviourPenaltyDecay: ScoreParameterDecay(time.Minute),
DecayInterval: DefaultDecayInterval,
DecayToZero: DefaultDecayToZero,
},
&PeerScoreThresholds{
GossipThreshold: -100,
PublishThreshold: -500,
GraylistThreshold: -1000,
}))
if err != nil {
t.Fatal(err)
}
@ -200,6 +213,12 @@ func TestGossipsubAttackSpamIHAVE(t *testing.T) {
}
firstBatchCount := iwc
// the score should still be 0 because we haven't broken any promises yet
score := ps.rt.(*GossipSubRouter).score.Score(attacker.ID())
if score != 0 {
t.Fatalf("Expected 0 score, but got %f", score)
}
// Wait for a hearbeat
time.Sleep(GossipSubHeartbeatInterval)
@ -222,6 +241,12 @@ func TestGossipsubAttackSpamIHAVE(t *testing.T) {
if iwc-firstBatchCount > GossipSubMaxIHaveLength {
t.Fatalf("Expecting max %d IWANTs per heartbeat but received %d", GossipSubMaxIHaveLength, iwc-firstBatchCount)
}
// The score should now be negative because of broken promises
score = ps.rt.(*GossipSubRouter).score.Score(attacker.ID())
if score >= 0 {
t.Fatalf("Expected negative score, but got %f", score)
}
}()
}
}