@@ -943,3 +943,57 @@ func testCapabilityIndexRemove(t *testing.T) {
943943 t .Fatalf ("EachAddrFiltered '42:101' expected 1 peer, got %d" , c )
944944 }
945945}
946+
947+ // TestCapabilityNeighbourhoodDepth tests that depth calculations filtered by capability is correct
948+ func TestCapabilityNeighbourhoodDepth (t * testing.T ) {
949+ baseAddressBytes := RandomBzzAddr ().OAddr
950+ kad := NewKademlia (baseAddressBytes , NewKadParams ())
951+ cap_both := capability .NewCapability (42 , 2 )
952+ cap_both .Set (0 )
953+ cap_both .Set (1 )
954+ kad .RegisterCapabilityIndex ("both" , * cap_both )
955+ cap_one := capability .NewCapability (42 , 2 )
956+ cap_one .Set (0 )
957+ kad .RegisterCapabilityIndex ("one" , * cap_one )
958+
959+ baseAddress := pot .NewAddressFromBytes (baseAddressBytes )
960+
961+ // generate the peers
962+ var peers []* Peer
963+ for i := 0 ; i < 2 ; i ++ {
964+ addr := pot .RandomAddressAt (baseAddress , i )
965+ p := newTestDiscoveryPeer (addr , kad )
966+ p .BzzAddr .Capabilities .Add (cap_both )
967+ peers = append (peers )
968+ kad .Register (p .BzzAddr )
969+ kad .On (p )
970+ }
971+
972+ addrClosestBoth := pot .RandomAddressAt (baseAddress , 7 )
973+ peerClosestBoth := newTestDiscoveryPeer (addrClosestBoth , kad )
974+ peerClosestBoth .BzzAddr .Capabilities .Add (cap_both )
975+ kad .Register (peerClosestBoth .BzzAddr )
976+ kad .On (peerClosestBoth )
977+
978+ addrClosestOne := pot .RandomAddressAt (baseAddress , 7 )
979+ peerClosestOne := newTestDiscoveryPeer (addrClosestOne , kad )
980+ peerClosestOne .BzzAddr .Capabilities .Add (cap_one )
981+ kad .Register (peerClosestOne .BzzAddr )
982+ kad .On (peerClosestOne )
983+
984+ depth , err := kad .NeighbourhoodDepthCapability ("both" )
985+ if err != nil {
986+ t .Fatal (err )
987+ }
988+ if depth != 1 {
989+ t .Fatalf ("cap 'both' expected depth 1, was %d" , depth )
990+ }
991+
992+ depth , err = kad .NeighbourhoodDepthCapability ("one" )
993+ if err != nil {
994+ t .Fatal (err )
995+ }
996+ if depth != 2 {
997+ t .Fatalf ("cap 'one' expected depth 2, was %d" , depth )
998+ }
999+ }
0 commit comments