mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-01-12 03:21:33 +00:00
This is spin-off of changes from #459. Transactions are not being used yet, but batches are updated to work with the new API. `database/` package was refactored to split abstract interfaces and implementation via goleveldb. This should make it easier to implement new database types.
99 lines
2.0 KiB
Go
99 lines
2.0 KiB
Go
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 os.RemoveAll(tmpDir)
|
|
|
|
db, _ := goleveldb.NewOpenDB(tmpDir)
|
|
defer 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 os.RemoveAll(tmpDir)
|
|
|
|
db, _ := goleveldb.NewOpenDB(tmpDir)
|
|
defer 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 os.RemoveAll(tmpDir)
|
|
|
|
db, _ := goleveldb.NewOpenDB(tmpDir)
|
|
defer 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()
|
|
}
|
|
}
|
|
}
|