provider testing
Juan Batiz-Benet committed
Sep 19, 2014 at 14:31 UTC
afb1d0104805fd7a940186107bcd6510834b26e4
3 files changed
+15
-8
routing/dht/dht.go
+8
-3
@@ -208,13 +208,18 @@ func (dht *IpfsDHT) putValueToNetwork(ctx context.Context, p *peer.Peer,
208
}
209
210
func (dht *IpfsDHT) putProvider(ctx context.Context, p *peer.Peer, key string) error {
211
- pmes := newMessage(Message_ADD_PROVIDER, string(key), 0)
211
213
- mes, err := msg.FromObject(p, pmes)
212
+ pmes := newMessage(Message_ADD_PROVIDER, string(key), 0)
213
+ rpmes, err := dht.sendRequest(ctx, p, pmes)
214
if err != nil {
215
return err
216
}
217
- return dht.sender.SendMessage(ctx, mes)
217
+
218
+ if *rpmes.Key != *pmes.Key {
219
+ return errors.New("provider not added correctly")
220
+ }
221
+
222
+ return nil
223
}
224
225
func (dht *IpfsDHT) getValueOrPeers(ctx context.Context, p *peer.Peer,
routing/dht/dht_test.go
+5
-4
@@ -1,6 +1,7 @@
1
package dht
2
3
import (
4
+ "bytes"
5
"testing"
6
7
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
@@ -44,7 +45,7 @@ func setupDHT(t *testing.T, p *peer.Peer) *IpfsDHT {
45
46
func setupDHTS(n int, t *testing.T) ([]*ma.Multiaddr, []*peer.Peer, []*IpfsDHT) {
47
var addrs []*ma.Multiaddr
47
- for i := 0; i < 4; i++ {
48
+ for i := 0; i < n; i++ {
49
a, err := ma.NewMultiaddr(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", 5000+i))
50
if err != nil {
51
t.Fatal(err)
@@ -53,13 +54,13 @@ func setupDHTS(n int, t *testing.T) ([]*ma.Multiaddr, []*peer.Peer, []*IpfsDHT)
54
}
55
56
var peers []*peer.Peer
56
- for i := 0; i < 4; i++ {
57
+ for i := 0; i < n; i++ {
58
p := makePeer(addrs[i])
59
peers = append(peers, p)
60
}
61
61
- var dhts []*IpfsDHT
62
- for i := 0; i < 4; i++ {
62
+ dhts := make([]*IpfsDHT, n)
63
+ for i := 0; i < n; i++ {
64
dhts[i] = setupDHT(t, peers[i])
65
}
66
routing/dht/routing.go
+2
-1
@@ -90,7 +90,6 @@ func (dht *IpfsDHT) GetValue(key u.Key, timeout time.Duration) ([]byte, error) {
90
}
91
92
u.DOut("[%s] GetValue %v %v\n", dht.self.ID.Pretty(), key, result.value)
93
-
93
if result.value == nil {
94
return nil, u.ErrNotFound
95
}
@@ -111,6 +110,8 @@ func (dht *IpfsDHT) Provide(key u.Key) error {
110
return kb.ErrLookupFailure
111
}
112
113
+ //TODO FIX: this doesn't work! it needs to be sent to the actual nearest peers.
114
+ // `peers` are the closest peers we have, not the ones that should get the value.
115
for _, p := range peers {
116
err := dht.putProvider(ctx, p, string(key))
117
if err != nil {