@@ -78,7 +78,7 @@ class CAddrManTest : public CAddrMan
78
78
CAddrMan::Clear ();
79
79
if (deterministic) {
80
80
LOCK (cs);
81
- nKey. SetNull () ;
81
+ nKey = uint256{ 1 } ;
82
82
insecure_rand = FastRandomContext (true );
83
83
}
84
84
}
@@ -256,24 +256,27 @@ BOOST_AUTO_TEST_CASE(addrman_new_collisions)
256
256
257
257
CNetAddr source = ResolveIP (" 252.2.2.2" );
258
258
259
- BOOST_CHECK_EQUAL (addrman.size (), 0U );
259
+ uint32_t num_addrs{0 };
260
+
261
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs);
260
262
261
- for ( unsigned int i = 1 ; i < 18 ; i++) {
262
- CService addr = ResolveService (" 250.1.1." + ToString (i ));
263
+ while (num_addrs < 22 ) { // Magic number! 250.1.1.1 - 250.1.1.22 do not collide with deterministic key = 1
264
+ CService addr = ResolveService (" 250.1.1." + ToString (++num_addrs ));
263
265
BOOST_CHECK (addrman.Add (CAddress (addr, NODE_NONE), source));
264
266
265
267
// Test: No collision in new table yet.
266
- BOOST_CHECK_EQUAL (addrman.size (), i );
268
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs );
267
269
}
268
270
269
271
// Test: new table collision!
270
- CService addr1 = ResolveService (" 250.1.1.18" );
272
+ CService addr1 = ResolveService (" 250.1.1." + ToString (++num_addrs));
273
+ uint32_t collisions{1 };
271
274
BOOST_CHECK (addrman.Add (CAddress (addr1, NODE_NONE), source));
272
- BOOST_CHECK_EQUAL (addrman.size (), 17U );
275
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs - collisions );
273
276
274
- CService addr2 = ResolveService (" 250.1.1.19 " );
277
+ CService addr2 = ResolveService (" 250.1.1." + ToString (++num_addrs) );
275
278
BOOST_CHECK (addrman.Add (CAddress (addr2, NODE_NONE), source));
276
- BOOST_CHECK_EQUAL (addrman.size (), 18U );
279
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs - collisions );
277
280
}
278
281
279
282
BOOST_AUTO_TEST_CASE (addrman_tried_collisions)
@@ -282,25 +285,28 @@ BOOST_AUTO_TEST_CASE(addrman_tried_collisions)
282
285
283
286
CNetAddr source = ResolveIP (" 252.2.2.2" );
284
287
285
- BOOST_CHECK_EQUAL (addrman.size (), 0U );
288
+ uint32_t num_addrs{0 };
289
+
290
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs);
286
291
287
- for ( unsigned int i = 1 ; i < 80 ; i++) {
288
- CService addr = ResolveService (" 250.1.1." + ToString (i ));
292
+ while (num_addrs < 64 ) { // Magic number! 250.1.1.1 - 250.1.1.64 do not collide with deterministic key = 1
293
+ CService addr = ResolveService (" 250.1.1." + ToString (++num_addrs ));
289
294
BOOST_CHECK (addrman.Add (CAddress (addr, NODE_NONE), source));
290
295
addrman.Good (CAddress (addr, NODE_NONE));
291
296
292
297
// Test: No collision in tried table yet.
293
- BOOST_CHECK_EQUAL (addrman.size (), i );
298
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs );
294
299
}
295
300
296
301
// Test: tried table collision!
297
- CService addr1 = ResolveService (" 250.1.1.80" );
302
+ CService addr1 = ResolveService (" 250.1.1." + ToString (++num_addrs));
303
+ uint32_t collisions{1 };
298
304
BOOST_CHECK (addrman.Add (CAddress (addr1, NODE_NONE), source));
299
- BOOST_CHECK_EQUAL (addrman.size (), 79U );
305
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs - collisions );
300
306
301
- CService addr2 = ResolveService (" 250.1.1.81 " );
307
+ CService addr2 = ResolveService (" 250.1.1." + ToString (++num_addrs) );
302
308
BOOST_CHECK (addrman.Add (CAddress (addr2, NODE_NONE), source));
303
- BOOST_CHECK_EQUAL (addrman.size (), 80U );
309
+ BOOST_CHECK_EQUAL (addrman.size (), num_addrs - collisions );
304
310
}
305
311
306
312
BOOST_AUTO_TEST_CASE (addrman_find)
@@ -850,9 +856,9 @@ BOOST_AUTO_TEST_CASE(addrman_noevict)
850
856
{
851
857
CAddrManTest addrman;
852
858
853
- // Add twenty two addresses.
859
+ // Add 35 addresses.
854
860
CNetAddr source = ResolveIP (" 252.2.2.2" );
855
- for (unsigned int i = 1 ; i < 23 ; i++) {
861
+ for (unsigned int i = 1 ; i < 36 ; i++) {
856
862
CService addr = ResolveService (" 250.1.1." +ToString (i));
857
863
BOOST_CHECK (addrman.Add (CAddress (addr, NODE_NONE), source));
858
864
addrman.Good (addr);
@@ -862,20 +868,20 @@ BOOST_AUTO_TEST_CASE(addrman_noevict)
862
868
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " [::]:0" );
863
869
}
864
870
865
- // Collision between 23 and 19.
866
- CService addr23 = ResolveService (" 250.1.1.23 " );
867
- BOOST_CHECK (addrman.Add (CAddress (addr23 , NODE_NONE), source));
868
- addrman.Good (addr23 );
871
+ // Collision between 36 and 19.
872
+ CService addr36 = ResolveService (" 250.1.1.36 " );
873
+ BOOST_CHECK (addrman.Add (CAddress (addr36 , NODE_NONE), source));
874
+ addrman.Good (addr36 );
869
875
870
- BOOST_CHECK (addrman.size () == 23 );
871
- BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " 250.1.1.19:0" );
876
+ BOOST_CHECK (addrman.size () == 36 );
877
+ BOOST_CHECK_EQUAL (addrman.SelectTriedCollision ().ToString (), " 250.1.1.19:0" );
872
878
873
- // 23 should be discarded and 19 not evicted.
879
+ // 36 should be discarded and 19 not evicted.
874
880
addrman.ResolveCollisions ();
875
881
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " [::]:0" );
876
882
877
883
// Lets create two collisions.
878
- for (unsigned int i = 24 ; i < 33 ; i++) {
884
+ for (unsigned int i = 37 ; i < 59 ; i++) {
879
885
CService addr = ResolveService (" 250.1.1." +ToString (i));
880
886
BOOST_CHECK (addrman.Add (CAddress (addr, NODE_NONE), source));
881
887
addrman.Good (addr);
@@ -885,17 +891,17 @@ BOOST_AUTO_TEST_CASE(addrman_noevict)
885
891
}
886
892
887
893
// Cause a collision.
888
- CService addr33 = ResolveService (" 250.1.1.33 " );
889
- BOOST_CHECK (addrman.Add (CAddress (addr33 , NODE_NONE), source));
890
- addrman.Good (addr33 );
891
- BOOST_CHECK (addrman.size () == 33 );
894
+ CService addr59 = ResolveService (" 250.1.1.59 " );
895
+ BOOST_CHECK (addrman.Add (CAddress (addr59 , NODE_NONE), source));
896
+ addrman.Good (addr59 );
897
+ BOOST_CHECK (addrman.size () == 59 );
892
898
893
- BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " 250.1.1.27 :0" );
899
+ BOOST_CHECK_EQUAL (addrman.SelectTriedCollision ().ToString (), " 250.1.1.10 :0" );
894
900
895
901
// Cause a second collision.
896
- BOOST_CHECK (!addrman.Add (CAddress (addr23 , NODE_NONE), source));
897
- addrman.Good (addr23 );
898
- BOOST_CHECK (addrman.size () == 33 );
902
+ BOOST_CHECK (!addrman.Add (CAddress (addr36 , NODE_NONE), source));
903
+ addrman.Good (addr36 );
904
+ BOOST_CHECK (addrman.size () == 59 );
899
905
900
906
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () != " [::]:0" );
901
907
addrman.ResolveCollisions ();
@@ -911,9 +917,9 @@ BOOST_AUTO_TEST_CASE(addrman_evictionworks)
911
917
// Empty addrman should return blank addrman info.
912
918
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " [::]:0" );
913
919
914
- // Add twenty two addresses.
920
+ // Add 35 addresses
915
921
CNetAddr source = ResolveIP (" 252.2.2.2" );
916
- for (unsigned int i = 1 ; i < 23 ; i++) {
922
+ for (unsigned int i = 1 ; i < 36 ; i++) {
917
923
CService addr = ResolveService (" 250.1.1." +ToString (i));
918
924
BOOST_CHECK (addrman.Add (CAddress (addr, NODE_NONE), source));
919
925
addrman.Good (addr);
@@ -923,34 +929,34 @@ BOOST_AUTO_TEST_CASE(addrman_evictionworks)
923
929
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " [::]:0" );
924
930
}
925
931
926
- // Collision between 23 and 19.
927
- CService addr = ResolveService (" 250.1.1.23 " );
932
+ // Collision between 36 and 19.
933
+ CService addr = ResolveService (" 250.1.1.36 " );
928
934
BOOST_CHECK (addrman.Add (CAddress (addr, NODE_NONE), source));
929
935
addrman.Good (addr);
930
936
931
- BOOST_CHECK (addrman.size () == 23 );
937
+ BOOST_CHECK_EQUAL (addrman.size (), 36 );
932
938
CAddrInfo info = addrman.SelectTriedCollision ();
933
- BOOST_CHECK (info.ToString () == " 250.1.1.19:0" );
939
+ BOOST_CHECK_EQUAL (info.ToString (), " 250.1.1.19:0" );
934
940
935
941
// Ensure test of address fails, so that it is evicted.
936
942
addrman.SimConnFail (info);
937
943
938
- // Should swap 23 for 19.
944
+ // Should swap 36 for 19.
939
945
addrman.ResolveCollisions ();
940
946
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " [::]:0" );
941
947
942
- // If 23 was swapped for 19, then this should cause no collisions.
948
+ // If 36 was swapped for 19, then this should cause no collisions.
943
949
BOOST_CHECK (!addrman.Add (CAddress (addr, NODE_NONE), source));
944
950
addrman.Good (addr);
945
951
946
952
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " [::]:0" );
947
953
948
- // If we insert 19 is should collide with 23.
954
+ // If we insert 19 it should collide with 36
949
955
CService addr19 = ResolveService (" 250.1.1.19" );
950
956
BOOST_CHECK (!addrman.Add (CAddress (addr19, NODE_NONE), source));
951
957
addrman.Good (addr19);
952
958
953
- BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " 250.1.1.23 :0" );
959
+ BOOST_CHECK_EQUAL (addrman.SelectTriedCollision ().ToString (), " 250.1.1.36 :0" );
954
960
955
961
addrman.ResolveCollisions ();
956
962
BOOST_CHECK (addrman.SelectTriedCollision ().ToString () == " [::]:0" );
0 commit comments