github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/syz-cluster/pkg/db/build_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  	"testing"
     8  	"time"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestLastSuccessfulBuild(t *testing.T) {
    14  	client, ctx := NewTransientDB(t)
    15  	repo := NewBuildRepository(client)
    16  
    17  	params := &LastBuildParams{
    18  		Arch:       "amd64",
    19  		TreeName:   "mainline",
    20  		ConfigName: "kasan",
    21  		Status:     BuildSuccess,
    22  	}
    23  	build, err := repo.LastBuiltTree(ctx, params)
    24  	assert.NoError(t, err)
    25  	assert.Nil(t, build)
    26  
    27  	// Insert a non-successful.
    28  	err = repo.Insert(ctx, &Build{
    29  		Arch:       "amd64",
    30  		TreeName:   "mainline",
    31  		CommitHash: "bad",
    32  		CommitDate: time.Now(),
    33  		ConfigName: "kasan",
    34  		Status:     BuildFailed,
    35  	})
    36  	assert.NoError(t, err)
    37  
    38  	// It should not be queried.
    39  	build, err = repo.LastBuiltTree(ctx, params)
    40  	assert.NoError(t, err)
    41  	assert.Nil(t, build)
    42  
    43  	// .. but if don't specify the status, it should be there.
    44  	build, err = repo.LastBuiltTree(ctx, &LastBuildParams{
    45  		TreeName: "mainline",
    46  	})
    47  	assert.NoError(t, err)
    48  	assert.NotNil(t, build)
    49  
    50  	// Insert the correct one.
    51  	err = repo.Insert(ctx, &Build{
    52  		Arch:       "amd64",
    53  		TreeName:   "mainline",
    54  		CommitHash: "good",
    55  		CommitDate: time.Now(),
    56  		ConfigName: "kasan",
    57  		Status:     BuildSuccess,
    58  	})
    59  	assert.NoError(t, err)
    60  
    61  	// It should be in the output.
    62  	build, err = repo.LastBuiltTree(ctx, params)
    63  	assert.NoError(t, err)
    64  	assert.Equal(t, "good", build.CommitHash)
    65  
    66  	// But not for different arguments.
    67  	build, err = repo.LastBuiltTree(ctx, &LastBuildParams{
    68  		Arch:       "arm64",
    69  		TreeName:   "mainline",
    70  		ConfigName: "kasan",
    71  	})
    72  	assert.NoError(t, err)
    73  	assert.Nil(t, build)
    74  }