]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix races in client tracker status event callback tests
authorMatt Joiner <anacrolix@gmail.com>
Wed, 9 Apr 2025 02:40:53 +0000 (12:40 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 9 Apr 2025 02:40:53 +0000 (12:40 +1000)
client-tracker_test.go

index 8f164aef0e15b5aa9584c450f78a586ff739290e..9e14590b137b773aa04f0985376865e1b311827c 100644 (file)
@@ -127,6 +127,23 @@ func TestClientAnnounceFailure(t *testing.T) {
        cfg := TestingConfig(t)
        cfg.DisableTrackers = false
 
+       var to *Torrent
+
+       cfg.Callbacks.StatusUpdated = append(cfg.Callbacks.StatusUpdated, func(e StatusUpdatedEvent) {
+               if e.Event == TrackerConnected {
+                       // ignore
+                       return
+               }
+               if e.Event == TrackerAnnounceError {
+                       gotTrackerAnnounceErrorEvt = true
+                       require.Equal(t, trackerUrl, e.Url)
+                       require.Equal(t, to.InfoHash().HexString(), e.InfoHash)
+                       require.Error(t, e.Error)
+                       require.Equal(t, "test error", e.Error.Error())
+               }
+               receivedStatusUpdate <- true
+       })
+
        cl, err := NewClient(cfg)
        require.NoError(t, err)
        defer cl.Close()
@@ -142,24 +159,9 @@ func TestClientAnnounceFailure(t *testing.T) {
                {trackerUrl},
        }
 
-       to, err := cl.AddTorrent(mi)
+       to, err = cl.AddTorrent(mi)
        require.NoError(t, err)
 
-       cfg.Callbacks.StatusUpdated = append(cfg.Callbacks.StatusUpdated, func(e StatusUpdatedEvent) {
-               if e.Event == TrackerConnected {
-                       // ignore
-                       return
-               }
-               if e.Event == TrackerAnnounceError {
-                       gotTrackerAnnounceErrorEvt = true
-                       require.Equal(t, trackerUrl, e.Url)
-                       require.Equal(t, to.InfoHash().HexString(), e.InfoHash)
-                       require.Error(t, e.Error)
-                       require.Equal(t, "test error", e.Error.Error())
-               }
-               receivedStatusUpdate <- true
-       })
-
        select {
        case <-timeout.C:
        case <-receivedStatusUpdate:
@@ -178,19 +180,7 @@ func TestClientAnnounceSuccess(t *testing.T) {
        cfg := TestingConfig(t)
        cfg.DisableTrackers = false
 
-       cl, err := NewClient(cfg)
-       require.NoError(t, err)
-       defer cl.Close()
-
-       dir, mi := testutil.GreetingTestTorrent()
-       defer os.RemoveAll(dir)
-
-       mi.AnnounceList = [][]string{
-               {trackerUrl},
-       }
-
-       to, err := cl.AddTorrent(mi)
-       require.NoError(t, err)
+       var to *Torrent
 
        cfg.Callbacks.StatusUpdated = append(cfg.Callbacks.StatusUpdated, func(e StatusUpdatedEvent) {
                if e.Event == TrackerConnected {
@@ -206,6 +196,20 @@ func TestClientAnnounceSuccess(t *testing.T) {
                receivedStatusUpdate <- true
        })
 
+       cl, err := NewClient(cfg)
+       require.NoError(t, err)
+       defer cl.Close()
+
+       dir, mi := testutil.GreetingTestTorrent()
+       defer os.RemoveAll(dir)
+
+       mi.AnnounceList = [][]string{
+               {trackerUrl},
+       }
+
+       to, err = cl.AddTorrent(mi)
+       require.NoError(t, err)
+
        select {
        case <-timeout.C:
        case <-receivedStatusUpdate: