github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/p2p/net/swarm/simul_test.go (about)

     1  package swarm
     2  
     3  import (
     4  	"sync"
     5  	"testing"
     6  	"time"
     7  
     8  	peer "github.com/ipfs/go-ipfs/p2p/peer"
     9  	ci "github.com/ipfs/go-ipfs/util/testutil/ci"
    10  
    11  	ma "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
    12  	context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
    13  )
    14  
    15  func TestSimultOpen(t *testing.T) {
    16  	// t.Skip("skipping for another test")
    17  	t.Parallel()
    18  
    19  	ctx := context.Background()
    20  	swarms := makeSwarms(ctx, t, 2)
    21  
    22  	// connect everyone
    23  	{
    24  		var wg sync.WaitGroup
    25  		connect := func(s *Swarm, dst peer.ID, addr ma.Multiaddr) {
    26  			// copy for other peer
    27  			log.Debugf("TestSimultOpen: connecting: %s --> %s (%s)", s.local, dst, addr)
    28  			s.peers.AddAddr(dst, addr, peer.PermanentAddrTTL)
    29  			if _, err := s.Dial(ctx, dst); err != nil {
    30  				t.Fatal("error swarm dialing to peer", err)
    31  			}
    32  			wg.Done()
    33  		}
    34  
    35  		log.Info("Connecting swarms simultaneously.")
    36  		wg.Add(2)
    37  		go connect(swarms[0], swarms[1].local, swarms[1].ListenAddresses()[0])
    38  		go connect(swarms[1], swarms[0].local, swarms[0].ListenAddresses()[0])
    39  		wg.Wait()
    40  	}
    41  
    42  	for _, s := range swarms {
    43  		s.Close()
    44  	}
    45  }
    46  
    47  func TestSimultOpenMany(t *testing.T) {
    48  	// t.Skip("very very slow")
    49  
    50  	addrs := 20
    51  	rounds := 10
    52  	if ci.IsRunning() {
    53  		addrs = 10
    54  		rounds = 5
    55  	}
    56  	SubtestSwarm(t, addrs, rounds)
    57  }
    58  
    59  func TestSimultOpenFewStress(t *testing.T) {
    60  	if testing.Short() {
    61  		t.SkipNow()
    62  	}
    63  	// t.Skip("skipping for another test")
    64  	t.Parallel()
    65  
    66  	msgs := 40
    67  	swarms := 2
    68  	rounds := 10
    69  	// rounds := 100
    70  
    71  	for i := 0; i < rounds; i++ {
    72  		SubtestSwarm(t, swarms, msgs)
    73  		<-time.After(10 * time.Millisecond)
    74  	}
    75  }