1
0
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:
Juan Batiz-Benet
2014-12-16 14:35:52 -08:00
parent 7fdafaf1e5
commit bc2d35fd4d
8 changed files with 340 additions and 283 deletions

View File

@ -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)