From 9c6a3b2091ae78d6721924be5a31f1a2b3568834 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet <juan@benet.ai> Date: Tue, 16 Sep 2014 05:48:04 -0700 Subject: [PATCH] peerstore test --- peer/peerstore.go | 17 ++++----- peer/peerstore_test.go | 82 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 8 deletions(-) create mode 100644 peer/peerstore_test.go diff --git a/peer/peerstore.go b/peer/peerstore.go index b41ee1eb..2184d894 100644 --- a/peer/peerstore.go +++ b/peer/peerstore.go @@ -12,9 +12,9 @@ import ( // Peerstore provides a threadsafe collection for peers. type Peerstore interface { Get(ID) (*Peer, error) - Add(*Peer) error - Remove(ID) error - All() (*map[u.Key]*Peer, error) + Put(*Peer) error + Delete(ID) error + All() (*Map, error) } type peerstore struct { @@ -33,7 +33,8 @@ func (p *peerstore) Get(i ID) (*Peer, error) { p.RLock() defer p.RUnlock() - val, err := p.peers.Get(ds.NewKey(string(i))) + k := ds.NewKey(string(i)) + val, err := p.peers.Get(k) if err != nil { return nil, err } @@ -45,7 +46,7 @@ func (p *peerstore) Get(i ID) (*Peer, error) { return peer, nil } -func (p *peerstore) Add(peer *Peer) error { +func (p *peerstore) Put(peer *Peer) error { p.Lock() defer p.Unlock() @@ -53,7 +54,7 @@ func (p *peerstore) Add(peer *Peer) error { return p.peers.Put(k, peer) } -func (p *peerstore) Remove(i ID) error { +func (p *peerstore) Delete(i ID) error { p.Lock() defer p.Unlock() @@ -61,7 +62,7 @@ func (p *peerstore) Remove(i ID) error { return p.peers.Delete(k) } -func (p *peerstore) All() (*map[u.Key]*Peer, error) { +func (p *peerstore) All() (*Map, error) { p.RLock() defer p.RUnlock() @@ -70,7 +71,7 @@ func (p *peerstore) All() (*map[u.Key]*Peer, error) { return nil, err } - ps := &map[u.Key]*Peer{} + ps := &Map{} for _, k := range l { val, err := p.peers.Get(k) if err != nil { diff --git a/peer/peerstore_test.go b/peer/peerstore_test.go new file mode 100644 index 00000000..18d977ff --- /dev/null +++ b/peer/peerstore_test.go @@ -0,0 +1,82 @@ +package peer + +import ( + "errors" + "testing" + + ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr" +) + +func setupPeer(id string, addr string) (*Peer, error) { + tcp, err := ma.NewMultiaddr(addr) + if err != nil { + return nil, err + } + + p := &Peer{ID: ID(id)} + p.AddAddress(tcp) + return p, nil +} + +func TestPeerstore(t *testing.T) { + + ps := NewPeerstore() + + p11, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31", "/ip4/127.0.0.1/tcp/1234") + p21, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32", "/ip4/127.0.0.1/tcp/2345") + // p31, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33", "/ip4/127.0.0.1/tcp/3456") + // p41, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a34", "/ip4/127.0.0.1/tcp/4567") + + err := ps.Put(p11) + if err != nil { + t.Error(err) + } + + p12, err := ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31")) + if err != nil { + t.Error(err) + } + + if p11 != p12 { + t.Error(errors.New("peers should be the same")) + } + + err = ps.Put(p21) + if err != nil { + t.Error(err) + } + + p22, err := ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32")) + if err != nil { + t.Error(err) + } + + if p21 != p22 { + t.Error(errors.New("peers should be the same")) + } + + _, err = ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33")) + if err == nil { + t.Error(errors.New("should've been an error here")) + } + + err = ps.Delete(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31")) + if err != nil { + t.Error(err) + } + + _, err = ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31")) + if err == nil { + t.Error(errors.New("should've been an error here")) + } + + p22, err = ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32")) + if err != nil { + t.Error(err) + } + + if p21 != p22 { + t.Error(errors.New("peers should be the same")) + } + +} -- GitLab