@cryptotaxi247 / kubo / commits / 9c6a3b209

peerstore test

Juan Batiz-Benet committed Sep 16, 2014 at 05:48 UTC 9c6a3b2091ae78d6721924be5a31f1a2b3568834
2 files changed +91 -8
peer/peerstore.go
+9 -8
@@ -12,9 +12,9 @@ import (
12 // Peerstore provides a threadsafe collection for peers.
13 type Peerstore interface {
14 Get(ID) (*Peer, error)
15 - Add(*Peer) error
16 - Remove(ID) error
17 - All() (*map[u.Key]*Peer, error)
15 + Put(*Peer) error
16 + Delete(ID) error
17 + All() (*Map, error)
18 }
19
20 type peerstore struct {
@@ -33,7 +33,8 @@ func (p *peerstore) Get(i ID) (*Peer, error) {
33 p.RLock()
34 defer p.RUnlock()
35
36 - val, err := p.peers.Get(ds.NewKey(string(i)))
36 + k := ds.NewKey(string(i))
37 + val, err := p.peers.Get(k)
38 if err != nil {
39 return nil, err
40 }
@@ -45,7 +46,7 @@ func (p *peerstore) Get(i ID) (*Peer, error) {
46 return peer, nil
47 }
48
48 -func (p *peerstore) Add(peer *Peer) error {
49 +func (p *peerstore) Put(peer *Peer) error {
50 p.Lock()
51 defer p.Unlock()
52
@@ -53,7 +54,7 @@ func (p *peerstore) Add(peer *Peer) error {
54 return p.peers.Put(k, peer)
55 }
56
56 -func (p *peerstore) Remove(i ID) error {
57 +func (p *peerstore) Delete(i ID) error {
58 p.Lock()
59 defer p.Unlock()
60
@@ -61,7 +62,7 @@ func (p *peerstore) Remove(i ID) error {
62 return p.peers.Delete(k)
63 }
64
64 -func (p *peerstore) All() (*map[u.Key]*Peer, error) {
65 +func (p *peerstore) All() (*Map, error) {
66 p.RLock()
67 defer p.RUnlock()
68
@@ -70,7 +71,7 @@ func (p *peerstore) All() (*map[u.Key]*Peer, error) {
71 return nil, err
72 }
73
73 - ps := &map[u.Key]*Peer{}
74 + ps := &Map{}
75 for _, k := range l {
76 val, err := p.peers.Get(k)
77 if err != nil {
peer/peerstore_test.go new
+82
@@ -0,0 +1,82 @@
1 +package peer
2 +
3 +import (
4 + "errors"
5 + "testing"
6 +
7 + ma "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
8 +)
9 +
10 +func setupPeer(id string, addr string) (*Peer, error) {
11 + tcp, err := ma.NewMultiaddr(addr)
12 + if err != nil {
13 + return nil, err
14 + }
15 +
16 + p := &Peer{ID: ID(id)}
17 + p.AddAddress(tcp)
18 + return p, nil
19 +}
20 +
21 +func TestPeerstore(t *testing.T) {
22 +
23 + ps := NewPeerstore()
24 +
25 + p11, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31", "/ip4/127.0.0.1/tcp/1234")
26 + p21, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32", "/ip4/127.0.0.1/tcp/2345")
27 + // p31, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33", "/ip4/127.0.0.1/tcp/3456")
28 + // p41, _ := setupPeer("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a34", "/ip4/127.0.0.1/tcp/4567")
29 +
30 + err := ps.Put(p11)
31 + if err != nil {
32 + t.Error(err)
33 + }
34 +
35 + p12, err := ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31"))
36 + if err != nil {
37 + t.Error(err)
38 + }
39 +
40 + if p11 != p12 {
41 + t.Error(errors.New("peers should be the same"))
42 + }
43 +
44 + err = ps.Put(p21)
45 + if err != nil {
46 + t.Error(err)
47 + }
48 +
49 + p22, err := ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32"))
50 + if err != nil {
51 + t.Error(err)
52 + }
53 +
54 + if p21 != p22 {
55 + t.Error(errors.New("peers should be the same"))
56 + }
57 +
58 + _, err = ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"))
59 + if err == nil {
60 + t.Error(errors.New("should've been an error here"))
61 + }
62 +
63 + err = ps.Delete(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31"))
64 + if err != nil {
65 + t.Error(err)
66 + }
67 +
68 + _, err = ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a31"))
69 + if err == nil {
70 + t.Error(errors.New("should've been an error here"))
71 + }
72 +
73 + p22, err = ps.Get(ID("11140beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a32"))
74 + if err != nil {
75 + t.Error(err)
76 + }
77 +
78 + if p21 != p22 {
79 + t.Error(errors.New("peers should be the same"))
80 + }
81 +
82 +}