@@ -194,7 +194,7 @@ BOOST_AUTO_TEST_CASE(addrman_select)
194
194
BOOST_CHECK_EQUAL (addr_ret1.ToString (), " 250.1.1.1:8333" );
195
195
196
196
// Test: move addr to tried, select from new expected nothing returned.
197
- addrman.Good (CAddress (addr1, NODE_NONE));
197
+ BOOST_CHECK ( addrman.Good (CAddress (addr1, NODE_NONE) ));
198
198
BOOST_CHECK_EQUAL (addrman.size (), 1U );
199
199
auto addr_ret2 = addrman.Select (newOnly).first ;
200
200
BOOST_CHECK_EQUAL (addr_ret2.ToString (), " [::]:0" );
@@ -220,11 +220,11 @@ BOOST_AUTO_TEST_CASE(addrman_select)
220
220
CService addr7 = ResolveService (" 250.4.6.6" , 8333 );
221
221
222
222
BOOST_CHECK (addrman.Add ({CAddress (addr5, NODE_NONE)}, ResolveService (" 250.3.1.1" , 8333 )));
223
- addrman.Good (CAddress (addr5, NODE_NONE));
223
+ BOOST_CHECK ( addrman.Good (CAddress (addr5, NODE_NONE) ));
224
224
BOOST_CHECK (addrman.Add ({CAddress (addr6, NODE_NONE)}, ResolveService (" 250.3.1.1" , 8333 )));
225
- addrman.Good (CAddress (addr6, NODE_NONE));
225
+ BOOST_CHECK ( addrman.Good (CAddress (addr6, NODE_NONE) ));
226
226
BOOST_CHECK (addrman.Add ({CAddress (addr7, NODE_NONE)}, ResolveService (" 250.1.1.3" , 8333 )));
227
- addrman.Good (CAddress (addr7, NODE_NONE));
227
+ BOOST_CHECK ( addrman.Good (CAddress (addr7, NODE_NONE) ));
228
228
229
229
// Test: 6 addrs + 1 addr from last test = 7.
230
230
BOOST_CHECK_EQUAL (addrman.size (), 7U );
@@ -816,19 +816,21 @@ BOOST_AUTO_TEST_CASE(addrman_selecttriedcollision)
816
816
for (unsigned int i = 1 ; i < 23 ; i++) {
817
817
CService addr = ResolveService (" 250.1.1." + ToString (i));
818
818
BOOST_CHECK (addrman.Add ({CAddress (addr, NODE_NONE)}, source));
819
- addrman.Good (addr);
820
819
821
- // No collisions yet .
822
- BOOST_CHECK (addrman.size () == i );
820
+ // No collisions in tried .
821
+ BOOST_CHECK (addrman.Good (addr) );
823
822
BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
824
823
}
825
824
826
825
// Ensure Good handles duplicates well.
826
+ // If an address is a duplicate, Good will return false but will not count it as a collision.
827
827
for (unsigned int i = 1 ; i < 23 ; i++) {
828
828
CService addr = ResolveService (" 250.1.1." + ToString (i));
829
- addrman.Good (addr);
830
829
831
- BOOST_CHECK (addrman.size () == 22 );
830
+ // Unable to add duplicate address to tried table.
831
+ BOOST_CHECK (!addrman.Good (addr));
832
+
833
+ // Verify duplicate address not marked as a collision.
832
834
BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
833
835
}
834
836
}
@@ -842,49 +844,45 @@ BOOST_AUTO_TEST_CASE(addrman_noevict)
842
844
for (unsigned int i = 1 ; i < 36 ; i++) {
843
845
CService addr = ResolveService (" 250.1.1." + ToString (i));
844
846
BOOST_CHECK (addrman.Add ({CAddress (addr, NODE_NONE)}, source));
845
- addrman.Good (addr);
846
847
847
848
// No collision yet.
848
- BOOST_CHECK (addrman.size () == i);
849
- BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
849
+ BOOST_CHECK (addrman.Good (addr));
850
850
}
851
851
852
- // Collision between 36 and 19.
852
+ // Collision in tried table between 36 and 19.
853
853
CService addr36 = ResolveService (" 250.1.1.36" );
854
854
BOOST_CHECK (addrman.Add ({CAddress (addr36, NODE_NONE)}, source));
855
- addrman.Good (addr36);
856
-
857
- BOOST_CHECK (addrman.size () == 36 );
855
+ BOOST_CHECK (!addrman.Good (addr36));
858
856
BOOST_CHECK_EQUAL (addrman.SelectTriedCollision ().first .ToString (), " 250.1.1.19:0" );
859
857
860
858
// 36 should be discarded and 19 not evicted.
859
+ // This means we keep 19 in the tried table and
860
+ // 36 stays in the new table.
861
861
addrman.ResolveCollisions ();
862
862
BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
863
863
864
864
// Lets create two collisions.
865
865
for (unsigned int i = 37 ; i < 59 ; i++) {
866
866
CService addr = ResolveService (" 250.1.1." + ToString (i));
867
867
BOOST_CHECK (addrman.Add ({CAddress (addr, NODE_NONE)}, source));
868
- addrman.Good (addr);
869
-
870
- BOOST_CHECK (addrman.size () == i);
871
- BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
868
+ BOOST_CHECK (addrman.Good (addr));
872
869
}
873
870
874
- // Cause a collision.
871
+ // Cause a collision in the tried table .
875
872
CService addr59 = ResolveService (" 250.1.1.59" );
876
873
BOOST_CHECK (addrman.Add ({CAddress (addr59, NODE_NONE)}, source));
877
- addrman.Good (addr59);
878
- BOOST_CHECK (addrman.size () == 59 );
874
+ BOOST_CHECK (!addrman.Good (addr59));
879
875
880
876
BOOST_CHECK_EQUAL (addrman.SelectTriedCollision ().first .ToString (), " 250.1.1.10:0" );
881
877
882
- // Cause a second collision.
878
+ // Cause a second collision in the new table .
883
879
BOOST_CHECK (!addrman.Add ({CAddress (addr36, NODE_NONE)}, source));
884
- addrman.Good (addr36);
885
- BOOST_CHECK (addrman.size () == 59 );
886
880
881
+ // 36 still cannot be moved from new to tried due to colliding with 19
882
+ BOOST_CHECK (!addrman.Good (addr36));
887
883
BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () != " [::]:0" );
884
+
885
+ // Resolve all collisions.
888
886
addrman.ResolveCollisions ();
889
887
BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
890
888
}
@@ -903,19 +901,16 @@ BOOST_AUTO_TEST_CASE(addrman_evictionworks)
903
901
for (unsigned int i = 1 ; i < 36 ; i++) {
904
902
CService addr = ResolveService (" 250.1.1." + ToString (i));
905
903
BOOST_CHECK (addrman.Add ({CAddress (addr, NODE_NONE)}, source));
906
- addrman.Good (addr);
907
904
908
905
// No collision yet.
909
- BOOST_CHECK (addrman.size () == i);
910
- BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
906
+ BOOST_CHECK (addrman.Good (addr));
911
907
}
912
908
913
909
// Collision between 36 and 19.
914
910
CService addr = ResolveService (" 250.1.1.36" );
915
911
BOOST_CHECK (addrman.Add ({CAddress (addr, NODE_NONE)}, source));
916
- addrman.Good (addr);
912
+ BOOST_CHECK (! addrman.Good (addr) );
917
913
918
- BOOST_CHECK_EQUAL (addrman.size (), 36 );
919
914
auto info = addrman.SelectTriedCollision ().first ;
920
915
BOOST_CHECK_EQUAL (info.ToString (), " 250.1.1.19:0" );
921
916
@@ -926,17 +921,17 @@ BOOST_AUTO_TEST_CASE(addrman_evictionworks)
926
921
addrman.ResolveCollisions ();
927
922
BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
928
923
929
- // If 36 was swapped for 19, then this should cause no collisions.
930
- BOOST_CHECK (!addrman.Add ({CAddress (addr, NODE_NONE)}, source));
931
- addrman.Good (addr);
932
-
924
+ // If 36 was swapped for 19, then adding 36 to tried should fail because we
925
+ // are attempting to add a duplicate.
926
+ // We check this by verifying Good() returns false and also verifying that
927
+ // we have no collisions.
928
+ BOOST_CHECK (!addrman.Good (addr));
933
929
BOOST_CHECK (addrman.SelectTriedCollision ().first .ToString () == " [::]:0" );
934
930
935
- // If we insert 19 it should collide with 36
931
+ // 19 should fail as a collision (not a duplicate) if we now attempt to move
932
+ // it to the tried table.
936
933
CService addr19 = ResolveService (" 250.1.1.19" );
937
- BOOST_CHECK (!addrman.Add ({CAddress (addr19, NODE_NONE)}, source));
938
- addrman.Good (addr19);
939
-
934
+ BOOST_CHECK (!addrman.Good (addr19));
940
935
BOOST_CHECK_EQUAL (addrman.SelectTriedCollision ().first .ToString (), " 250.1.1.36:0" );
941
936
942
937
addrman.ResolveCollisions ();
0 commit comments