mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-09 17:22:21 +08:00
Lots of fixes. DHT tests pass
This commit is contained in:
@ -2,6 +2,7 @@ package dht
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"math/rand"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
@ -20,6 +21,16 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func randMultiaddr(t *testing.T) ma.Multiaddr {
|
||||
|
||||
s := fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", 10000+rand.Intn(40000))
|
||||
a, err := ma.NewMultiaddr(s)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return a
|
||||
}
|
||||
|
||||
func setupDHT(ctx context.Context, t *testing.T, p peer.Peer) *IpfsDHT {
|
||||
peerstore := peer.NewPeerstore()
|
||||
|
||||
@ -29,7 +40,6 @@ func setupDHT(ctx context.Context, t *testing.T, p peer.Peer) *IpfsDHT {
|
||||
}
|
||||
|
||||
d := NewDHT(ctx, p, peerstore, n, ds.NewMapDatastore())
|
||||
d.network.SetHandler(inet.ProtocolDHT, d.handleNewStream)
|
||||
|
||||
d.Validators["v"] = func(u.Key, []byte) error {
|
||||
return nil
|
||||
@ -40,7 +50,8 @@ func setupDHT(ctx context.Context, t *testing.T, p peer.Peer) *IpfsDHT {
|
||||
func setupDHTS(ctx context.Context, n int, t *testing.T) ([]ma.Multiaddr, []peer.Peer, []*IpfsDHT) {
|
||||
var addrs []ma.Multiaddr
|
||||
for i := 0; i < n; i++ {
|
||||
a, err := ma.NewMultiaddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", 5000+i))
|
||||
r := rand.Intn(40000)
|
||||
a, err := ma.NewMultiaddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", 10000+r))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -85,15 +96,9 @@ func makePeer(addr ma.Multiaddr) peer.Peer {
|
||||
func TestPing(t *testing.T) {
|
||||
// t.Skip("skipping test to debug another")
|
||||
ctx := context.Background()
|
||||
u.Debug = false
|
||||
addrA, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/2222")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
addrB, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/5678")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
addrA := randMultiaddr(t)
|
||||
addrB := randMultiaddr(t)
|
||||
|
||||
peerA := makePeer(addrA)
|
||||
peerB := makePeer(addrB)
|
||||
@ -106,21 +111,22 @@ func TestPing(t *testing.T) {
|
||||
defer dhtA.network.Close()
|
||||
defer dhtB.network.Close()
|
||||
|
||||
err = dhtA.Connect(ctx, peerB)
|
||||
if err != nil {
|
||||
if err := dhtA.Connect(ctx, peerB); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// if err := dhtB.Connect(ctx, peerA); err != nil {
|
||||
// t.Fatal(err)
|
||||
// }
|
||||
|
||||
//Test that we can ping the node
|
||||
ctxT, _ := context.WithTimeout(ctx, 100*time.Millisecond)
|
||||
err = dhtA.Ping(ctxT, peerB)
|
||||
if err != nil {
|
||||
if err := dhtA.Ping(ctxT, peerB); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
ctxT, _ = context.WithTimeout(ctx, 100*time.Millisecond)
|
||||
err = dhtB.Ping(ctxT, peerA)
|
||||
if err != nil {
|
||||
if err := dhtB.Ping(ctxT, peerA); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
@ -129,15 +135,9 @@ func TestValueGetSet(t *testing.T) {
|
||||
// t.Skip("skipping test to debug another")
|
||||
|
||||
ctx := context.Background()
|
||||
u.Debug = false
|
||||
addrA, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/11235")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
addrB, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/15679")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
addrA := randMultiaddr(t)
|
||||
addrB := randMultiaddr(t)
|
||||
|
||||
peerA := makePeer(addrA)
|
||||
peerB := makePeer(addrB)
|
||||
@ -156,7 +156,7 @@ func TestValueGetSet(t *testing.T) {
|
||||
defer dhtA.network.Close()
|
||||
defer dhtB.network.Close()
|
||||
|
||||
err = dhtA.Connect(ctx, peerB)
|
||||
err := dhtA.Connect(ctx, peerB)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -189,8 +189,6 @@ func TestProvides(t *testing.T) {
|
||||
// t.Skip("skipping test to debug another")
|
||||
ctx := context.Background()
|
||||
|
||||
u.Debug = false
|
||||
|
||||
_, peers, dhts := setupDHTS(ctx, 4, t)
|
||||
defer func() {
|
||||
for i := 0; i < 4; i++ {
|
||||
@ -251,7 +249,6 @@ func TestProvidesAsync(t *testing.T) {
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
u.Debug = false
|
||||
|
||||
_, peers, dhts := setupDHTS(ctx, 4, t)
|
||||
defer func() {
|
||||
@ -317,7 +314,7 @@ func TestLayeredGet(t *testing.T) {
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
u.Debug = false
|
||||
|
||||
_, peers, dhts := setupDHTS(ctx, 4, t)
|
||||
defer func() {
|
||||
for i := 0; i < 4; i++ {
|
||||
@ -371,7 +368,6 @@ func TestFindPeer(t *testing.T) {
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
u.Debug = false
|
||||
|
||||
_, peers, dhts := setupDHTS(ctx, 4, t)
|
||||
defer func() {
|
||||
@ -412,12 +408,13 @@ func TestFindPeer(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestFindPeersConnectedToPeer(t *testing.T) {
|
||||
t.Skip("not quite correct (see note)")
|
||||
|
||||
if testing.Short() {
|
||||
t.SkipNow()
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
u.Debug = false
|
||||
|
||||
_, peers, dhts := setupDHTS(ctx, 4, t)
|
||||
defer func() {
|
||||
@ -516,15 +513,9 @@ func TestConnectCollision(t *testing.T) {
|
||||
log.Notice("Running Time: ", rtime)
|
||||
|
||||
ctx := context.Background()
|
||||
u.Debug = false
|
||||
addrA, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/11235")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
addrB, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/15679")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
addrA := randMultiaddr(t)
|
||||
addrB := randMultiaddr(t)
|
||||
|
||||
peerA := makePeer(addrA)
|
||||
peerB := makePeer(addrB)
|
||||
|
Reference in New Issue
Block a user