add some scanner benchmarks
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
35
server/scanner/scanner_benchmark_test.go
Normal file
35
server/scanner/scanner_benchmark_test.go
Normal 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()
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user