]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Make download cancellable tests more reliable
authorMatt Joiner <anacrolix@gmail.com>
Tue, 12 Jun 2018 10:19:53 +0000 (20:19 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 12 Jun 2018 10:19:53 +0000 (20:19 +1000)
client_test.go

index 3705cc78b9b4f869999291592a964e81bcb2d540..d74b4e7d95f0488effe702834b22e7092dba6d38 100644 (file)
@@ -807,7 +807,6 @@ func TestAddMetainfoWithNodes(t *testing.T) {
 }
 
 type testDownloadCancelParams struct {
-       ExportClientStatus        bool
        SetLeecherStorageCapacity bool
        LeecherStorageCapacity    int64
        Cancel                    bool
@@ -822,9 +821,7 @@ func testDownloadCancel(t *testing.T, ps testDownloadCancelParams) {
        seeder, err := NewClient(cfg)
        require.NoError(t, err)
        defer seeder.Close()
-       if ps.ExportClientStatus {
-               testutil.ExportStatusWriter(seeder, "s")
-       }
+       testutil.ExportStatusWriter(seeder, "s")
        seederTorrent, _, _ := seeder.AddTorrentSpec(TorrentSpecFromMetaInfo(mi))
        seederTorrent.VerifyData()
        leecherDataDir, err := ioutil.TempDir("", "")
@@ -839,9 +836,7 @@ func testDownloadCancel(t *testing.T, ps testDownloadCancelParams) {
        cfg.DataDir = leecherDataDir
        leecher, _ := NewClient(cfg)
        defer leecher.Close()
-       if ps.ExportClientStatus {
-               testutil.ExportStatusWriter(leecher, "l")
-       }
+       testutil.ExportStatusWriter(leecher, "l")
        leecherGreeting, new, err := leecher.AddTorrentSpec(func() (ret *TorrentSpec) {
                ret = TorrentSpecFromMetaInfo(mi)
                ret.ChunkSize = 2
@@ -858,8 +853,18 @@ func testDownloadCancel(t *testing.T, ps testDownloadCancelParams) {
                leecherGreeting.cancelPiecesLocked(0, leecherGreeting.NumPieces())
        }
        leecherGreeting.cl.mu.Unlock()
-
-       leecherGreeting.AddClientPeer(seeder)
+       done := make(chan struct{})
+       defer close(done)
+       go func() {
+               for {
+                       leecherGreeting.AddClientPeer(seeder)
+                       select {
+                       case <-done:
+                               return
+                       case <-time.After(time.Second):
+                       }
+               }
+       }()
        completes := make(map[int]bool, 3)
        expected := func() map[int]bool {
                if ps.Cancel {