Skip to content

Commit 129f5ba

Browse files
committed
Fix DERP mesh test
1 parent 4d0b1d8 commit 129f5ba

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

enterprise/derpmesh/derpmesh_test.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
"errors"
88
"io"
99
"net/http/httptest"
10-
"runtime"
1110
"testing"
11+
"time"
1212

1313
"github.com/stretchr/testify/assert"
1414
"github.com/stretchr/testify/require"
@@ -102,9 +102,6 @@ func TestDERPMesh(t *testing.T) {
102102
})
103103
t.Run("TwentyMeshes", func(t *testing.T) {
104104
t.Parallel()
105-
if runtime.GOOS == "windows" {
106-
t.Skip("This test is races on Windows... I think because it's too slow.")
107-
}
108105
meshes := make([]*derpmesh.Mesh, 0, 20)
109106
serverURLs := make([]string, 0, 20)
110107
for i := 0; i < 20; i++ {
@@ -132,12 +129,28 @@ func TestDERPMesh(t *testing.T) {
132129
err = secondClient.Connect(context.Background())
133130
require.NoError(t, err)
134131

132+
closed := make(chan struct{})
133+
ctx, cancelFunc := context.WithCancel(context.Background())
134+
defer cancelFunc()
135135
sent := []byte("hello world")
136-
err = firstClient.Send(second.Public(), sent)
137-
require.NoError(t, err)
136+
go func() {
137+
defer close(closed)
138+
ticker := time.NewTicker(time.Second)
139+
for {
140+
select {
141+
case <-ctx.Done():
142+
return
143+
case <-ticker.C:
144+
}
145+
err = firstClient.Send(second.Public(), sent)
146+
require.NoError(t, err)
147+
}
148+
}()
138149

139150
got := recvData(t, secondClient)
140151
require.Equal(t, sent, got)
152+
cancelFunc()
153+
<-closed
141154
})
142155
}
143156

0 commit comments

Comments
 (0)