coreapi: dht tests
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
Łukasz Magiera committed
Mar 10, 2018 at 19:17 UTC
6cc86c11e8fe6da4ef0e07edaa75f020f9c9bdd8
1 file changed
+112
core/coreapi/dht_test.go
new
+112
@@ -0,0 +1,112 @@
1
+package coreapi_test
2
+
3
+import (
4
+ "context"
5
+ "io"
6
+ "io/ioutil"
7
+ "testing"
8
+
9
+ coreapi "github.com/ipfs/go-ipfs/core/coreapi"
10
+
11
+ peer "gx/ipfs/QmZoWKhxUmZ2seW4BzX6fJkNR8hh9PsGModr7q171yq2SS/go-libp2p-peer"
12
+ blocks "gx/ipfs/Qmej7nf81hi2x2tvjRBF3mcp74sQyuDH4VMYDGd1YtXjb2/go-block-format"
13
+)
14
+
15
+func TestDhtFindPeer(t *testing.T) {
16
+ ctx := context.Background()
17
+ nds, apis, err := makeAPISwarm(ctx, true, 3)
18
+ if err != nil {
19
+ t.Fatal(err)
20
+ }
21
+
22
+ out, err := apis[2].Dht().FindPeer(ctx, peer.ID(nds[0].Identity))
23
+ if err != nil {
24
+ t.Fatal(err)
25
+ }
26
+
27
+ addr := <-out
28
+
29
+ if addr.String() != "/ip4/127.0.0.1/tcp/4001" {
30
+ t.Errorf("got unexpected address from FindPeer: %s", addr.String())
31
+ }
32
+
33
+ out, err = apis[1].Dht().FindPeer(ctx, peer.ID(nds[2].Identity))
34
+ if err != nil {
35
+ t.Fatal(err)
36
+ }
37
+
38
+ addr = <-out
39
+
40
+ if addr.String() != "/ip4/127.0.2.1/tcp/4001" {
41
+ t.Errorf("got unexpected address from FindPeer: %s", addr.String())
42
+ }
43
+}
44
+
45
+func TestDhtFindProviders(t *testing.T) {
46
+ ctx := context.Background()
47
+ nds, apis, err := makeAPISwarm(ctx, true, 3)
48
+ if err != nil {
49
+ t.Fatal(err)
50
+ }
51
+
52
+ p, err := addTestObject(ctx, apis[0])
53
+ if err != nil {
54
+ t.Fatal(err)
55
+ }
56
+
57
+ out, err := apis[2].Dht().FindProviders(ctx, p, apis[2].Dht().WithNumProviders(1))
58
+ if err != nil {
59
+ t.Fatal(err)
60
+ }
61
+
62
+ provider := <-out
63
+
64
+ if provider.String() != nds[0].Identity.String() {
65
+ t.Errorf("got wrong provider: %s != %s", provider.String(), nds[0].Identity.String())
66
+ }
67
+}
68
+
69
+func TestDhtProvide(t *testing.T) {
70
+ ctx := context.Background()
71
+ nds, apis, err := makeAPISwarm(ctx, true, 3)
72
+ if err != nil {
73
+ t.Fatal(err)
74
+ }
75
+
76
+ // TODO: replace once there is local add on unixfs or somewhere
77
+ data, err := ioutil.ReadAll(&io.LimitedReader{R: rnd, N: 4092})
78
+ if err != nil {
79
+ t.Fatal(err)
80
+ }
81
+
82
+ b := blocks.NewBlock(data)
83
+ nds[0].Blockstore.Put(b)
84
+ p := coreapi.ParseCid(b.Cid())
85
+
86
+ out, err := apis[2].Dht().FindProviders(ctx, p, apis[2].Dht().WithNumProviders(1))
87
+ if err != nil {
88
+ t.Fatal(err)
89
+ }
90
+
91
+ provider := <-out
92
+
93
+ if provider.String() != "<peer.ID >" {
94
+ t.Errorf("got wrong provider: %s != %s", provider.String(), nds[0].Identity.String())
95
+ }
96
+
97
+ err = apis[0].Dht().Provide(ctx, p)
98
+ if err != nil {
99
+ t.Fatal(err)
100
+ }
101
+
102
+ out, err = apis[2].Dht().FindProviders(ctx, p, apis[2].Dht().WithNumProviders(1))
103
+ if err != nil {
104
+ t.Fatal(err)
105
+ }
106
+
107
+ provider = <-out
108
+
109
+ if provider.String() != nds[0].Identity.String() {
110
+ t.Errorf("got wrong provider: %s != %s", provider.String(), nds[0].Identity.String())
111
+ }
112
+}