Skip to content

Commit 28651a4

Browse files
committed
Fix races in client tracker status event callback tests
1 parent 4f69c80 commit 28651a4

File tree

1 file changed

+33
-29
lines changed

1 file changed

+33
-29
lines changed

client-tracker_test.go

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,23 @@ func TestClientAnnounceFailure(t *testing.T) {
127127
cfg := TestingConfig(t)
128128
cfg.DisableTrackers = false
129129

130+
var to *Torrent
131+
132+
cfg.Callbacks.StatusUpdated = append(cfg.Callbacks.StatusUpdated, func(e StatusUpdatedEvent) {
133+
if e.Event == TrackerConnected {
134+
// ignore
135+
return
136+
}
137+
if e.Event == TrackerAnnounceError {
138+
gotTrackerAnnounceErrorEvt = true
139+
require.Equal(t, trackerUrl, e.Url)
140+
require.Equal(t, to.InfoHash().HexString(), e.InfoHash)
141+
require.Error(t, e.Error)
142+
require.Equal(t, "test error", e.Error.Error())
143+
}
144+
receivedStatusUpdate <- true
145+
})
146+
130147
cl, err := NewClient(cfg)
131148
require.NoError(t, err)
132149
defer cl.Close()
@@ -142,24 +159,9 @@ func TestClientAnnounceFailure(t *testing.T) {
142159
{trackerUrl},
143160
}
144161

145-
to, err := cl.AddTorrent(mi)
162+
to, err = cl.AddTorrent(mi)
146163
require.NoError(t, err)
147164

148-
cfg.Callbacks.StatusUpdated = append(cfg.Callbacks.StatusUpdated, func(e StatusUpdatedEvent) {
149-
if e.Event == TrackerConnected {
150-
// ignore
151-
return
152-
}
153-
if e.Event == TrackerAnnounceError {
154-
gotTrackerAnnounceErrorEvt = true
155-
require.Equal(t, trackerUrl, e.Url)
156-
require.Equal(t, to.InfoHash().HexString(), e.InfoHash)
157-
require.Error(t, e.Error)
158-
require.Equal(t, "test error", e.Error.Error())
159-
}
160-
receivedStatusUpdate <- true
161-
})
162-
163165
select {
164166
case <-timeout.C:
165167
case <-receivedStatusUpdate:
@@ -178,19 +180,7 @@ func TestClientAnnounceSuccess(t *testing.T) {
178180
cfg := TestingConfig(t)
179181
cfg.DisableTrackers = false
180182

181-
cl, err := NewClient(cfg)
182-
require.NoError(t, err)
183-
defer cl.Close()
184-
185-
dir, mi := testutil.GreetingTestTorrent()
186-
defer os.RemoveAll(dir)
187-
188-
mi.AnnounceList = [][]string{
189-
{trackerUrl},
190-
}
191-
192-
to, err := cl.AddTorrent(mi)
193-
require.NoError(t, err)
183+
var to *Torrent
194184

195185
cfg.Callbacks.StatusUpdated = append(cfg.Callbacks.StatusUpdated, func(e StatusUpdatedEvent) {
196186
if e.Event == TrackerConnected {
@@ -206,6 +196,20 @@ func TestClientAnnounceSuccess(t *testing.T) {
206196
receivedStatusUpdate <- true
207197
})
208198

199+
cl, err := NewClient(cfg)
200+
require.NoError(t, err)
201+
defer cl.Close()
202+
203+
dir, mi := testutil.GreetingTestTorrent()
204+
defer os.RemoveAll(dir)
205+
206+
mi.AnnounceList = [][]string{
207+
{trackerUrl},
208+
}
209+
210+
to, err = cl.AddTorrent(mi)
211+
require.NoError(t, err)
212+
209213
select {
210214
case <-timeout.C:
211215
case <-receivedStatusUpdate:

0 commit comments

Comments
 (0)