- for _, memory := range []bool{false, true} {
- b.Run(fmt.Sprintf("Memory=%v", memory), func(b *testing.B) {
- for _, batchWrites := range []bool{false, true} {
- b.Run(fmt.Sprintf("BatchWrites=%v", batchWrites), func(b *testing.B) {
- dbPath := filepath.Join(b.TempDir(), "storage.db")
- //b.Logf("storage db path: %q", dbPath)
- newPoolOpts := NewPoolOpts{
- Path: dbPath,
- Capacity: 4*pieceSize - 1,
- NoConcurrentBlobReads: false,
- PageSize: 1 << 14,
- Memory: memory,
- }
- provOpts := func(opts *ProviderOpts) {
- opts.BatchWrites = batchWrites
- }
- b.Run("SqlitePieceStorage", func(b *testing.B) {
- ci, err := NewPiecesStorage(NewPiecesStorageOpts{
- NewPoolOpts: newPoolOpts,
- ProvOpts: provOpts,
+ for _, storage := range []struct {
+ name string
+ maker func(newPoolOpts NewPoolOpts, provOpts func(*ProviderOpts)) storage.ClientImplCloser
+ }{
+ {"SqliteDirect", func(newPoolOpts NewPoolOpts, provOpts func(*ProviderOpts)) storage.ClientImplCloser {
+ ci, err := NewDirectStorage(NewDirectStorageOpts{
+ NewPoolOpts: newPoolOpts,
+ ProvOpts: provOpts,
+ })
+ c.Assert(err, qt.IsNil)
+ return ci
+ }},
+ {"SqlitePieceStorage", func(newPoolOpts NewPoolOpts, provOpts func(*ProviderOpts)) storage.ClientImplCloser {
+ ci, err := NewPiecesStorage(NewPiecesStorageOpts{
+ NewPoolOpts: newPoolOpts,
+ ProvOpts: provOpts,
+ })
+ c.Assert(err, qt.IsNil)
+ return ci
+ }},
+ } {
+ b.Run(storage.name, func(b *testing.B) {
+ for _, memory := range []bool{false, true} {
+ b.Run(fmt.Sprintf("Memory=%v", memory), func(b *testing.B) {
+ for _, batchWrites := range []bool{false, true} {
+ b.Run(fmt.Sprintf("BatchWrites=%v", batchWrites), func(b *testing.B) {
+ dbPath := filepath.Join(b.TempDir(), "storage.db")
+ //b.Logf("storage db path: %q", dbPath)
+ newPoolOpts := NewPoolOpts{
+ Path: dbPath,
+ Capacity: capacity,
+ NoConcurrentBlobReads: false,
+ PageSize: 1 << 14,
+ Memory: memory,
+ }
+ provOpts := func(opts *ProviderOpts) {
+ opts.BatchWrites = batchWrites
+ }
+ ci := storage.maker(newPoolOpts, provOpts)
+ defer ci.Close()
+ test_storage.BenchmarkPieceMarkComplete(b, ci, pieceSize, test_storage.DefaultNumPieces, capacity)