]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix TestSeedAfterDownloading when cgo is disabled
authorMatt Joiner <anacrolix@gmail.com>
Fri, 19 May 2023 02:27:16 +0000 (12:27 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 19 May 2023 02:33:54 +0000 (12:33 +1000)
client.go
peerconn.go
test/transfer_test.go

index 7d2523f97fb431a4994eb79ed725aa8cec23c698..b0f4b2a3728a497a5e0061379f6def8f136fce33 100644 (file)
--- 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
 }
 
index a9b835ac584ac9b11de2adff7cf21e0af597caee..68da20f1b1db29e54085fb31d7a7b97ab3d12134 100644 (file)
@@ -95,7 +95,6 @@ func (cn *PeerConn) pexStatus() string {
                                }), ","),
                        cn.pex.numPending(),
                )
-
        }
 }
 
index a008d26f4a9424599d48cd6ab493c23c10e9a4dd..a719fcc73f7c4de4d0b946b8f432054881ce8079 100644 (file)
@@ -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)
+}