@@ -57,6 +57,7 @@ func TestGossiperGossip(t *testing.T) {
5757 responder []* testTx // what the peer we're requesting gossip from has
5858 expectedPossibleValues []* testTx // possible values we can have
5959 expectedLen int
60+ expectedHitRate float64
6061 }{
6162 {
6263 name : "no gossip - no one knows anything" ,
@@ -75,13 +76,15 @@ func TestGossiperGossip(t *testing.T) {
7576 responder : []* testTx {{id : ids.ID {0 }}},
7677 expectedPossibleValues : []* testTx {{id : ids.ID {0 }}},
7778 expectedLen : 1 ,
79+ expectedHitRate : 100 ,
7880 },
7981 {
8082 name : "gossip - requester knows nothing" ,
8183 targetResponseSize : 1024 ,
8284 responder : []* testTx {{id : ids.ID {0 }}},
8385 expectedPossibleValues : []* testTx {{id : ids.ID {0 }}},
8486 expectedLen : 1 ,
87+ expectedHitRate : 0 ,
8588 },
8689 {
8790 name : "gossip - requester knows less than responder" ,
@@ -90,13 +93,15 @@ func TestGossiperGossip(t *testing.T) {
9093 responder : []* testTx {{id : ids.ID {0 }}, {id : ids.ID {1 }}},
9194 expectedPossibleValues : []* testTx {{id : ids.ID {0 }}, {id : ids.ID {1 }}},
9295 expectedLen : 2 ,
96+ expectedHitRate : 50 ,
9397 },
9498 {
9599 name : "gossip - target response size exceeded" ,
96100 targetResponseSize : 32 ,
97101 responder : []* testTx {{id : ids.ID {0 }}, {id : ids.ID {1 }}, {id : ids.ID {2 }}},
98102 expectedPossibleValues : []* testTx {{id : ids.ID {0 }}, {id : ids.ID {1 }}, {id : ids.ID {2 }}},
99103 expectedLen : 2 ,
104+ expectedHitRate : 0 ,
100105 },
101106 }
102107
@@ -123,6 +128,12 @@ func TestGossiperGossip(t *testing.T) {
123128
124129 metrics , err := NewMetrics (prometheus .NewRegistry (), "" )
125130 require .NoError (err )
131+
132+ testHistogram := & testHistogram {
133+ Histogram : metrics .bloomFilterHitRate ,
134+ }
135+ metrics .bloomFilterHitRate = testHistogram
136+
126137 marshaller := testMarshaller {}
127138 handler := NewHandler [* testTx ](
128139 logging.NoLog {},
@@ -175,6 +186,8 @@ func TestGossiperGossip(t *testing.T) {
175186
176187 require .Len (requestSet .txs , tt .expectedLen )
177188 require .Subset (tt .expectedPossibleValues , maps .Values (requestSet .txs ))
189+ require .Equal (len (tt .responder ) > 0 , testHistogram .observed )
190+ require .InDelta (tt .expectedHitRate , testHistogram .observedVal , 0 )
178191
179192 // we should not receive anything that we already had before we
180193 // requested the gossip
@@ -611,3 +624,15 @@ type testValidatorSet struct {
611624func (t testValidatorSet ) Has (_ context.Context , nodeID ids.NodeID ) bool {
612625 return t .validators .Contains (nodeID )
613626}
627+
628+ type testHistogram struct {
629+ prometheus.Histogram
630+ observedVal float64
631+ observed bool
632+ }
633+
634+ func (t * testHistogram ) Observe (value float64 ) {
635+ t .Histogram .Observe (value )
636+ t .observedVal = value
637+ t .observed = true
638+ }
0 commit comments