|
4 | 4 | "bytes" |
5 | 5 | "context" |
6 | 6 | "net" |
7 | | - "runtime" |
8 | 7 | "sync" |
9 | 8 | "testing" |
10 | 9 | "time" |
@@ -141,52 +140,39 @@ func TestServer_Discover(t *testing.T) { |
141 | 140 | } |
142 | 141 |
|
143 | 142 | func TestServer_CleanUpConns(t *testing.T) { |
144 | | - runtime.GC() |
145 | | - var initialGoCnt = runtime.NumGoroutine() |
146 | | - |
147 | | - var wg sync.WaitGroup |
148 | | - // Container func for defers |
149 | | - func() { |
150 | | - ld, err := coapNet.NewListenUDP("udp4", "") |
151 | | - require.NoError(t, err) |
152 | | - defer ld.Close() |
153 | | - |
154 | | - var checkCloseWg sync.WaitGroup |
155 | | - defer checkCloseWg.Wait() |
156 | | - sd := udp.NewServer(udp.WithOnNewClientConn(func(cc *client.ClientConn) { |
157 | | - checkCloseWg.Add(1) |
158 | | - cc.AddOnClose(func() { |
159 | | - checkCloseWg.Done() |
160 | | - }) |
161 | | - })) |
162 | | - defer sd.Stop() |
163 | | - |
164 | | - wg.Add(1) |
165 | | - go func() { |
166 | | - defer wg.Done() |
167 | | - err := sd.Serve(ld) |
168 | | - require.NoError(t, err) |
169 | | - }() |
| 143 | + ld, err := coapNet.NewListenUDP("udp4", "") |
| 144 | + require.NoError(t, err) |
| 145 | + defer ld.Close() |
170 | 146 |
|
171 | | - cc, err := udp.Dial(ld.LocalAddr().String()) |
172 | | - require.NoError(t, err) |
| 147 | + var checkCloseWg sync.WaitGroup |
| 148 | + defer checkCloseWg.Wait() |
| 149 | + sd := udp.NewServer(udp.WithOnNewClientConn(func(cc *client.ClientConn) { |
173 | 150 | checkCloseWg.Add(1) |
174 | 151 | cc.AddOnClose(func() { |
175 | 152 | checkCloseWg.Done() |
176 | 153 | }) |
177 | | - defer cc.Close() |
178 | | - ctx, cancel := context.WithTimeout(context.Background(), time.Second) |
179 | | - defer cancel() |
180 | | - err = cc.Ping(ctx) |
181 | | - require.NoError(t, err) |
| 154 | + })) |
| 155 | + defer sd.Stop() |
182 | 156 |
|
| 157 | + var wg sync.WaitGroup |
| 158 | + wg.Add(1) |
| 159 | + go func() { |
| 160 | + defer wg.Done() |
| 161 | + err := sd.Serve(ld) |
| 162 | + require.NoError(t, err) |
183 | 163 | }() |
184 | | - wg.Wait() |
185 | | - runtime.GC() |
186 | | - time.Sleep(10 * time.Millisecond) |
187 | | - if !assert.Equal(t, initialGoCnt, runtime.NumGoroutine()) { |
188 | | - printStacktrace(t) |
189 | | - } |
| 164 | + |
| 165 | + cc, err := udp.Dial(ld.LocalAddr().String()) |
| 166 | + require.NoError(t, err) |
| 167 | + checkCloseWg.Add(1) |
| 168 | + cc.AddOnClose(func() { |
| 169 | + checkCloseWg.Done() |
| 170 | + }) |
| 171 | + defer cc.Close() |
| 172 | + ctx, cancel := context.WithTimeout(context.Background(), time.Second) |
| 173 | + defer cancel() |
| 174 | + err = cc.Ping(ctx) |
| 175 | + require.NoError(t, err) |
190 | 176 | } |
191 | 177 |
|
192 | 178 | func TestServer_InactiveMonitor(t *testing.T) { |
@@ -249,11 +235,3 @@ func TestServer_InactiveMonitor(t *testing.T) { |
249 | 235 | checkCloseWg.Wait() |
250 | 236 | require.True(t, inactivityDetected) |
251 | 237 | } |
252 | | - |
253 | | -func printStacktrace(t *testing.T) { |
254 | | - buf := make([]byte, 1<<20) |
255 | | - |
256 | | - stacklen := runtime.Stack(buf, true) |
257 | | - t.Logf("Number goRoutines: %d\n", runtime.NumGoroutine()) |
258 | | - t.Logf("*** goroutine dump...\n%s\n*** end\n", buf[:stacklen]) |
259 | | -} |
0 commit comments