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
+}