@cryptotaxi247 / kubo / commits / 5d019ad30

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 +}