aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2024-08-29 13:05:00 +0200
committerTaras Madan <tarasmadan@google.com>2024-08-29 12:10:57 +0000
commitd40170b23b86bd4799ea08920a643f15e63f98ec (patch)
treea55653bc42dc4cde6537f49c340a7f1b48d93731 /pkg
parent9bd464fceeaf3432dae1d1598586454ad21fb42a (diff)
pkg/covermerger: we don't need branch info
The first versions of this code used branches for git checkout. Later the git repos were merged and branch info usage was reduced. The latest changes switched the code from branch checkout to commit checkout. There is no need in branch info anymore and I don't see any use-cases for it.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/cover/file.go2
-rw-r--r--pkg/covermerger/covermerger.go13
-rw-r--r--pkg/covermerger/covermerger_test.go12
-rw-r--r--pkg/covermerger/file_line_merger.go20
-rw-r--r--pkg/covermerger/provider_monorepo.go22
-rw-r--r--pkg/covermerger/provider_web.go8
6 files changed, 32 insertions, 45 deletions
diff --git a/pkg/cover/file.go b/pkg/cover/file.go
index 524963aaf..c692dd70a 100644
--- a/pkg/cover/file.go
+++ b/pkg/cover/file.go
@@ -39,7 +39,7 @@ func RendFileCoverage(c context.Context, ns, repo, forCommit, sourceCommit, file
}
config := &covermerger.Config{
Jobs: 1,
- Base: covermerger.RepoBranchCommit{
+ Base: covermerger.RepoCommit{
Repo: repo,
Commit: forCommit,
},
diff --git a/pkg/covermerger/covermerger.go b/pkg/covermerger/covermerger.go
index 35ac58b92..7f5eeeadd 100644
--- a/pkg/covermerger/covermerger.go
+++ b/pkg/covermerger/covermerger.go
@@ -28,14 +28,13 @@ const (
type FileRecord struct {
FilePath string
- RepoBranchCommit
+ RepoCommit
StartLine int
HitCount int
}
-type RepoBranchCommit struct {
+type RepoCommit struct {
Repo string
- Branch string
Commit string
}
@@ -52,9 +51,9 @@ type FileCoverageMerger interface {
func batchFileData(c *Config, targetFilePath string, records []*FileRecord) (*MergeResult, error) {
log.Logf(1, "processing %d records for %s", len(records), targetFilePath)
- repoBranchCommitsMap := make(map[RepoBranchCommit]bool)
+ repoBranchCommitsMap := make(map[RepoCommit]bool)
for _, record := range records {
- repoBranchCommitsMap[record.RepoBranchCommit] = true
+ repoBranchCommitsMap[record.RepoCommit] = true
}
repoBranchCommitsMap[c.Base] = true
repoBranchCommits := maps.Keys(repoBranchCommitsMap)
@@ -82,8 +81,6 @@ func makeRecord(fields, schema []string) (*FileRecord, error) {
record.FilePath = val
case KeyKernelRepo:
record.Repo = val
- case KeyKernelBranch:
- record.Branch = val
case KeyKernelCommit:
record.Commit = val
case KeyStartLine:
@@ -110,7 +107,7 @@ type Config struct {
Jobs int
Workdir string
skipRepoClone bool
- Base RepoBranchCommit
+ Base RepoCommit
FileVersProvider FileVersProvider
StoreDetails bool
}
diff --git a/pkg/covermerger/covermerger_test.go b/pkg/covermerger/covermerger_test.go
index becb3e9c9..f01599bf6 100644
--- a/pkg/covermerger/covermerger_test.go
+++ b/pkg/covermerger/covermerger_test.go
@@ -22,7 +22,6 @@ func TestAggregateStreamData(t *testing.T) {
bqTable string
simpleAggregation string
baseRepo string
- baseBranch string
baseCommit string
}
tests := []Test{
@@ -32,7 +31,6 @@ func TestAggregateStreamData(t *testing.T) {
bqTable: readFileOrFail(t, testsPath+"/aesni-intel_glue/bqTable.txt"),
simpleAggregation: readFileOrFail(t, testsPath+"/aesni-intel_glue/merge_result.txt"),
baseRepo: "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git",
- baseBranch: "master",
baseCommit: "fe46a7dd189e25604716c03576d05ac8a5209743",
},
{
@@ -48,7 +46,6 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit1,delete_code.c,func1,2,
}
}`,
baseRepo: "git://repo",
- baseBranch: "master",
baseCommit: "commit2",
},
{
@@ -63,7 +60,6 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit1,delete_file.c,func1,2,
}
}`,
baseRepo: "git://repo",
- baseBranch: "master",
baseCommit: "commit2",
},
{
@@ -80,7 +76,6 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit1,change_line.c,func1,3,
}
}`,
baseRepo: "git://repo",
- baseBranch: "master",
baseCommit: "commit2",
},
{
@@ -96,7 +91,6 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit1,add_line.c,func1,2,0,2
}
}`,
baseRepo: "git://repo",
- baseBranch: "master",
baseCommit: "commit2",
},
{
@@ -113,7 +107,6 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit2,not_changed.c,func1,4,
}
}`,
baseRepo: "git://repo",
- baseBranch: "master",
baseCommit: "commit2",
},
}
@@ -124,9 +117,8 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit2,not_changed.c,func1,4,
Jobs: 2,
Workdir: test.workdir,
skipRepoClone: true,
- Base: RepoBranchCommit{
+ Base: RepoCommit{
Repo: test.baseRepo,
- Branch: test.baseBranch,
Commit: test.baseCommit,
},
FileVersProvider: &fileVersProviderMock{},
@@ -143,7 +135,7 @@ samp_time,1,360,arch,b1,ci-mock,git://repo,master,commit2,not_changed.c,func1,4,
type fileVersProviderMock struct{}
-func (m *fileVersProviderMock) GetFileVersions(c *Config, targetFilePath string, rbcs []RepoBranchCommit,
+func (m *fileVersProviderMock) GetFileVersions(c *Config, targetFilePath string, rbcs []RepoCommit,
) (fileVersions, error) {
res := make(fileVersions)
for _, rbc := range rbcs {
diff --git a/pkg/covermerger/file_line_merger.go b/pkg/covermerger/file_line_merger.go
index c9e990b39..95d226adf 100644
--- a/pkg/covermerger/file_line_merger.go
+++ b/pkg/covermerger/file_line_merger.go
@@ -6,7 +6,7 @@ package covermerger
import "github.com/google/syzkaller/pkg/log"
func makeFileLineCoverMerger(
- fvs fileVersions, base RepoBranchCommit, storeDetails bool) FileCoverageMerger {
+ fvs fileVersions, base RepoCommit, storeDetails bool) FileCoverageMerger {
baseFile := ""
baseFileExists := false
for rbc, fv := range fvs {
@@ -26,8 +26,8 @@ func makeFileLineCoverMerger(
},
rbcToFile: fvs,
baseFile: baseFile,
- matchers: make(map[RepoBranchCommit]*LineToLineMatcher),
- lostFrames: map[RepoBranchCommit]int64{},
+ matchers: make(map[RepoCommit]*LineToLineMatcher),
+ lostFrames: map[RepoCommit]int64{},
}
if storeDetails {
a.MergeResult.LineDetails = make(map[int][]*FileRecord)
@@ -42,18 +42,18 @@ type FileLineCoverMerger struct {
*MergeResult
rbcToFile fileVersions
baseFile string
- matchers map[RepoBranchCommit]*LineToLineMatcher
- lostFrames map[RepoBranchCommit]int64
+ matchers map[RepoCommit]*LineToLineMatcher
+ lostFrames map[RepoCommit]int64
}
func (a *FileLineCoverMerger) Add(record *FileRecord) {
- if a.matchers[record.RepoBranchCommit] == nil {
+ if a.matchers[record.RepoCommit] == nil {
if record.HitCount > 0 {
- a.lostFrames[record.RepoBranchCommit]++
+ a.lostFrames[record.RepoCommit]++
}
return
}
- if targetLine := a.matchers[record.RepoBranchCommit].SameLinePos(record.StartLine); targetLine != -1 {
+ if targetLine := a.matchers[record.RepoCommit].SameLinePos(record.StartLine); targetLine != -1 {
a.HitCounts[targetLine] += record.HitCount
if a.LineDetails != nil {
a.LineDetails[targetLine] = append(a.LineDetails[targetLine], record)
@@ -63,8 +63,8 @@ func (a *FileLineCoverMerger) Add(record *FileRecord) {
func (a *FileLineCoverMerger) Result() *MergeResult {
for rbc, lostFrames := range a.lostFrames {
- log.Logf(1, "\t[warn] lost %d frames from rbc(%s, %s, %s)",
- lostFrames, rbc.Repo, rbc.Branch, rbc.Commit)
+ log.Logf(1, "\t[warn] lost %d frames from repoCommit(%s, %s)",
+ lostFrames, rbc.Repo, rbc.Commit)
}
return a.MergeResult
}
diff --git a/pkg/covermerger/provider_monorepo.go b/pkg/covermerger/provider_monorepo.go
index 9f1740e51..32da2f8a5 100644
--- a/pkg/covermerger/provider_monorepo.go
+++ b/pkg/covermerger/provider_monorepo.go
@@ -13,19 +13,19 @@ import (
)
type FileVersProvider interface {
- GetFileVersions(c *Config, targetFilePath string, rbcs []RepoBranchCommit,
+ GetFileVersions(c *Config, targetFilePath string, rbcs []RepoCommit,
) (fileVersions, error)
}
type monoRepo struct {
- repoCommits map[RepoBranchCommit]struct{}
+ repoCommits map[RepoCommit]struct{}
mu sync.RWMutex
repo vcs.Repo
}
-type fileVersions map[RepoBranchCommit]string
+type fileVersions map[RepoCommit]string
-func (mr *monoRepo) GetFileVersions(c *Config, targetFilePath string, rbcs []RepoBranchCommit,
+func (mr *monoRepo) GetFileVersions(c *Config, targetFilePath string, rbcs []RepoCommit,
) (fileVersions, error) {
mr.mu.RLock()
if !mr.allRepoCommitsPresent(rbcs) {
@@ -48,7 +48,7 @@ func (mr *monoRepo) GetFileVersions(c *Config, targetFilePath string, rbcs []Rep
return res, nil
}
-func (mr *monoRepo) allRepoCommitsPresent(rbcs []RepoBranchCommit) bool {
+func (mr *monoRepo) allRepoCommitsPresent(rbcs []RepoCommit) bool {
for _, rbc := range rbcs {
if !mr.repoCommitPresent(rbc) {
return false
@@ -57,15 +57,13 @@ func (mr *monoRepo) allRepoCommitsPresent(rbcs []RepoBranchCommit) bool {
return true
}
-func (mr *monoRepo) repoCommitPresent(rbc RepoBranchCommit) bool {
- rbc.Branch = ""
+func (mr *monoRepo) repoCommitPresent(rbc RepoCommit) bool {
_, ok := mr.repoCommits[rbc]
return ok
}
-func (mr *monoRepo) addRepoCommit(rbc RepoBranchCommit) {
- log.Logf(0, "cloning repo: %s, branch: %s, commit %s", rbc.Repo, rbc.Branch, rbc.Commit)
- rbc.Branch = ""
+func (mr *monoRepo) addRepoCommit(rbc RepoCommit) {
+ log.Logf(0, "cloning repo: %s, commit %s", rbc.Repo, rbc.Commit)
mr.repoCommits[rbc] = struct{}{}
if rbc.Repo == "" || rbc.Commit == "" {
panic("repo and commit are needed")
@@ -79,7 +77,7 @@ func (mr *monoRepo) addRepoCommit(rbc RepoBranchCommit) {
func MakeMonoRepo(workdir string) FileVersProvider {
rbcPath := workdir + "/repos/linux_kernels"
mr := &monoRepo{
- repoCommits: map[RepoBranchCommit]struct{}{},
+ repoCommits: map[RepoCommit]struct{}{},
}
var err error
if mr.repo, err = vcs.NewRepo(targets.Linux, "none", rbcPath); err != nil {
@@ -88,7 +86,7 @@ func MakeMonoRepo(workdir string) FileVersProvider {
return mr
}
-func (mr *monoRepo) cloneCommits(rbcs []RepoBranchCommit) {
+func (mr *monoRepo) cloneCommits(rbcs []RepoCommit) {
mr.mu.Lock()
defer mr.mu.Unlock()
for _, rbc := range rbcs {
diff --git a/pkg/covermerger/provider_web.go b/pkg/covermerger/provider_web.go
index e992f85b5..18addd6ee 100644
--- a/pkg/covermerger/provider_web.go
+++ b/pkg/covermerger/provider_web.go
@@ -14,7 +14,7 @@ import (
type webGit struct {
}
-func (mr *webGit) GetFileVersions(c *Config, targetFilePath string, rbcs []RepoBranchCommit,
+func (mr *webGit) GetFileVersions(c *Config, targetFilePath string, rbcs []RepoCommit,
) (fileVersions, error) {
res := make(fileVersions)
for _, rbc := range rbcs {
@@ -68,12 +68,12 @@ func MakeWebGit() FileVersProvider {
}
func GetFileVersion(filePath, repo, commit string) (string, error) {
- rbc := RepoBranchCommit{repo, "", commit}
+ repoCommit := RepoCommit{repo, commit}
files, err := MakeWebGit().GetFileVersions(nil,
filePath,
- []RepoBranchCommit{rbc})
+ []RepoCommit{repoCommit})
if err != nil {
return "", fmt.Errorf("failed to GetFileVersions: %w", err)
}
- return files[rbc], nil
+ return files[repoCommit], nil
}