From a5d54ea29e7cc6d3aa0515970d31e2574fea918b Mon Sep 17 00:00:00 2001 From: Jeromy Date: Mon, 1 Sep 2014 21:55:59 -0700 Subject: [PATCH] fix up tests that started failing after changing identify code --- core/core.go | 2 +- identify/identify.go | 4 ++-- routing/dht/dht_test.go | 51 ++++++++++++++++++++++++++++------------- routing/dht/routing.go | 3 ++- swarm/swarm.go | 7 +++++- 5 files changed, 46 insertions(+), 21 deletions(-) diff --git a/core/core.go b/core/core.go index 2d7ba0efe..2b32aafa9 100644 --- a/core/core.go +++ b/core/core.go @@ -93,7 +93,7 @@ func NewIpfsNode(cfg *config.Config, online bool) (*IpfsNode, error) { } func loadBitswap(cfg *config.Config, d ds.Datastore) (*bitswap.BitSwap, error) { - maddr, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/4001") + maddr, err := ma.NewMultiaddr(cfg.Identity.Address) if err != nil { return nil, err } diff --git a/identify/identify.go b/identify/identify.go index a238c4a47..e19b53ce7 100644 --- a/identify/identify.go +++ b/identify/identify.go @@ -43,7 +43,7 @@ func Handshake(self, remote *peer.Peer, in, out chan []byte) error { } // Challenge peer to ensure they own the given pubkey - secret := make([]byte, 32) + secret := make([]byte, 16) rand.Read(secret) encrypted, err := rsa.EncryptPKCS1v15(rand.Reader, pubkey.(*rsa.PublicKey), secret) if err != nil { @@ -66,7 +66,7 @@ func Handshake(self, remote *peer.Peer, in, out chan []byte) error { return errors.New("Recieved incorrect challenge response!") } - remote.ID = peer.ID(resp) + remote.ID = peer.ID(pbresp.GetId()) remote.PubKey = pubkey u.DOut("[%s] identify: Got node id: %s\n", self.ID.Pretty(), remote.ID.Pretty()) diff --git a/routing/dht/dht_test.go b/routing/dht/dht_test.go index 817ecec37..c8a0859d3 100644 --- a/routing/dht/dht_test.go +++ b/routing/dht/dht_test.go @@ -4,6 +4,7 @@ import ( "testing" ds "github.com/jbenet/datastore.go" + identify "github.com/jbenet/go-ipfs/identify" peer "github.com/jbenet/go-ipfs/peer" swarm "github.com/jbenet/go-ipfs/swarm" u "github.com/jbenet/go-ipfs/util" @@ -27,7 +28,17 @@ func setupDHTS(n int, t *testing.T) ([]*ma.Multiaddr, []*peer.Peer, []*IpfsDHT) for i := 0; i < 4; i++ { p := new(peer.Peer) p.AddAddress(addrs[i]) - p.ID = peer.ID([]byte(fmt.Sprintf("peer_%d", i))) + kp, err := identify.GenKeypair(256) + if err != nil { + panic(err) + } + p.PubKey = kp.Pub + p.PrivKey = kp.Priv + id, err := kp.ID() + if err != nil { + panic(err) + } + p.ID = id peers = append(peers, p) } @@ -46,8 +57,26 @@ func setupDHTS(n int, t *testing.T) ([]*ma.Multiaddr, []*peer.Peer, []*IpfsDHT) return addrs, peers, dhts } +func makePeer(addr *ma.Multiaddr) *peer.Peer { + p := new(peer.Peer) + p.AddAddress(addr) + kp, err := identify.GenKeypair(256) + if err != nil { + panic(err) + } + p.PrivKey = kp.Priv + p.PubKey = kp.Pub + id, err := kp.ID() + if err != nil { + panic(err) + } + + p.ID = id + return p +} + func TestPing(t *testing.T) { - u.Debug = false + u.Debug = true addrA, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/2222") if err != nil { t.Fatal(err) @@ -57,13 +86,8 @@ func TestPing(t *testing.T) { t.Fatal(err) } - peerA := new(peer.Peer) - peerA.AddAddress(addrA) - peerA.ID = peer.ID([]byte("peerA")) - - peerB := new(peer.Peer) - peerB.AddAddress(addrB) - peerB.ID = peer.ID([]byte("peerB")) + peerA := makePeer(addrA) + peerB := makePeer(addrB) neta := swarm.NewSwarm(peerA) err = neta.Listen() @@ -108,13 +132,8 @@ func TestValueGetSet(t *testing.T) { t.Fatal(err) } - peerA := new(peer.Peer) - peerA.AddAddress(addrA) - peerA.ID = peer.ID([]byte("peerA")) - - peerB := new(peer.Peer) - peerB.AddAddress(addrB) - peerB.ID = peer.ID([]byte("peerB")) + peerA := makePeer(addrA) + peerB := makePeer(addrB) neta := swarm.NewSwarm(peerA) err = neta.Listen() diff --git a/routing/dht/routing.go b/routing/dht/routing.go index 5ab1b65de..3b3b4875b 100644 --- a/routing/dht/routing.go +++ b/routing/dht/routing.go @@ -315,8 +315,9 @@ func (dht *IpfsDHT) FindPeer(id peer.ID, timeout time.Duration) (*peer.Peer, err for routeLevel < len(dht.routingTables) { pmes, err := dht.findPeerSingle(p, id, timeout, routeLevel) plist := pmes.GetPeers() - if len(plist) == 0 { + if plist == nil || len(plist) == 0 { routeLevel++ + continue } found := plist[0] diff --git a/swarm/swarm.go b/swarm/swarm.go index dbf6dd0ee..fc32ff249 100644 --- a/swarm/swarm.go +++ b/swarm/swarm.go @@ -184,10 +184,15 @@ func (s *Swarm) handleNewConn(nconn net.Conn) { maddr, err := ma.NewMultiaddr(string(addr)) if err != nil { u.PErr("Got invalid address from peer.") + s.Error(err) + return } p.AddAddress(maddr) - s.StartConn(conn) + err = s.StartConn(conn) + if err != nil { + s.Error(err) + } } // Close closes a swarm.