]> Sergey Matveev's repositories - btrtrc.git/blob - request-strategy-impls_test.go
Restore request strategy Torrent.Piece use, without a heap allocation
[btrtrc.git] / request-strategy-impls_test.go
1 package torrent
2
3 import (
4         "io"
5         "runtime"
6         "testing"
7
8         "github.com/davecgh/go-spew/spew"
9         qt "github.com/frankban/quicktest"
10
11         request_strategy "github.com/anacrolix/torrent/request-strategy"
12 )
13
14 func makeRequestStrategyPiece(t request_strategy.Torrent) request_strategy.Piece {
15         return t.Piece(0)
16 }
17
18 func TestRequestStrategyPieceDoesntAlloc(t *testing.T) {
19         c := qt.New(t)
20         akshalTorrent := &Torrent{pieces: make([]Piece, 1)}
21         rst := requestStrategyTorrent{akshalTorrent}
22         var before, after runtime.MemStats
23         runtime.ReadMemStats(&before)
24         p := makeRequestStrategyPiece(rst)
25         runtime.ReadMemStats(&after)
26         c.Assert(before.HeapAlloc, qt.Equals, after.HeapAlloc)
27         // We have to use p, or it gets optimized away.
28         spew.Fdump(io.Discard, p)
29 }