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  }