github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/syz-cluster/pkg/db/session_test_repo_test.go (about) 1 // Copyright 2024 syzkaller project authors. All rights reserved. 2 // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 package db 5 6 import ( 7 "fmt" 8 "testing" 9 10 "cloud.google.com/go/spanner" 11 "github.com/google/syzkaller/syz-cluster/pkg/api" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestSessionTestRepository(t *testing.T) { 16 client, ctx := NewTransientDB(t) 17 sessionRepo := NewSessionRepository(client) 18 seriesRepo := NewSeriesRepository(client) 19 testsRepo := NewSessionTestRepository(client) 20 buildRepo := NewBuildRepository(client) 21 22 series := &Series{ExtID: "some-series"} 23 err := seriesRepo.Insert(ctx, series, nil) 24 assert.NoError(t, err) 25 26 session := &Session{SeriesID: series.ID} 27 err = sessionRepo.Insert(ctx, session) 28 assert.NoError(t, err) 29 30 build1 := &Build{TreeName: "mainline", Arch: "amd64", CommitHash: "abcd", Status: "success"} 31 err = buildRepo.Insert(ctx, build1) 32 assert.NoError(t, err) 33 build2 := &Build{TreeName: "mainline", Arch: "amd64", CommitHash: "efgh", Status: "success"} 34 err = buildRepo.Insert(ctx, build2) 35 assert.NoError(t, err) 36 37 // Add several tests. 38 for i := 0; i < 2; i++ { 39 test := &SessionTest{ 40 SessionID: session.ID, 41 TestName: fmt.Sprintf("test %d", i), 42 BaseBuildID: spanner.NullString{StringVal: build1.ID, Valid: true}, 43 PatchedBuildID: spanner.NullString{StringVal: build2.ID, Valid: true}, 44 Result: api.TestPassed, 45 } 46 err = testsRepo.InsertOrUpdate(ctx, test, nil) 47 assert.NoError(t, err) 48 } 49 50 list, err := testsRepo.BySession(ctx, session.ID) 51 assert.NoError(t, err) 52 assert.Len(t, list, 2) 53 for _, test := range list { 54 assert.NotNil(t, test.BaseBuild) 55 assert.NotNil(t, test.PatchedBuild) 56 } 57 }