package deb import ( "fmt" "os" "testing" "github.com/aptly-dev/aptly/database/goleveldb" ) func BenchmarkSnapshotCollectionForEach(b *testing.B) { const count = 1024 tmpDir := os.TempDir() defer func() { _ = os.RemoveAll(tmpDir) }() db, _ := goleveldb.NewOpenDB(tmpDir) defer func() { _ = db.Close() }() collection := NewSnapshotCollection(db) for i := 0; i < count; i++ { snapshot := NewSnapshotFromRefList(fmt.Sprintf("snapshot%d", i), nil, NewPackageRefList(), fmt.Sprintf("Snapshot number %d", i)) if collection.Add(snapshot) != nil { b.FailNow() } } b.ResetTimer() for i := 0; i < b.N; i++ { collection = NewSnapshotCollection(db) _ = collection.ForEach(func(s *Snapshot) error { return nil }) } } func BenchmarkSnapshotCollectionByUUID(b *testing.B) { const count = 1024 tmpDir := os.TempDir() defer func() { _ = os.RemoveAll(tmpDir) }() db, _ := goleveldb.NewOpenDB(tmpDir) defer func() { _ = db.Close() }() collection := NewSnapshotCollection(db) uuids := []string{} for i := 0; i < count; i++ { snapshot := NewSnapshotFromRefList(fmt.Sprintf("snapshot%d", i), nil, NewPackageRefList(), fmt.Sprintf("Snapshot number %d", i)) if collection.Add(snapshot) != nil { b.FailNow() } uuids = append(uuids, snapshot.UUID) } b.ResetTimer() for i := 0; i < b.N; i++ { collection = NewSnapshotCollection(db) if _, err := collection.ByUUID(uuids[i%len(uuids)]); err != nil { b.FailNow() } } } func BenchmarkSnapshotCollectionByName(b *testing.B) { const count = 1024 tmpDir := os.TempDir() defer func() { _ = os.RemoveAll(tmpDir) }() db, _ := goleveldb.NewOpenDB(tmpDir) defer func() { _ = db.Close() }() collection := NewSnapshotCollection(db) for i := 0; i < count; i++ { snapshot := NewSnapshotFromRefList(fmt.Sprintf("snapshot%d", i), nil, NewPackageRefList(), fmt.Sprintf("Snapshot number %d", i)) if collection.Add(snapshot) != nil { b.FailNow() } } b.ResetTimer() for i := 0; i < b.N; i++ { collection = NewSnapshotCollection(db) if _, err := collection.ByName(fmt.Sprintf("snapshot%d", i%count)); err != nil { b.FailNow() } } }