dht tests pass again
Juan Batiz-Benet committed
Sep 19, 2014 at 18:11 UTC
aa29603923673f60af4bfdd9f947daba37ed9f17
5 files changed
+169
-143
routing/dht/Message.go
+1
-1
@@ -46,7 +46,7 @@ func peersToPBPeers(peers []*peer.Peer) []*Message_Peer {
46
func (m *Message) GetClusterLevel() int {
47
level := m.GetClusterLevelRaw() - 1
48
if level < 0 {
49
- u.PErr("GetClusterLevel: no routing level specified, assuming 0\n")
49
+ u.DErr("GetClusterLevel: no routing level specified, assuming 0\n")
50
level = 0
51
}
52
return int(level)
routing/dht/dht.go
+4
-1
@@ -215,6 +215,7 @@ func (dht *IpfsDHT) putProvider(ctx context.Context, p *peer.Peer, key string) e
215
return err
216
}
217
218
+ u.DOut("[%s] putProvider: %s for %s\n", dht.self.ID.Pretty(), p.ID.Pretty(), key)
219
if *rpmes.Key != *pmes.Key {
220
return errors.New("provider not added correctly")
221
}
@@ -393,6 +394,8 @@ func (dht *IpfsDHT) addProviders(key u.Key, peers []*Message_Peer) []*peer.Peer
394
continue
395
}
396
397
+ u.DOut("[%s] adding provider: %s for %s", dht.self.ID.Pretty(), p, key)
398
+
399
// Dont add outselves to the list
400
if p.ID.Equal(dht.self.ID) {
401
continue
@@ -464,7 +467,7 @@ func (dht *IpfsDHT) peerFromInfo(pbp *Message_Peer) (*peer.Peer, error) {
467
}
468
469
// create new Peer
467
- p := &peer.Peer{ID: id}
470
+ p = &peer.Peer{ID: id}
471
p.AddAddress(maddr)
472
dht.peerstore.Put(p)
473
}
routing/dht/dht_test.go
+156
-139
@@ -86,7 +86,9 @@ func makePeer(addr *ma.Multiaddr) *peer.Peer {
86
}
87
88
func TestPing(t *testing.T) {
89
- u.Debug = true
89
+ // t.Skip("skipping test to debug another")
90
+
91
+ u.Debug = false
92
addrA, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/2222")
93
if err != nil {
94
t.Fatal(err)
@@ -104,6 +106,8 @@ func TestPing(t *testing.T) {
106
107
defer dhtA.Halt()
108
defer dhtB.Halt()
109
+ defer dhtA.network.Close()
110
+ defer dhtB.network.Close()
111
112
_, err = dhtA.Connect(peerB)
113
if err != nil {
@@ -118,7 +122,9 @@ func TestPing(t *testing.T) {
122
}
123
124
func TestValueGetSet(t *testing.T) {
121
- u.Debug = true
125
+ // t.Skip("skipping test to debug another")
126
+
127
+ u.Debug = false
128
addrA, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/1235")
129
if err != nil {
130
t.Fatal(err)
@@ -136,6 +142,8 @@ func TestValueGetSet(t *testing.T) {
142
143
defer dhtA.Halt()
144
defer dhtB.Halt()
145
+ defer dhtA.network.Close()
146
+ defer dhtB.network.Close()
147
148
_, err = dhtA.Connect(peerB)
149
if err != nil {
@@ -155,140 +163,149 @@ func TestValueGetSet(t *testing.T) {
163
164
}
165
158
-// func TestProvides(t *testing.T) {
159
-// u.Debug = false
160
-//
161
-// _, peers, dhts := setupDHTS(4, t)
162
-// defer func() {
163
-// for i := 0; i < 4; i++ {
164
-// dhts[i].Halt()
165
-// }
166
-// }()
167
-//
168
-// _, err := dhts[0].Connect(peers[1])
169
-// if err != nil {
170
-// t.Fatal(err)
171
-// }
172
-//
173
-// _, err = dhts[1].Connect(peers[2])
174
-// if err != nil {
175
-// t.Fatal(err)
176
-// }
177
-//
178
-// _, err = dhts[1].Connect(peers[3])
179
-// if err != nil {
180
-// t.Fatal(err)
181
-// }
182
-//
183
-// err = dhts[3].putLocal(u.Key("hello"), []byte("world"))
184
-// if err != nil {
185
-// t.Fatal(err)
186
-// }
187
-//
188
-// bits, err := dhts[3].getLocal(u.Key("hello"))
189
-// if err != nil && bytes.Equal(bits, []byte("world")) {
190
-// t.Fatal(err)
191
-// }
192
-//
193
-// err = dhts[3].Provide(u.Key("hello"))
194
-// if err != nil {
195
-// t.Fatal(err)
196
-// }
197
-//
198
-// time.Sleep(time.Millisecond * 60)
199
-//
200
-// provs, err := dhts[0].FindProviders(u.Key("hello"), time.Second)
201
-// if err != nil {
202
-// t.Fatal(err)
203
-// }
204
-//
205
-// if len(provs) != 1 {
206
-// t.Fatal("Didnt get back providers")
207
-// }
208
-// }
209
-//
210
-// func TestLayeredGet(t *testing.T) {
211
-// u.Debug = false
212
-// addrs, _, dhts := setupDHTS(4, t)
213
-// defer func() {
214
-// for i := 0; i < 4; i++ {
215
-// dhts[i].Halt()
216
-// }
217
-// }()
218
-//
219
-// _, err := dhts[0].Connect(addrs[1])
220
-// if err != nil {
221
-// t.Fatalf("Failed to connect: %s", err)
222
-// }
223
-//
224
-// _, err = dhts[1].Connect(addrs[2])
225
-// if err != nil {
226
-// t.Fatal(err)
227
-// }
228
-//
229
-// _, err = dhts[1].Connect(addrs[3])
230
-// if err != nil {
231
-// t.Fatal(err)
232
-// }
233
-//
234
-// err = dhts[3].putLocal(u.Key("hello"), []byte("world"))
235
-// if err != nil {
236
-// t.Fatal(err)
237
-// }
238
-//
239
-// err = dhts[3].Provide(u.Key("hello"))
240
-// if err != nil {
241
-// t.Fatal(err)
242
-// }
243
-//
244
-// time.Sleep(time.Millisecond * 60)
245
-//
246
-// val, err := dhts[0].GetValue(u.Key("hello"), time.Second)
247
-// if err != nil {
248
-// t.Fatal(err)
249
-// }
250
-//
251
-// if string(val) != "world" {
252
-// t.Fatal("Got incorrect value.")
253
-// }
254
-//
255
-// }
256
-//
257
-// func TestFindPeer(t *testing.T) {
258
-// u.Debug = false
259
-//
260
-// addrs, peers, dhts := setupDHTS(4, t)
261
-// go func() {
262
-// for i := 0; i < 4; i++ {
263
-// dhts[i].Halt()
264
-// }
265
-// }()
266
-//
267
-// _, err := dhts[0].Connect(addrs[1])
268
-// if err != nil {
269
-// t.Fatal(err)
270
-// }
271
-//
272
-// _, err = dhts[1].Connect(addrs[2])
273
-// if err != nil {
274
-// t.Fatal(err)
275
-// }
276
-//
277
-// _, err = dhts[1].Connect(addrs[3])
278
-// if err != nil {
279
-// t.Fatal(err)
280
-// }
281
-//
282
-// p, err := dhts[0].FindPeer(peers[2].ID, time.Second)
283
-// if err != nil {
284
-// t.Fatal(err)
285
-// }
286
-//
287
-// if p == nil {
288
-// t.Fatal("Failed to find peer.")
289
-// }
290
-//
291
-// if !p.ID.Equal(peers[2].ID) {
292
-// t.Fatal("Didnt find expected peer.")
293
-// }
294
-// }
166
+func TestProvides(t *testing.T) {
167
+ // t.Skip("skipping test to debug another")
168
+
169
+ u.Debug = false
170
+
171
+ _, peers, dhts := setupDHTS(4, t)
172
+ defer func() {
173
+ for i := 0; i < 4; i++ {
174
+ dhts[i].Halt()
175
+ defer dhts[i].network.Close()
176
+ }
177
+ }()
178
+
179
+ _, err := dhts[0].Connect(peers[1])
180
+ if err != nil {
181
+ t.Fatal(err)
182
+ }
183
+
184
+ _, err = dhts[1].Connect(peers[2])
185
+ if err != nil {
186
+ t.Fatal(err)
187
+ }
188
+
189
+ _, err = dhts[1].Connect(peers[3])
190
+ if err != nil {
191
+ t.Fatal(err)
192
+ }
193
+
194
+ err = dhts[3].putLocal(u.Key("hello"), []byte("world"))
195
+ if err != nil {
196
+ t.Fatal(err)
197
+ }
198
+
199
+ bits, err := dhts[3].getLocal(u.Key("hello"))
200
+ if err != nil && bytes.Equal(bits, []byte("world")) {
201
+ t.Fatal(err)
202
+ }
203
+
204
+ err = dhts[3].Provide(u.Key("hello"))
205
+ if err != nil {
206
+ t.Fatal(err)
207
+ }
208
+
209
+ time.Sleep(time.Millisecond * 60)
210
+
211
+ provs, err := dhts[0].FindProviders(u.Key("hello"), time.Second)
212
+ if err != nil {
213
+ t.Fatal(err)
214
+ }
215
+
216
+ if len(provs) != 1 {
217
+ t.Fatal("Didnt get back providers")
218
+ }
219
+}
220
+
221
+func TestLayeredGet(t *testing.T) {
222
+ // t.Skip("skipping test to debug another")
223
+
224
+ u.Debug = false
225
+ _, peers, dhts := setupDHTS(4, t)
226
+ defer func() {
227
+ for i := 0; i < 4; i++ {
228
+ dhts[i].Halt()
229
+ defer dhts[i].network.Close()
230
+ }
231
+ }()
232
+
233
+ _, err := dhts[0].Connect(peers[1])
234
+ if err != nil {
235
+ t.Fatalf("Failed to connect: %s", err)
236
+ }
237
+
238
+ _, err = dhts[1].Connect(peers[2])
239
+ if err != nil {
240
+ t.Fatal(err)
241
+ }
242
+
243
+ _, err = dhts[1].Connect(peers[3])
244
+ if err != nil {
245
+ t.Fatal(err)
246
+ }
247
+
248
+ err = dhts[3].putLocal(u.Key("hello"), []byte("world"))
249
+ if err != nil {
250
+ t.Fatal(err)
251
+ }
252
+
253
+ err = dhts[3].Provide(u.Key("hello"))
254
+ if err != nil {
255
+ t.Fatal(err)
256
+ }
257
+
258
+ time.Sleep(time.Millisecond * 60)
259
+
260
+ val, err := dhts[0].GetValue(u.Key("hello"), time.Second)
261
+ if err != nil {
262
+ t.Fatal(err)
263
+ }
264
+
265
+ if string(val) != "world" {
266
+ t.Fatal("Got incorrect value.")
267
+ }
268
+
269
+}
270
+
271
+func TestFindPeer(t *testing.T) {
272
+ // t.Skip("skipping test to debug another")
273
+
274
+ u.Debug = false
275
+
276
+ _, peers, dhts := setupDHTS(4, t)
277
+ defer func() {
278
+ for i := 0; i < 4; i++ {
279
+ dhts[i].Halt()
280
+ dhts[i].network.Close()
281
+ }
282
+ }()
283
+
284
+ _, err := dhts[0].Connect(peers[1])
285
+ if err != nil {
286
+ t.Fatal(err)
287
+ }
288
+
289
+ _, err = dhts[1].Connect(peers[2])
290
+ if err != nil {
291
+ t.Fatal(err)
292
+ }
293
+
294
+ _, err = dhts[1].Connect(peers[3])
295
+ if err != nil {
296
+ t.Fatal(err)
297
+ }
298
+
299
+ p, err := dhts[0].FindPeer(peers[2].ID, time.Second)
300
+ if err != nil {
301
+ t.Fatal(err)
302
+ }
303
+
304
+ if p == nil {
305
+ t.Fatal("Failed to find peer.")
306
+ }
307
+
308
+ if !p.ID.Equal(peers[2].ID) {
309
+ t.Fatal("Didnt find expected peer.")
310
+ }
311
+}
routing/dht/ext_test.go
+7
-1
@@ -92,6 +92,8 @@ func (f *fauxNet) SendMessage(msg.NetMessage) error {
92
func (f *fauxNet) Close() error { return nil }
93
94
func TestGetFailures(t *testing.T) {
95
+ // t.Skip("skipping test because it makes a lot of output")
96
+
97
ctx := context.Background()
98
fn := &fauxNet{}
99
fs := &fauxSender{}
@@ -189,6 +191,8 @@ func _randPeer() *peer.Peer {
191
}
192
193
func TestNotFound(t *testing.T) {
194
+ // t.Skip("skipping test because it makes a lot of output")
195
+
196
fn := &fauxNet{}
197
fs := &fauxSender{}
198
@@ -233,7 +237,7 @@ func TestNotFound(t *testing.T) {
237
})
238
239
v, err := d.GetValue(u.Key("hello"), time.Second*5)
236
- u.POut("get value got %v\n", v)
240
+ u.DOut("get value got %v\n", v)
241
if err != nil {
242
switch err {
243
case u.ErrNotFound:
@@ -251,6 +255,8 @@ func TestNotFound(t *testing.T) {
255
// If less than K nodes are in the entire network, it should fail when we make
256
// a GET rpc and nobody has the value
257
func TestLessThanKResponses(t *testing.T) {
258
+ // t.Skip("skipping test because it makes a lot of output")
259
+
260
u.Debug = false
261
fn := &fauxNet{}
262
fs := &fauxSender{}
routing/dht/handlers.go
+1
-1
@@ -176,7 +176,7 @@ func (dht *IpfsDHT) handleAddProvider(p *peer.Peer, pmes *Message) (*Message, er
176
dht.self.ID.Pretty(), p.ID.Pretty(), peer.ID(key).Pretty())
177
178
dht.providers.AddProvider(key, p)
179
- return nil, nil
179
+ return pmes, nil // send back same msg as confirmation.
180
}
181
182
// Halt stops all communications from this peer and shut down