github.com/anacrolix/torrent@v1.61.0/storage/possum/possum_test.go (about)

     1  //go:build cgo
     2  
     3  package possumTorrentStorage
     4  
     5  import (
     6  	"testing"
     7  
     8  	g "github.com/anacrolix/generics"
     9  	"github.com/anacrolix/log"
    10  	possum "github.com/anacrolix/possum/go"
    11  	possumResource "github.com/anacrolix/possum/go/resource"
    12  	_ "github.com/anacrolix/possum/go/testlink"
    13  
    14  	"github.com/anacrolix/torrent/storage"
    15  	test_storage "github.com/anacrolix/torrent/storage/test"
    16  )
    17  
    18  // This should be made to mirror the benchmarks for sqlite storage.
    19  func BenchmarkProvider(b *testing.B) {
    20  	possumDir, err := possum.Open(b.TempDir())
    21  	if err != nil {
    22  		b.Fatal(err)
    23  	}
    24  	possumDir.SetInstanceLimits(possum.Limits{
    25  		DisableHolePunching: false,
    26  		MaxValueLengthSum:   g.Some[uint64](test_storage.DefaultPieceSize * test_storage.DefaultNumPieces / 2),
    27  	})
    28  	defer possumDir.Close()
    29  	possumProvider := possumResource.Provider{Handle: possumDir}
    30  	possumTorrentProvider := Provider{Provider: possumProvider, Logger: log.Default}
    31  	clientStorageImpl := storage.NewResourcePiecesOpts(
    32  		possumTorrentProvider,
    33  		storage.ResourcePiecesOpts{LeaveIncompleteChunks: true})
    34  	test_storage.BenchmarkPieceMarkComplete(
    35  		b,
    36  		clientStorageImpl,
    37  		test_storage.DefaultPieceSize,
    38  		test_storage.DefaultNumPieces,
    39  		0,
    40  	)
    41  }