Commit 4728fd6f authored by Marten Seemann's avatar Marten Seemann

speed up the TestFDLimitUnderflow test

We're setting a limit of 20 fds, so we don't need to test 1000 dials.
parent b80b91c8
...@@ -358,22 +358,16 @@ func TestStressLimiter(t *testing.T) { ...@@ -358,22 +358,16 @@ func TestStressLimiter(t *testing.T) {
} }
func TestFDLimitUnderflow(t *testing.T) { func TestFDLimitUnderflow(t *testing.T) {
df := func(ctx context.Context, p peer.ID, a ma.Multiaddr) (transport.CapableConn, error) { df := func(ctx context.Context, p peer.ID, addr ma.Multiaddr) (transport.CapableConn, error) {
timeout := make(chan bool, 1)
go func() {
time.Sleep(time.Second * 5)
timeout <- true
}()
select { select {
case <-ctx.Done(): case <-ctx.Done():
case <-timeout: case <-time.After(5 * time.Second):
} }
return nil, fmt.Errorf("df timed out") return nil, fmt.Errorf("df timed out")
} }
l := newDialLimiterWithParams(isFdConsuming, df, 20, 3) const fdLimit = 20
l := newDialLimiterWithParams(isFdConsuming, df, fdLimit, 3)
var addrs []ma.Multiaddr var addrs []ma.Multiaddr
for i := 0; i <= 1000; i++ { for i := 0; i <= 1000; i++ {
...@@ -381,12 +375,14 @@ func TestFDLimitUnderflow(t *testing.T) { ...@@ -381,12 +375,14 @@ func TestFDLimitUnderflow(t *testing.T) {
} }
wg := sync.WaitGroup{} wg := sync.WaitGroup{}
wg.Add(1000) const num = 3 * fdLimit
errs := make(chan error, 1000) wg.Add(num)
for i := 0; i < 1000; i++ { errs := make(chan error, num)
for i := 0; i < num; i++ {
go func(id peer.ID, i int) { go func(id peer.ID, i int) {
defer wg.Done() defer wg.Done()
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
defer cancel()
resp := make(chan dialResult) resp := make(chan dialResult)
l.AddDialJob(&dialJob{ l.AddDialJob(&dialJob{
...@@ -396,17 +392,6 @@ func TestFDLimitUnderflow(t *testing.T) { ...@@ -396,17 +392,6 @@ func TestFDLimitUnderflow(t *testing.T) {
resp: resp, resp: resp,
}) })
//cancel first 60 after 1s, next 60 after 2s
if i > 60 {
time.Sleep(time.Second * 1)
}
if i < 120 {
time.Sleep(time.Second * 1)
cancel()
return
}
defer cancel()
for res := range resp { for res := range resp {
if res.Err != nil { if res.Err != nil {
return return
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment