@cryptotaxi247 / kubo / commits / aa2960392

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