From e04b6f0ba0c5e21b9ffde0b38d1465f6320da449 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Sat, 14 Apr 2018 11:23:26 +1000 Subject: [PATCH] Try to make test more reliable --- client_test.go | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/client_test.go b/client_test.go index 7a760d17..b465279b 100644 --- a/client_test.go +++ b/client_test.go @@ -444,7 +444,9 @@ func TestSeedAfterDownloading(t *testing.T) { require.NoError(t, err) defer seeder.Close() testutil.ExportStatusWriter(seeder, "s") - seederTorrent, _, _ := seeder.AddTorrentSpec(TorrentSpecFromMetaInfo(mi)) + seederTorrent, ok, err := seeder.AddTorrentSpec(TorrentSpecFromMetaInfo(mi)) + require.NoError(t, err) + assert.True(t, ok) seederTorrent.VerifyData() cfg.DataDir, err = ioutil.TempDir("", "") require.NoError(t, err) @@ -461,16 +463,20 @@ func TestSeedAfterDownloading(t *testing.T) { require.NoError(t, err) defer leecherLeecher.Close() testutil.ExportStatusWriter(leecherLeecher, "ll") - leecherGreeting, _, _ := leecher.AddTorrentSpec(func() (ret *TorrentSpec) { + leecherGreeting, ok, err := leecher.AddTorrentSpec(func() (ret *TorrentSpec) { ret = TorrentSpecFromMetaInfo(mi) ret.ChunkSize = 2 return }()) - llg, _, _ := leecherLeecher.AddTorrentSpec(func() (ret *TorrentSpec) { + require.NoError(t, err) + assert.True(t, ok) + llg, ok, err := leecherLeecher.AddTorrentSpec(func() (ret *TorrentSpec) { ret = TorrentSpecFromMetaInfo(mi) ret.ChunkSize = 3 return }()) + require.NoError(t, err) + assert.True(t, ok) // Simultaneously DownloadAll in Leecher, and read the contents // consecutively in LeecherLeecher. This non-deterministically triggered a // case where the leecher wouldn't unchoke the LeecherLeecher. @@ -484,8 +490,19 @@ func TestSeedAfterDownloading(t *testing.T) { require.NoError(t, err) assert.EqualValues(t, testutil.GreetingFileContents, b) }() - leecherGreeting.AddClientPeer(seeder) - leecherGreeting.AddClientPeer(leecherLeecher) + done := make(chan struct{}) + defer close(done) + go func() { + for { + go leecherGreeting.AddClientPeer(seeder) + go leecherGreeting.AddClientPeer(leecherLeecher) + select { + case <-done: + return + case <-time.After(time.Second): + } + } + }() wg.Add(1) go func() { defer wg.Done() -- 2.44.0