]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Some test tidying and improvements
authorMatt Joiner <anacrolix@gmail.com>
Mon, 29 Jan 2018 07:20:48 +0000 (18:20 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 29 Jan 2018 07:22:21 +0000 (18:22 +1100)
bad_storage.go [new file with mode: 0644]
client_test.go

diff --git a/bad_storage.go b/bad_storage.go
new file mode 100644 (file)
index 0000000..16fd557
--- /dev/null
@@ -0,0 +1,57 @@
+package torrent
+
+import (
+       "errors"
+       "math/rand"
+       "strings"
+
+       "github.com/anacrolix/torrent/metainfo"
+       "github.com/anacrolix/torrent/storage"
+)
+
+type badStorage struct{}
+
+var _ storage.ClientImpl = badStorage{}
+
+func (bs badStorage) OpenTorrent(*metainfo.Info, metainfo.Hash) (storage.TorrentImpl, error) {
+       return bs, nil
+}
+
+func (bs badStorage) Close() error {
+       return nil
+}
+
+func (bs badStorage) Piece(p metainfo.Piece) storage.PieceImpl {
+       return badStoragePiece{p}
+}
+
+type badStoragePiece struct {
+       p metainfo.Piece
+}
+
+var _ storage.PieceImpl = badStoragePiece{}
+
+func (p badStoragePiece) WriteAt(b []byte, off int64) (int, error) {
+       return 0, nil
+}
+
+func (p badStoragePiece) Completion() storage.Completion {
+       return storage.Completion{Complete: true, Ok: true}
+}
+
+func (p badStoragePiece) MarkComplete() error {
+       return errors.New("psyyyyyyyche")
+}
+
+func (p badStoragePiece) MarkNotComplete() error {
+       return errors.New("psyyyyyyyche")
+}
+
+func (p badStoragePiece) randomlyTruncatedDataString() string {
+       return "hello, world\n"[:rand.Intn(14)]
+}
+
+func (p badStoragePiece) ReadAt(b []byte, off int64) (n int, err error) {
+       r := strings.NewReader(p.randomlyTruncatedDataString())
+       return r.ReadAt(b, off+p.p.Offset())
+}
index 14030b5bd6066433e10d4730c30520529dc9d6ce..2cb78e5f6a413d1ce913d68aff1e3c7cc90fddf0 100644 (file)
@@ -2,15 +2,12 @@ package torrent
 
 import (
        "encoding/binary"
-       "errors"
        "fmt"
        "io"
        "io/ioutil"
-       "math/rand"
        "net"
        "os"
        "path/filepath"
-       "strings"
        "sync"
        "testing"
        "time"
@@ -389,14 +386,14 @@ func testClientTransfer(t *testing.T, ps testClientTransferParams) {
                cfg.DefaultStorage = ps.LeecherStorage(leecherDataDir)
        }
        cfg.DownloadRateLimiter = ps.LeecherDownloadRateLimiter
-       // cfg.ListenAddr = "localhost:4001"
+       cfg.Seed = false
        leecher, err := NewClient(cfg)
        require.NoError(t, err)
        defer leecher.Close()
        if ps.ExportClientStatus {
                testutil.ExportStatusWriter(leecher, "l")
        }
-       leecherGreeting, new, err := leecher.AddTorrentSpec(func() (ret *TorrentSpec) {
+       leecherTorrent, new, err := leecher.AddTorrentSpec(func() (ret *TorrentSpec) {
                ret = TorrentSpecFromMetaInfo(mi)
                ret.ChunkSize = 2
                return
@@ -404,8 +401,12 @@ func testClientTransfer(t *testing.T, ps testClientTransferParams) {
        require.NoError(t, err)
        assert.True(t, new)
        // Now do some things with leecher and seeder.
-       addClientPeer(leecherGreeting, seeder)
-       r := leecherGreeting.NewReader()
+       addClientPeer(leecherTorrent, seeder)
+       // The Torrent should not be interested in obtaining peers, so the one we
+       // just added should be the only one.
+       assert.False(t, leecherTorrent.Seeding())
+       assert.EqualValues(t, 1, leecherTorrent.Stats().PendingPeers)
+       r := leecherTorrent.NewReader()
        defer r.Close()
        if ps.Responsive {
                r.SetResponsive()
@@ -414,16 +415,12 @@ func testClientTransfer(t *testing.T, ps testClientTransferParams) {
                r.SetReadahead(ps.Readahead)
        }
        assertReadAllGreeting(t, r)
-       // After one read through, we can assume certain torrent statistics.
-       // These are not a strict requirement. It is however interesting to
-       // follow.
-       // t.Logf("%#v", seederTorrent.Stats())
-       // assert.EqualValues(t, 13, seederTorrent.Stats().DataBytesWritten)
-       // assert.EqualValues(t, 8, seederTorrent.Stats().ChunksWritten)
-       // assert.EqualValues(t, 13, leecherGreeting.Stats().DataBytesRead)
-       // assert.EqualValues(t, 8, leecherGreeting.Stats().ChunksRead)
-       // Read through again for the cases where the torrent data size exceeds
-       // the size of the cache.
+       assert.True(t, 13 <= seederTorrent.Stats().DataBytesWritten)
+       assert.True(t, 8 <= seederTorrent.Stats().ChunksWritten)
+       assert.True(t, 13 <= leecherTorrent.Stats().DataBytesRead)
+       assert.True(t, 8 <= leecherTorrent.Stats().ChunksRead)
+       // Try reading through again for the cases where the torrent data size
+       // exceeds the size of the cache.
        assertReadAllGreeting(t, r)
 }
 
@@ -515,53 +512,6 @@ func TestMergingTrackersByAddingSpecs(t *testing.T) {
        assert.EqualValues(t, 0, len(T.trackerAnnouncers))
 }
 
-type badStorage struct{}
-
-var _ storage.ClientImpl = badStorage{}
-
-func (bs badStorage) OpenTorrent(*metainfo.Info, metainfo.Hash) (storage.TorrentImpl, error) {
-       return bs, nil
-}
-
-func (bs badStorage) Close() error {
-       return nil
-}
-
-func (bs badStorage) Piece(p metainfo.Piece) storage.PieceImpl {
-       return badStoragePiece{p}
-}
-
-type badStoragePiece struct {
-       p metainfo.Piece
-}
-
-var _ storage.PieceImpl = badStoragePiece{}
-
-func (p badStoragePiece) WriteAt(b []byte, off int64) (int, error) {
-       return 0, nil
-}
-
-func (p badStoragePiece) Completion() storage.Completion {
-       return storage.Completion{Complete: true, Ok: true}
-}
-
-func (p badStoragePiece) MarkComplete() error {
-       return errors.New("psyyyyyyyche")
-}
-
-func (p badStoragePiece) MarkNotComplete() error {
-       return errors.New("psyyyyyyyche")
-}
-
-func (p badStoragePiece) randomlyTruncatedDataString() string {
-       return "hello, world\n"[:rand.Intn(14)]
-}
-
-func (p badStoragePiece) ReadAt(b []byte, off int64) (n int, err error) {
-       r := strings.NewReader(p.randomlyTruncatedDataString())
-       return r.ReadAt(b, off+p.p.Offset())
-}
-
 // We read from a piece which is marked completed, but is missing data.
 func TestCompletedPieceWrongSize(t *testing.T) {
        cfg := TestingConfig()