@cryptotaxi247 / kubo / commits / afb1d0104

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 {