mirror of
https://github.com/logos-messaging/go-libp2p-pubsub.git
synced 2026-01-05 22:33:10 +00:00
add tests for message rejection paths
This commit is contained in:
parent
f742e5439f
commit
027234cdfa
107
score_test.go
107
score_test.go
@ -531,6 +531,113 @@ func TestScoreInvalidMessageDeliveriesDecay(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestScoreRejectMessageDeliveries(t *testing.T) {
|
||||||
|
// this tests adds coverage for the dark corners of rejection tracing
|
||||||
|
mytopic := "mytopic"
|
||||||
|
params := &PeerScoreParams{
|
||||||
|
AppSpecificScore: func(peer.ID) float64 { return 0 },
|
||||||
|
Topics: make(map[string]*TopicScoreParams),
|
||||||
|
}
|
||||||
|
topicScoreParams := &TopicScoreParams{
|
||||||
|
TopicWeight: 1,
|
||||||
|
TimeInMeshQuantum: time.Second,
|
||||||
|
InvalidMessageDeliveriesWeight: -1,
|
||||||
|
InvalidMessageDeliveriesDecay: 1.0,
|
||||||
|
}
|
||||||
|
params.Topics[mytopic] = topicScoreParams
|
||||||
|
|
||||||
|
peerA := peer.ID("A")
|
||||||
|
peerB := peer.ID("B")
|
||||||
|
|
||||||
|
ps := newPeerScore(params)
|
||||||
|
ps.AddPeer(peerA, "myproto")
|
||||||
|
ps.AddPeer(peerB, "myproto")
|
||||||
|
|
||||||
|
pbMsg := makeTestMessage(0)
|
||||||
|
pbMsg.TopicIDs = []string{mytopic}
|
||||||
|
msg := Message{ReceivedFrom: peerA, Message: pbMsg}
|
||||||
|
msg2 := Message{ReceivedFrom: peerB, Message: pbMsg}
|
||||||
|
|
||||||
|
// these should have no effect in the score
|
||||||
|
ps.RejectMessage(&msg, rejectBlacklstedPeer)
|
||||||
|
ps.RejectMessage(&msg, rejectBlacklistedSource)
|
||||||
|
ps.RejectMessage(&msg, rejectValidationQueueFull)
|
||||||
|
|
||||||
|
aScore := ps.Score(peerA)
|
||||||
|
expected := 0.0
|
||||||
|
if aScore != expected {
|
||||||
|
t.Fatalf("Score: %f. Expected %f", aScore, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
// insert a record in the message deliveries
|
||||||
|
ps.ValidateMessage(&msg)
|
||||||
|
|
||||||
|
// this should have no effect in the score, and subsequent duplicate messages should have no
|
||||||
|
// effect either
|
||||||
|
ps.RejectMessage(&msg, rejectValidationThrottled)
|
||||||
|
ps.DuplicateMessage(&msg2)
|
||||||
|
|
||||||
|
aScore = ps.Score(peerA)
|
||||||
|
expected = 0.0
|
||||||
|
if aScore != expected {
|
||||||
|
t.Fatalf("Score: %f. Expected %f", aScore, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
bScore := ps.Score(peerB)
|
||||||
|
expected = 0.0
|
||||||
|
if bScore != expected {
|
||||||
|
t.Fatalf("Score: %f. Expected %f", aScore, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
// now clear the delivery record
|
||||||
|
ps.deliveries.head.expire = time.Now()
|
||||||
|
time.Sleep(1 * time.Millisecond)
|
||||||
|
ps.deliveries.gc()
|
||||||
|
|
||||||
|
// insert a new record in the message deliveries
|
||||||
|
ps.ValidateMessage(&msg)
|
||||||
|
|
||||||
|
// and reject the message to make sure duplicates are also penalized
|
||||||
|
ps.RejectMessage(&msg, rejectValidationFailed)
|
||||||
|
ps.DuplicateMessage(&msg2)
|
||||||
|
|
||||||
|
aScore = ps.Score(peerA)
|
||||||
|
expected = -1.0
|
||||||
|
if aScore != expected {
|
||||||
|
t.Fatalf("Score: %f. Expected %f", aScore, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
bScore = ps.Score(peerB)
|
||||||
|
expected = -1.0
|
||||||
|
if bScore != expected {
|
||||||
|
t.Fatalf("Score: %f. Expected %f", bScore, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
// now clear the delivery record again
|
||||||
|
ps.deliveries.head.expire = time.Now()
|
||||||
|
time.Sleep(1 * time.Millisecond)
|
||||||
|
ps.deliveries.gc()
|
||||||
|
|
||||||
|
// insert a new record in the message deliveries
|
||||||
|
ps.ValidateMessage(&msg)
|
||||||
|
|
||||||
|
// and reject the message after a duplciate has arrived
|
||||||
|
ps.DuplicateMessage(&msg2)
|
||||||
|
ps.RejectMessage(&msg, rejectValidationFailed)
|
||||||
|
|
||||||
|
aScore = ps.Score(peerA)
|
||||||
|
expected = -2.0
|
||||||
|
if aScore != expected {
|
||||||
|
t.Fatalf("Score: %f. Expected %f", aScore, expected)
|
||||||
|
}
|
||||||
|
|
||||||
|
bScore = ps.Score(peerB)
|
||||||
|
expected = -2.0
|
||||||
|
if bScore != expected {
|
||||||
|
t.Fatalf("Score: %f. Expected %f", bScore, expected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestScoreApplicationScore(t *testing.T) {
|
func TestScoreApplicationScore(t *testing.T) {
|
||||||
// Create parameters with reasonable default values
|
// Create parameters with reasonable default values
|
||||||
mytopic := "mytopic"
|
mytopic := "mytopic"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user