mocknet add test
Juan Batiz-Benet committed
Dec 17, 2014 at 08:46 UTC
5d019ad3000bd28be6261a58460935cedf530ffd
1 file changed
+78
net/mock/mock_test.go
+78
@@ -8,6 +8,8 @@ import (
8
"testing"
9
10
inet "github.com/jbenet/go-ipfs/net"
11
+ peer "github.com/jbenet/go-ipfs/peer"
12
+ testutil "github.com/jbenet/go-ipfs/util/testutil"
13
14
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
15
)
@@ -186,3 +188,79 @@ func TestStreamsStress(t *testing.T) {
188
189
wg.Done()
190
}
191
+
192
+func TestAdding(t *testing.T) {
193
+
194
+ mn := New(context.Background())
195
+
196
+ p1 := testutil.RandPeer()
197
+ p2 := testutil.RandPeer()
198
+ p3 := testutil.RandPeer()
199
+ peers := []peer.Peer{p1, p2, p3}
200
+
201
+ for _, p := range peers {
202
+ if _, err := mn.AddPeer(p.ID()); err != nil {
203
+ t.Error(err)
204
+ }
205
+ }
206
+
207
+ // link them
208
+ for _, p1 := range peers {
209
+ for _, p2 := range peers {
210
+ if _, err := mn.LinkPeers(p1, p2); err != nil {
211
+ t.Error(err)
212
+ }
213
+ }
214
+ }
215
+
216
+ // set the new stream handler on p2
217
+ n2 := mn.Net(p2.ID())
218
+ if n2 == nil {
219
+ t.Fatalf("no network for %s", p2.ID())
220
+ }
221
+ n2.SetHandler(inet.ProtocolBitswap, func(s inet.Stream) {
222
+ go func() {
223
+ defer s.Close()
224
+
225
+ b := make([]byte, 4)
226
+ if _, err := io.ReadFull(s, b); err != nil {
227
+ panic(err)
228
+ }
229
+ if string(b) != "beep" {
230
+ panic("did not beep!")
231
+ }
232
+
233
+ if _, err := s.Write([]byte("boop")); err != nil {
234
+ panic(err)
235
+ }
236
+ }()
237
+ })
238
+
239
+ // connect p1 to p2
240
+ if err := mn.ConnectPeers(p1, p2); err != nil {
241
+ t.Fatal(err)
242
+ }
243
+
244
+ // talk to p2
245
+ n1 := mn.Net(p1.ID())
246
+ if n1 == nil {
247
+ t.Fatalf("no network for %s", p1.ID())
248
+ }
249
+
250
+ s, err := n1.NewStream(inet.ProtocolBitswap, p2)
251
+ if err != nil {
252
+ t.Fatal(err)
253
+ }
254
+
255
+ if _, err := s.Write([]byte("beep")); err != nil {
256
+ t.Error(err)
257
+ }
258
+ b := make([]byte, 4)
259
+ if _, err := io.ReadFull(s, b); err != nil {
260
+ t.Error(err)
261
+ }
262
+ if !bytes.Equal(b, []byte("boop")) {
263
+ t.Error("bytes mismatch 2")
264
+ }
265
+
266
+}