From b2b290a58971a84a72a3cf508560aec33ef573e3 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 16 Jun 2015 17:14:15 +1000 Subject: [PATCH] Small tweak to readahead, and fix the tests --- client.go | 6 +++++- client_test.go | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/client.go b/client.go index 5f9420fd..171abd71 100644 --- a/client.go +++ b/client.go @@ -276,9 +276,13 @@ again: // Calculates the number of pieces to set to Readahead priority, after the // Now, and Next pieces. func readaheadPieces(readahead, pieceLength int64) (ret int) { + // Expand the readahead to fit any partial pieces. Subtract 1 for the + // "next" piece that is assigned. ret = int((readahead+pieceLength-1)/pieceLength - 1) + // Lengthen the "readahead tail" to smooth blockiness that occurs when the + // piece length is much larger than the readahead. if ret < 2 { - ret = 2 + ret++ } return } diff --git a/client_test.go b/client_test.go index 8c7cc344..cfdbd7eb 100644 --- a/client_test.go +++ b/client_test.go @@ -15,6 +15,7 @@ import ( _ "github.com/anacrolix/envpprof" "github.com/anacrolix/utp" "github.com/bradfitz/iter" + "github.com/stretchr/testify/assert" "gopkg.in/check.v1" "github.com/anacrolix/torrent/bencode" @@ -295,15 +296,14 @@ func TestReadaheadPieces(t *testing.T) { readaheadPieces int }{ {5 * 1024 * 1024, 256 * 1024, 19}, - {5 * 1024 * 1024, 5 * 1024 * 1024, 0}, - {5*1024*1024 - 1, 5 * 1024 * 1024, 0}, - {5 * 1024 * 1024, 5*1024*1024 - 1, 1}, - {0, 5 * 1024 * 1024, -1}, + {5 * 1024 * 1024, 5 * 1024 * 1024, 1}, + {5*1024*1024 - 1, 5 * 1024 * 1024, 1}, + {5 * 1024 * 1024, 5*1024*1024 - 1, 2}, + {0, 5 * 1024 * 1024, 0}, {5 * 1024 * 1024, 1048576, 4}, } { - if readaheadPieces(case_.readaheadBytes, case_.pieceLength) != case_.readaheadPieces { - t.Fatalf("case failed: %v", case_) - } + pieces := readaheadPieces(case_.readaheadBytes, case_.pieceLength) + assert.Equal(t, case_.readaheadPieces, pieces, "%v", case_) } }