Use iotest.TestReader
This commit is contained in:
parent
887db4a276
commit
f5915ad12c
|
@ -5,6 +5,7 @@ import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/anacrolix/torrent/internal/testutil"
|
||||||
"github.com/anacrolix/torrent/metainfo"
|
"github.com/anacrolix/torrent/metainfo"
|
||||||
"github.com/anacrolix/torrent/storage"
|
"github.com/anacrolix/torrent/storage"
|
||||||
)
|
)
|
||||||
|
@ -48,7 +49,7 @@ func (p badStoragePiece) MarkNotComplete() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p badStoragePiece) randomlyTruncatedDataString() string {
|
func (p badStoragePiece) randomlyTruncatedDataString() string {
|
||||||
return "hello, world\n"[:rand.Intn(14)]
|
return testutil.GreetingFileContents[:rand.Intn(14)]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p badStoragePiece) ReadAt(b []byte, off int64) (n int, err error) {
|
func (p badStoragePiece) ReadAt(b []byte, off int64) (n int, err error) {
|
||||||
|
|
|
@ -9,9 +9,11 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
"testing/iotest"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/bradfitz/iter"
|
"github.com/bradfitz/iter"
|
||||||
|
"github.com/frankban/quicktest"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
@ -202,9 +204,7 @@ func TestCompletedPieceWrongSize(t *testing.T) {
|
||||||
assert.True(t, new)
|
assert.True(t, new)
|
||||||
r := tt.NewReader()
|
r := tt.NewReader()
|
||||||
defer r.Close()
|
defer r.Close()
|
||||||
b, err = ioutil.ReadAll(r)
|
quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
|
||||||
assert.Len(t, b, 13)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkAddLargeTorrent(b *testing.B) {
|
func BenchmarkAddLargeTorrent(b *testing.B) {
|
||||||
|
@ -411,9 +411,7 @@ func testAddTorrentPriorPieceCompletion(t *testing.T, alreadyCompleted bool, csf
|
||||||
assert.Equal(t, alreadyCompleted, psrs[0].Complete)
|
assert.Equal(t, alreadyCompleted, psrs[0].Complete)
|
||||||
if alreadyCompleted {
|
if alreadyCompleted {
|
||||||
r := tt.NewReader()
|
r := tt.NewReader()
|
||||||
b, err := ioutil.ReadAll(r)
|
quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, testutil.GreetingFileContents, b)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ func (r *reader) ReadContext(ctx context.Context, b []byte) (n int, err error) {
|
||||||
defer r.opMu.Unlock()
|
defer r.opMu.Unlock()
|
||||||
n, err = r.readOnceAt(b, r.pos, &ctxErr)
|
n, err = r.readOnceAt(b, r.pos, &ctxErr)
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
if err == nil {
|
if err == nil && len(b) > 0 {
|
||||||
panic("expected error")
|
panic("expected error")
|
||||||
} else {
|
} else {
|
||||||
return
|
return
|
||||||
|
@ -185,7 +185,7 @@ func (r *reader) waitAvailable(pos, wanted int64, ctxErr *error, wait bool) (ava
|
||||||
err = errors.New("downloading disabled and data not already available")
|
err = errors.New("downloading disabled and data not already available")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !wait {
|
if !wait || wanted == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
r.waitReadable(pos)
|
r.waitReadable(pos)
|
||||||
|
|
|
@ -3,10 +3,10 @@ package test
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
"testing/iotest"
|
||||||
|
|
||||||
"github.com/anacrolix/log"
|
"github.com/anacrolix/log"
|
||||||
pp "github.com/anacrolix/torrent/peer_protocol"
|
pp "github.com/anacrolix/torrent/peer_protocol"
|
||||||
|
@ -86,12 +86,10 @@ func testReceiveChunkStorageFailure(t *testing.T, seederFast bool) {
|
||||||
// We don't seem to need to seek, but that's probably just because the storage failure is
|
// We don't seem to need to seek, but that's probably just because the storage failure is
|
||||||
// happening on the first read.
|
// happening on the first read.
|
||||||
r.Seek(0, io.SeekStart)
|
r.Seek(0, io.SeekStart)
|
||||||
output, err := ioutil.ReadAll(r)
|
if err := iotest.TestReader(r, []byte(testutil.GreetingFileContents)); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Logf("got error while reading: %v", err)
|
t.Logf("got error while reading: %v", err)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
assert.EqualValues(t, testutil.GreetingFileContents, output)
|
|
||||||
return false
|
return false
|
||||||
}() {
|
}() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
"testing/iotest"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/anacrolix/missinggo/v2/filecache"
|
"github.com/anacrolix/missinggo/v2/filecache"
|
||||||
|
@ -15,6 +16,7 @@ import (
|
||||||
"github.com/anacrolix/torrent/internal/testutil"
|
"github.com/anacrolix/torrent/internal/testutil"
|
||||||
"github.com/anacrolix/torrent/storage"
|
"github.com/anacrolix/torrent/storage"
|
||||||
sqliteStorage "github.com/anacrolix/torrent/storage/sqlite"
|
sqliteStorage "github.com/anacrolix/torrent/storage/sqlite"
|
||||||
|
"github.com/frankban/quicktest"
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -39,9 +41,7 @@ func assertReadAllGreeting(t *testing.T, r io.ReadSeeker) {
|
||||||
pos, err := r.Seek(0, io.SeekStart)
|
pos, err := r.Seek(0, io.SeekStart)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.EqualValues(t, 0, pos)
|
assert.EqualValues(t, 0, pos)
|
||||||
_greeting, err := ioutil.ReadAll(r)
|
quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.EqualValues(t, testutil.GreetingFileContents, string(_greeting))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a seeder and a leecher, and ensures the data transfers when a read
|
// Creates a seeder and a leecher, and ensures the data transfers when a read
|
||||||
|
@ -413,9 +413,7 @@ func TestSeedAfterDownloading(t *testing.T) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
r := llg.NewReader()
|
r := llg.NewReader()
|
||||||
defer r.Close()
|
defer r.Close()
|
||||||
b, err := ioutil.ReadAll(r)
|
quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
|
||||||
require.NoError(t, err)
|
|
||||||
assert.EqualValues(t, testutil.GreetingFileContents, b)
|
|
||||||
}()
|
}()
|
||||||
done := make(chan struct{})
|
done := make(chan struct{})
|
||||||
defer close(done)
|
defer close(done)
|
||||||
|
|
|
@ -2,6 +2,7 @@ package torrent
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
@ -92,7 +93,7 @@ func BenchmarkUpdatePiecePriorities(b *testing.B) {
|
||||||
for range iter.N(7) {
|
for range iter.N(7) {
|
||||||
r := t.NewReader()
|
r := t.NewReader()
|
||||||
r.SetReadahead(32 << 20)
|
r.SetReadahead(32 << 20)
|
||||||
r.Seek(3500000, 0)
|
r.Seek(3500000, io.SeekStart)
|
||||||
}
|
}
|
||||||
assert.Len(b, t.readers, 7)
|
assert.Len(b, t.readers, 7)
|
||||||
for i := 0; i < int(t.numPieces()); i += 3 {
|
for i := 0; i < int(t.numPieces()); i += 3 {
|
||||||
|
|
Loading…
Reference in New Issue