func TestLargeSwarm(t *testing.T) { if testing.Short() { t.SkipNow() } numInstances := 100 numBlocks := 2 if detectrace.WithRace() { // when running with the race detector, 500 instances launches // well over 8k goroutines. This hits a race detector limit. numInstances = 100 } else if travis.IsRunning() { numInstances = 200 } else { t.Parallel() } PerformDistributionTest(t, numInstances, numBlocks) }
func TestStreamsStress(t *testing.T) { ctx := context.Background() nnodes := 100 if detectrace.WithRace() { nnodes = 50 } mn, err := FullMeshConnected(context.Background(), nnodes) if err != nil { t.Fatal(err) } hosts := mn.Hosts() for _, h := range hosts { ponger := makePonger(string(protocol.TestingID)) h.SetStreamHandler(protocol.TestingID, ponger) } var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func(i int) { defer wg.Done() from := rand.Intn(len(hosts)) to := rand.Intn(len(hosts)) s, err := hosts[from].NewStream(ctx, hosts[to].ID(), protocol.TestingID) if err != nil { log.Debugf("%d (%s) %d (%s)", from, hosts[from], to, hosts[to]) panic(err) } log.Infof("%d start pinging", i) makePinger("pingpong", rand.Intn(100))(s) log.Infof("%d done pinging", i) }(i) } wg.Wait() }