@@ -85,7 +85,7 @@ func TestBlackHoleDetectorInApplicableAddress(t *testing.T) {
8585 ma .StringCast ("/ip4/192.168.1.5/udp/1234/quic-v1" ),
8686 }
8787 for i := 0 ; i < 1000 ; i ++ {
88- filteredAddrs := bhd .FilterAddrs (addrs )
88+ filteredAddrs , _ := bhd .FilterAddrs (addrs )
8989 require .ElementsMatch (t , addrs , filteredAddrs )
9090 for j := 0 ; j < len (addrs ); j ++ {
9191 bhd .RecordResult (addrs [j ], false )
@@ -101,20 +101,29 @@ func TestBlackHoleDetectorUDPDisabled(t *testing.T) {
101101 for i := 0 ; i < 100 ; i ++ {
102102 bhd .RecordResult (publicAddr , false )
103103 }
104- addrs := []ma.Multiaddr {publicAddr , privAddr }
105- require .ElementsMatch (t , addrs , bhd .FilterAddrs (addrs ))
104+ wantAddrs := []ma.Multiaddr {publicAddr , privAddr }
105+ wantRemovedAddrs := make ([]ma.Multiaddr , 0 )
106+
107+ gotAddrs , gotRemovedAddrs := bhd .FilterAddrs (wantAddrs )
108+ require .ElementsMatch (t , wantAddrs , gotAddrs )
109+ require .ElementsMatch (t , wantRemovedAddrs , gotRemovedAddrs )
106110}
107111
108112func TestBlackHoleDetectorIPv6Disabled (t * testing.T ) {
109113 udpConfig := blackHoleConfig {Enabled : true , N : 10 , MinSuccesses : 5 }
110114 bhd := newBlackHoleDetector (udpConfig , blackHoleConfig {Enabled : false }, nil )
111115 publicAddr := ma .StringCast ("/ip6/1::1/tcp/1234" )
112116 privAddr := ma .StringCast ("/ip6/::1/tcp/1234" )
113- addrs := []ma.Multiaddr {publicAddr , privAddr }
114117 for i := 0 ; i < 100 ; i ++ {
115118 bhd .RecordResult (publicAddr , false )
116119 }
117- require .ElementsMatch (t , addrs , bhd .FilterAddrs (addrs ))
120+
121+ wantAddrs := []ma.Multiaddr {publicAddr , privAddr }
122+ wantRemovedAddrs := make ([]ma.Multiaddr , 0 )
123+
124+ gotAddrs , gotRemovedAddrs := bhd .FilterAddrs (wantAddrs )
125+ require .ElementsMatch (t , wantAddrs , gotAddrs )
126+ require .ElementsMatch (t , wantRemovedAddrs , gotRemovedAddrs )
118127}
119128
120129func TestBlackHoleDetectorProbes (t * testing.T ) {
@@ -128,7 +137,7 @@ func TestBlackHoleDetectorProbes(t *testing.T) {
128137 bhd .RecordResult (udp6Addr , false )
129138 }
130139 for i := 1 ; i < 100 ; i ++ {
131- filteredAddrs := bhd .FilterAddrs (addrs )
140+ filteredAddrs , _ := bhd .FilterAddrs (addrs )
132141 if i % 2 == 0 || i % 3 == 0 {
133142 if len (filteredAddrs ) == 0 {
134143 t .Fatalf ("expected probe to be allowed irrespective of the state of other black hole filter" )
@@ -145,7 +154,7 @@ func TestBlackHoleDetectorProbes(t *testing.T) {
145154func TestBlackHoleDetectorAddrFiltering (t * testing.T ) {
146155 udp6Pub := ma .StringCast ("/ip6/1::1/udp/1234/quic-v1" )
147156 udp6Pri := ma .StringCast ("/ip6/::1/udp/1234/quic-v1" )
148- upd4Pub := ma .StringCast ("/ip4/1.2.3.4/udp/1234/quic-v1" )
157+ udp4Pub := ma .StringCast ("/ip4/1.2.3.4/udp/1234/quic-v1" )
149158 udp4Pri := ma .StringCast ("/ip4/192.168.1.5/udp/1234/quic-v1" )
150159 tcp6Pub := ma .StringCast ("/ip6/1::1/tcp/1234/quic-v1" )
151160 tcp6Pri := ma .StringCast ("/ip6/::1/tcp/1234/quic-v1" )
@@ -158,26 +167,35 @@ func TestBlackHoleDetectorAddrFiltering(t *testing.T) {
158167 ipv6 : & blackHoleFilter {n : 100 , minSuccesses : 10 , name : "ipv6" },
159168 }
160169 for i := 0 ; i < 100 ; i ++ {
161- bhd .RecordResult (upd4Pub , ! udpBlocked )
170+ bhd .RecordResult (udp4Pub , ! udpBlocked )
162171 }
163172 for i := 0 ; i < 100 ; i ++ {
164173 bhd .RecordResult (tcp6Pub , ! ipv6Blocked )
165174 }
166175 return bhd
167176 }
168177
169- allInput := []ma.Multiaddr {udp6Pub , udp6Pri , upd4Pub , udp4Pri , tcp6Pub , tcp6Pri ,
178+ allInput := []ma.Multiaddr {udp6Pub , udp6Pri , udp4Pub , udp4Pri , tcp6Pub , tcp6Pri ,
170179 tcp4Pub , tcp4Pri }
171180
172181 udpBlockedOutput := []ma.Multiaddr {udp6Pri , udp4Pri , tcp6Pub , tcp6Pri , tcp4Pub , tcp4Pri }
182+ udpPublicAddrs := []ma.Multiaddr {udp6Pub , udp4Pub }
173183 bhd := makeBHD (true , false )
174- require .ElementsMatch (t , udpBlockedOutput , bhd .FilterAddrs (allInput ))
184+ gotAddrs , gotRemovedAddrs := bhd .FilterAddrs (allInput )
185+ require .ElementsMatch (t , udpBlockedOutput , gotAddrs )
186+ require .ElementsMatch (t , udpPublicAddrs , gotRemovedAddrs )
175187
176- ip6BlockedOutput := []ma.Multiaddr {udp6Pri , upd4Pub , udp4Pri , tcp6Pri , tcp4Pub , tcp4Pri }
188+ ip6BlockedOutput := []ma.Multiaddr {udp6Pri , udp4Pub , udp4Pri , tcp6Pri , tcp4Pub , tcp4Pri }
189+ ip6PublicAddrs := []ma.Multiaddr {udp6Pub , tcp6Pub }
177190 bhd = makeBHD (false , true )
178- require .ElementsMatch (t , ip6BlockedOutput , bhd .FilterAddrs (allInput ))
191+ gotAddrs , gotRemovedAddrs = bhd .FilterAddrs (allInput )
192+ require .ElementsMatch (t , ip6BlockedOutput , gotAddrs )
193+ require .ElementsMatch (t , ip6PublicAddrs , gotRemovedAddrs )
179194
180195 bothBlockedOutput := []ma.Multiaddr {udp6Pri , udp4Pri , tcp6Pri , tcp4Pub , tcp4Pri }
196+ bothPublicAddrs := []ma.Multiaddr {udp6Pub , tcp6Pub , udp4Pub }
181197 bhd = makeBHD (true , true )
182- require .ElementsMatch (t , bothBlockedOutput , bhd .FilterAddrs (allInput ))
198+ gotAddrs , gotRemovedAddrs = bhd .FilterAddrs (allInput )
199+ require .ElementsMatch (t , bothBlockedOutput , gotAddrs )
200+ require .ElementsMatch (t , bothPublicAddrs , gotRemovedAddrs )
183201}
0 commit comments