github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/p2p/peers/scorers/gossip_scorer_test.go (about) 1 package scorers_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers" 8 "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers/scorers" 9 pbrpc "github.com/prysmaticlabs/prysm/proto/beacon/rpc/v1" 10 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 11 ) 12 13 func TestScorers_Gossip_Score(t *testing.T) { 14 ctx, cancel := context.WithCancel(context.Background()) 15 defer cancel() 16 17 tests := []struct { 18 name string 19 update func(scorer *scorers.GossipScorer) 20 check func(scorer *scorers.GossipScorer) 21 }{ 22 { 23 name: "nonexistent peer", 24 update: func(scorer *scorers.GossipScorer) { 25 }, 26 check: func(scorer *scorers.GossipScorer) { 27 assert.Equal(t, 0.0, scorer.Score("peer1"), "Unexpected score") 28 }, 29 }, 30 { 31 name: "existent bad peer", 32 update: func(scorer *scorers.GossipScorer) { 33 scorer.SetGossipData("peer1", -10.0, 1, nil) 34 }, 35 check: func(scorer *scorers.GossipScorer) { 36 assert.Equal(t, -10.0, scorer.Score("peer1"), "Unexpected score") 37 assert.Equal(t, true, scorer.IsBadPeer("peer1"), "Unexpected good peer") 38 }, 39 }, 40 { 41 name: "good peer", 42 update: func(scorer *scorers.GossipScorer) { 43 scorer.SetGossipData("peer1", 10.0, 0, map[string]*pbrpc.TopicScoreSnapshot{"a": {TimeInMesh: 100}}) 44 }, 45 check: func(scorer *scorers.GossipScorer) { 46 assert.Equal(t, 10.0, scorer.Score("peer1"), "Unexpected score") 47 assert.Equal(t, false, scorer.IsBadPeer("peer1"), "Unexpected bad peer") 48 _, _, topicMap, err := scorer.GossipData("peer1") 49 assert.NoError(t, err) 50 assert.Equal(t, uint64(100), topicMap["a"].TimeInMesh, "incorrect time in mesh") 51 }, 52 }, 53 } 54 55 for _, tt := range tests { 56 t.Run(tt.name, func(t *testing.T) { 57 peerStatuses := peers.NewStatus(ctx, &peers.StatusConfig{ 58 ScorerParams: &scorers.Config{}, 59 }) 60 scorer := peerStatuses.Scorers().GossipScorer() 61 if tt.update != nil { 62 tt.update(scorer) 63 } 64 tt.check(scorer) 65 }) 66 } 67 }