From: Matt Joiner Date: Fri, 19 May 2023 02:27:16 +0000 (+1000) Subject: Fix TestSeedAfterDownloading when cgo is disabled X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c3622dea3d23faee73fd6567aa7de74a505d238a;hp=d27d1c809ef80cbfafdcffac6f4d18fb1d988a61;p=btrtrc.git Fix TestSeedAfterDownloading when cgo is disabled --- diff --git a/client.go b/client.go index 7d2523f9..b0f4b2a3 100644 --- a/client.go +++ b/client.go @@ -808,6 +808,12 @@ func (cl *Client) dialAndCompleteHandshake(opts outgoingConnOpts) (c *PeerConn, torrent.Add("initiated conn with preferred header obfuscation", 1) return } + c.logger.Levelf( + log.Debug, + "error doing protocol handshake with header obfuscation %v", + obfuscatedHeaderFirst, + ) + firstDialResult.Conn.Close() // We should have just tried with the preferred header obfuscation. If it was required, there's nothing else to try. if headerObfuscationPolicy.RequirePreferred { return @@ -832,6 +838,12 @@ func (cl *Client) dialAndCompleteHandshake(opts outgoingConnOpts) (c *PeerConn, torrent.Add("initiated conn with fallback header obfuscation", 1) return } + c.logger.Levelf( + log.Debug, + "error doing protocol handshake with header obfuscation %v", + !obfuscatedHeaderFirst, + ) + secondDialResult.Conn.Close() return } diff --git a/peerconn.go b/peerconn.go index a9b835ac..68da20f1 100644 --- a/peerconn.go +++ b/peerconn.go @@ -95,7 +95,6 @@ func (cn *PeerConn) pexStatus() string { }), ","), cn.pex.numPending(), ) - } } diff --git a/test/transfer_test.go b/test/transfer_test.go index a008d26f..a719fcc7 100644 --- a/test/transfer_test.go +++ b/test/transfer_test.go @@ -9,6 +9,7 @@ import ( "testing/iotest" "time" + "github.com/anacrolix/log" "github.com/anacrolix/missinggo/v2/filecache" qt "github.com/frankban/quicktest" "github.com/stretchr/testify/assert" @@ -132,7 +133,7 @@ func TestFilecacheClientTransferVarious(t *testing.T) { // Check that after completing leeching, a leecher transitions to a seeding // correctly. Connected in a chain like so: Seeder <-> Leecher <-> LeecherLeecher. -func TestSeedAfterDownloading(t *testing.T) { +func testSeedAfterDownloading(t *testing.T, disableUtp bool) { greetingTempDir, mi := testutil.GreetingTestTorrent() defer os.RemoveAll(greetingTempDir) @@ -140,6 +141,7 @@ func TestSeedAfterDownloading(t *testing.T) { cfg.Seed = true cfg.MaxAllocPeerRequestDataPerConn = 4 cfg.DataDir = greetingTempDir + cfg.DisableUTP = disableUtp seeder, err := torrent.NewClient(cfg) require.NoError(t, err) defer seeder.Close() @@ -152,15 +154,21 @@ func TestSeedAfterDownloading(t *testing.T) { cfg = torrent.TestingConfig(t) cfg.Seed = true cfg.DataDir = t.TempDir() + cfg.DisableUTP = disableUtp + //cfg.Debug = true + cfg.Logger = log.Default.WithContextText("leecher") leecher, err := torrent.NewClient(cfg) require.NoError(t, err) defer leecher.Close() defer testutil.ExportStatusWriter(leecher, "l", t)() cfg = torrent.TestingConfig(t) + cfg.DisableUTP = disableUtp cfg.Seed = false cfg.DataDir = t.TempDir() cfg.MaxAllocPeerRequestDataPerConn = 4 + cfg.Logger = log.Default.WithContextText("leecher-leecher") + cfg.Debug = true leecherLeecher, _ := torrent.NewClient(cfg) require.NoError(t, err) defer leecherLeecher.Close() @@ -183,15 +191,17 @@ func TestSeedAfterDownloading(t *testing.T) { // consecutively in LeecherLeecher. This non-deterministically triggered a // case where the leecher wouldn't unchoke the LeecherLeecher. var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() + { + // Prioritize a region, and ensure it's been hashed, so we want connections. r := llg.NewReader() - defer r.Close() - qt.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), qt.IsNil) - }() - done := make(chan struct{}) - defer close(done) + llg.VerifyData() + wg.Add(1) + go func() { + defer wg.Done() + defer r.Close() + qt.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), qt.IsNil) + }() + } go leecherGreeting.AddClientPeer(seeder) go leecherGreeting.AddClientPeer(leecherLeecher) wg.Add(1) @@ -202,3 +212,11 @@ func TestSeedAfterDownloading(t *testing.T) { }() wg.Wait() } + +func TestSeedAfterDownloadingDisableUtp(t *testing.T) { + testSeedAfterDownloading(t, true) +} + +func TestSeedAfterDownloadingAllowUtp(t *testing.T) { + testSeedAfterDownloading(t, false) +}