add some scanner benchmarks

This commit is contained in:
sentriz
2021-11-20 16:09:47 +00:00
committed by Senan Kelly
parent 1d1ab116cd
commit 3d4dd9d7ad
2 changed files with 40 additions and 12 deletions

View File

@@ -4,7 +4,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"io/fs" "io/fs"
"io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"testing" "testing"
@@ -18,22 +17,22 @@ import (
var ErrPathNotFound = errors.New("path not found") var ErrPathNotFound = errors.New("path not found")
type MockFS struct { type MockFS struct {
t *testing.T t testing.TB
scanner *scanner.Scanner scanner *scanner.Scanner
dir string dir string
reader *mreader reader *mreader
db *db.DB db *db.DB
} }
func New(t *testing.T) *MockFS { func New(t testing.TB) *MockFS {
return new(t, []string{""}) return new(t, []string{""})
} }
func NewWithDirs(t *testing.T, dirs []string) *MockFS { func NewWithDirs(t testing.TB, dirs []string) *MockFS {
return new(t, dirs) return new(t, dirs)
} }
func new(t *testing.T, dirs []string) *MockFS { func new(t testing.TB, dirs []string) *MockFS {
dbc, err := db.NewMock() dbc, err := db.NewMock()
if err != nil { if err != nil {
t.Fatalf("create db: %v", err) t.Fatalf("create db: %v", err)
@@ -43,10 +42,7 @@ func new(t *testing.T, dirs []string) *MockFS {
} }
dbc.LogMode(false) dbc.LogMode(false)
tmpDir, err := ioutil.TempDir("", "gonic-test-") tmpDir := t.TempDir()
if err != nil {
t.Fatalf("create tmp dir: %v", err)
}
var absDirs []string var absDirs []string
for _, dir := range dirs { for _, dir := range dirs {
@@ -93,9 +89,6 @@ func (m *MockFS) CleanUp() {
if err := m.db.Close(); err != nil { if err := m.db.Close(); err != nil {
m.t.Fatalf("close db: %v", err) m.t.Fatalf("close db: %v", err)
} }
if err := os.RemoveAll(m.dir); err != nil {
m.t.Fatalf("remove all: %v", err)
}
} }
func (m *MockFS) addItems(prefix string, covers bool) { func (m *MockFS) addItems(prefix string, covers bool) {

View File

@@ -0,0 +1,35 @@
package scanner_test
import (
"fmt"
"testing"
"go.senan.xyz/gonic/server/mockfs"
)
func BenchmarkScanIncremental(b *testing.B) {
m := mockfs.New(b)
defer m.CleanUp()
for i := 0; i < 5; i++ {
m.AddItemsPrefix(fmt.Sprintf("t-%d", i))
}
m.ScanAndClean()
b.ResetTimer()
for i := 0; i < b.N; i++ {
m.ScanAndClean()
}
}
func BenchmarkScanFull(b *testing.B) {
for i := 0; i < b.N; i++ {
m := mockfs.New(b)
for i := 0; i < 5; i++ {
m.AddItemsPrefix(fmt.Sprintf("t-%d", i))
}
b.StartTimer()
m.ScanAndClean()
b.StopTimer()
m.CleanUp()
}
}