mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2025-07-23 12:51:40 +02:00
Also Benchmarks need _test in name
This commit is contained in:
121
internal/repository/repository_test.go
Normal file
121
internal/repository/repository_test.go
Normal file
@@ -0,0 +1,121 @@
|
||||
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
|
||||
// All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
package repository
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/ClusterCockpit/cc-backend/internal/graph/model"
|
||||
"github.com/ClusterCockpit/cc-backend/pkg/log"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
func TestPragma(t *testing.T) {
|
||||
t.Run("sets up a new DB", func(t *testing.T) {
|
||||
db := setup(t)
|
||||
|
||||
for _, pragma := range []string{"synchronous", "journal_mode", "busy_timeout", "auto_vacuum", "foreign_keys"} {
|
||||
t.Log("PRAGMA", pragma, getPragma(db, pragma))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func getPragma(db *JobRepository, name string) string {
|
||||
var s string
|
||||
if err := db.DB.QueryRow(`PRAGMA ` + name).Scan(&s); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func BenchmarkSelect1(b *testing.B) {
|
||||
db := setup(b)
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
_, err := db.DB.Exec(`select 1`)
|
||||
noErr(b, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkDB_FindJobById(b *testing.B) {
|
||||
var jobId int64 = 1677322
|
||||
|
||||
b.Run("FindJobById", func(b *testing.B) {
|
||||
db := setup(b)
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
_, err := db.FindById(jobId)
|
||||
noErr(b, err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkDB_FindJob(b *testing.B) {
|
||||
var jobId int64 = 107266
|
||||
var startTime int64 = 1657557241
|
||||
var cluster = "fritz"
|
||||
|
||||
b.Run("FindJob", func(b *testing.B) {
|
||||
db := setup(b)
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
_, err := db.Find(&jobId, &cluster, &startTime)
|
||||
noErr(b, err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkDB_CountJobs(b *testing.B) {
|
||||
filter := &model.JobFilter{}
|
||||
filter.State = append(filter.State, "running")
|
||||
cluster := "fritz"
|
||||
filter.Cluster = &model.StringInput{Eq: &cluster}
|
||||
user := "mppi133h"
|
||||
filter.User = &model.StringInput{Eq: &user}
|
||||
|
||||
b.Run("CountJobs", func(b *testing.B) {
|
||||
db := setup(b)
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
_, err := db.testCountJobs([]*model.JobFilter{filter})
|
||||
noErr(b, err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func setup(tb testing.TB) *JobRepository {
|
||||
tb.Helper()
|
||||
log.Init("warn", true)
|
||||
dbfile := "testdata/job.db"
|
||||
err := MigrateDB("sqlite3", dbfile)
|
||||
noErr(tb, err)
|
||||
|
||||
Connect("sqlite3", dbfile)
|
||||
return GetJobRepository()
|
||||
}
|
||||
|
||||
func noErr(tb testing.TB, err error) {
|
||||
tb.Helper()
|
||||
|
||||
if err != nil {
|
||||
tb.Fatal("Error is not nil:", err)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user