From 3d4dd9d7ad79736e8c67dddfd47af27da3861e8b Mon Sep 17 00:00:00 2001 From: sentriz Date: Sat, 20 Nov 2021 16:09:47 +0000 Subject: [PATCH] add some scanner benchmarks --- server/mockfs/mockfs.go | 17 ++++-------- server/scanner/scanner_benchmark_test.go | 35 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 server/scanner/scanner_benchmark_test.go diff --git a/server/mockfs/mockfs.go b/server/mockfs/mockfs.go index 40e0da6..33ebf09 100644 --- a/server/mockfs/mockfs.go +++ b/server/mockfs/mockfs.go @@ -4,7 +4,6 @@ import ( "errors" "fmt" "io/fs" - "io/ioutil" "os" "path/filepath" "testing" @@ -18,22 +17,22 @@ import ( var ErrPathNotFound = errors.New("path not found") type MockFS struct { - t *testing.T + t testing.TB scanner *scanner.Scanner dir string reader *mreader db *db.DB } -func New(t *testing.T) *MockFS { +func New(t testing.TB) *MockFS { return new(t, []string{""}) } -func NewWithDirs(t *testing.T, dirs []string) *MockFS { +func NewWithDirs(t testing.TB, dirs []string) *MockFS { return new(t, dirs) } -func new(t *testing.T, dirs []string) *MockFS { +func new(t testing.TB, dirs []string) *MockFS { dbc, err := db.NewMock() if err != nil { t.Fatalf("create db: %v", err) @@ -43,10 +42,7 @@ func new(t *testing.T, dirs []string) *MockFS { } dbc.LogMode(false) - tmpDir, err := ioutil.TempDir("", "gonic-test-") - if err != nil { - t.Fatalf("create tmp dir: %v", err) - } + tmpDir := t.TempDir() var absDirs []string for _, dir := range dirs { @@ -93,9 +89,6 @@ func (m *MockFS) CleanUp() { if err := m.db.Close(); err != nil { 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) { diff --git a/server/scanner/scanner_benchmark_test.go b/server/scanner/scanner_benchmark_test.go new file mode 100644 index 0000000..b4205ab --- /dev/null +++ b/server/scanner/scanner_benchmark_test.go @@ -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() + } +}