X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=client_test.go;h=e23ca1fa2d8d609e6df9249b25b47e4defbc0245;hb=a8ab0baec81a0856c38bb5ff77da490670dfbc66;hp=03851ae88d8712c4293545604ab97e7935f273e3;hpb=48b3e66c76ff6284029b38521589dc7bbbf71ccd;p=btrtrc.git diff --git a/client_test.go b/client_test.go index 03851ae8..e23ca1fa 100644 --- a/client_test.go +++ b/client_test.go @@ -13,15 +13,13 @@ import ( "testing/iotest" "time" - "github.com/frankban/quicktest" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/anacrolix/log" - "github.com/anacrolix/dht/v2" + "github.com/anacrolix/log" "github.com/anacrolix/missinggo/v2" "github.com/anacrolix/missinggo/v2/filecache" + "github.com/frankban/quicktest" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/anacrolix/torrent/bencode" "github.com/anacrolix/torrent/internal/testutil" @@ -254,6 +252,50 @@ func TestResponsive(t *testing.T) { assert.EqualValues(t, "d\n", string(b)) } +// TestResponsive was the first test to fail if uTP is disabled and TCP sockets dial from the +// listening port. +func TestResponsiveTcpOnly(t *testing.T) { + seederDataDir, mi := testutil.GreetingTestTorrent() + defer os.RemoveAll(seederDataDir) + cfg := TestingConfig(t) + cfg.DisableUTP = true + cfg.Seed = true + cfg.DataDir = seederDataDir + seeder, err := NewClient(cfg) + require.Nil(t, err) + defer seeder.Close() + seederTorrent, _, _ := seeder.AddTorrentSpec(TorrentSpecFromMetaInfo(mi)) + seederTorrent.VerifyData() + leecherDataDir := t.TempDir() + cfg = TestingConfig(t) + cfg.DataDir = leecherDataDir + leecher, err := NewClient(cfg) + require.Nil(t, err) + defer leecher.Close() + leecherTorrent, _, _ := leecher.AddTorrentSpec(func() (ret *TorrentSpec) { + ret = TorrentSpecFromMetaInfo(mi) + ret.ChunkSize = 2 + return + }()) + leecherTorrent.AddClientPeer(seeder) + reader := leecherTorrent.NewReader() + defer reader.Close() + reader.SetReadahead(0) + reader.SetResponsive() + b := make([]byte, 2) + _, err = reader.Seek(3, io.SeekStart) + require.NoError(t, err) + _, err = io.ReadFull(reader, b) + assert.Nil(t, err) + assert.EqualValues(t, "lo", string(b)) + _, err = reader.Seek(11, io.SeekStart) + require.NoError(t, err) + n, err := io.ReadFull(reader, b) + assert.Nil(t, err) + assert.EqualValues(t, 2, n) + assert.EqualValues(t, "d\n", string(b)) +} + func TestTorrentDroppedDuringResponsiveRead(t *testing.T) { seederDataDir, mi := testutil.GreetingTestTorrent() defer os.RemoveAll(seederDataDir) @@ -749,6 +791,7 @@ func TestClientAddressInUse(t *testing.T) { defer s.Close() } cfg := TestingConfig(t).SetListenAddr(":50007") + cfg.DisableUTP = false cl, err := NewClient(cfg) require.Error(t, err) require.Nil(t, cl)