mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2026-02-11 13:31:45 +01:00
Create copy of test db before unit tests
This commit is contained in:
@@ -139,6 +139,13 @@ func nodeTestSetup(t *testing.T) {
|
|||||||
}
|
}
|
||||||
archiveCfg := fmt.Sprintf("{\"kind\": \"file\",\"path\": \"%s\"}", jobarchive)
|
archiveCfg := fmt.Sprintf("{\"kind\": \"file\",\"path\": \"%s\"}", jobarchive)
|
||||||
|
|
||||||
|
if err := ResetConnection(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
t.Cleanup(func() {
|
||||||
|
ResetConnection()
|
||||||
|
})
|
||||||
|
|
||||||
Connect(dbfilepath)
|
Connect(dbfilepath)
|
||||||
|
|
||||||
if err := archive.Init(json.RawMessage(archiveCfg)); err != nil {
|
if err := archive.Init(json.RawMessage(archiveCfg)); err != nil {
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ package repository
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ClusterCockpit/cc-backend/internal/graph/model"
|
"github.com/ClusterCockpit/cc-backend/internal/graph/model"
|
||||||
@@ -148,8 +150,22 @@ func getContext(tb testing.TB) context.Context {
|
|||||||
func setup(tb testing.TB) *JobRepository {
|
func setup(tb testing.TB) *JobRepository {
|
||||||
tb.Helper()
|
tb.Helper()
|
||||||
cclog.Init("warn", true)
|
cclog.Init("warn", true)
|
||||||
dbfile := "testdata/job.db"
|
|
||||||
err := MigrateDB(dbfile)
|
// Copy test DB to a temp file for test isolation
|
||||||
|
srcData, err := os.ReadFile("testdata/job.db")
|
||||||
|
noErr(tb, err)
|
||||||
|
dbfile := filepath.Join(tb.TempDir(), "job.db")
|
||||||
|
err = os.WriteFile(dbfile, srcData, 0o644)
|
||||||
|
noErr(tb, err)
|
||||||
|
|
||||||
|
// Reset singletons so Connect uses the new temp DB
|
||||||
|
err = ResetConnection()
|
||||||
|
noErr(tb, err)
|
||||||
|
tb.Cleanup(func() {
|
||||||
|
ResetConnection()
|
||||||
|
})
|
||||||
|
|
||||||
|
err = MigrateDB(dbfile)
|
||||||
noErr(tb, err)
|
noErr(tb, err)
|
||||||
Connect(dbfile)
|
Connect(dbfile)
|
||||||
return GetJobRepository()
|
return GetJobRepository()
|
||||||
|
|||||||
@@ -25,17 +25,11 @@ func TestBuildJobStatsQuery(t *testing.T) {
|
|||||||
func TestJobStats(t *testing.T) {
|
func TestJobStats(t *testing.T) {
|
||||||
r := setup(t)
|
r := setup(t)
|
||||||
|
|
||||||
// First, count the actual jobs in the database (excluding test jobs)
|
|
||||||
var expectedCount int
|
var expectedCount int
|
||||||
err := r.DB.QueryRow(`SELECT COUNT(*) FROM job WHERE cluster != 'testcluster'`).Scan(&expectedCount)
|
err := r.DB.QueryRow(`SELECT COUNT(*) FROM job`).Scan(&expectedCount)
|
||||||
noErr(t, err)
|
noErr(t, err)
|
||||||
|
|
||||||
filter := &model.JobFilter{}
|
stats, err := r.JobsStats(getContext(t), []*model.JobFilter{})
|
||||||
// Exclude test jobs created by other tests
|
|
||||||
testCluster := "testcluster"
|
|
||||||
filter.Cluster = &model.StringInput{Neq: &testCluster}
|
|
||||||
|
|
||||||
stats, err := r.JobsStats(getContext(t), []*model.JobFilter{filter})
|
|
||||||
noErr(t, err)
|
noErr(t, err)
|
||||||
|
|
||||||
if stats[0].TotalJobs != expectedCount {
|
if stats[0].TotalJobs != expectedCount {
|
||||||
|
|||||||
@@ -31,8 +31,25 @@ func setupUserTest(t *testing.T) *UserCfgRepo {
|
|||||||
}`
|
}`
|
||||||
|
|
||||||
cclog.Init("info", true)
|
cclog.Init("info", true)
|
||||||
dbfilepath := "testdata/job.db"
|
|
||||||
err := MigrateDB(dbfilepath)
|
// Copy test DB to a temp file for test isolation
|
||||||
|
srcData, err := os.ReadFile("testdata/job.db")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
dbfilepath := filepath.Join(t.TempDir(), "job.db")
|
||||||
|
if err := os.WriteFile(dbfilepath, srcData, 0o644); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := ResetConnection(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
t.Cleanup(func() {
|
||||||
|
ResetConnection()
|
||||||
|
})
|
||||||
|
|
||||||
|
err = MigrateDB(dbfilepath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user