Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(359)

Side by Side Diff: fuzzer/go/frontend/data/report.go

Issue 1662373002: Add UI to filter fuzzes based on tags. (Closed) Base URL: https://skia.googlesource.com/buildbot@add-asan
Patch Set: remove conflicting status-sk elements Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | fuzzer/go/fuzzer-fe/main.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 package data 1 package data
2 2
3 import ( 3 import (
4 "bytes" 4 "bytes"
5 "encoding/gob" 5 "encoding/gob"
6 "fmt" 6 "fmt"
7 "sort" 7 "sort"
8 "sync" 8 "sync"
9 9
10 "github.com/skia-dev/glog" 10 "github.com/skia-dev/glog"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 func FindFuzzSummary(category string) FuzzReportTree { 95 func FindFuzzSummary(category string) FuzzReportTree {
96 cache, found := currentData.caches[category] 96 cache, found := currentData.caches[category]
97 if !found { 97 if !found {
98 return FuzzReportTree{} 98 return FuzzReportTree{}
99 } 99 }
100 return cache.SummaryReport 100 return cache.SummaryReport
101 } 101 }
102 102
103 // FindFuzzDetails returns the detailed fuzz reports for a file name, function n ame, and line number. 103 // FindFuzzDetails returns the detailed fuzz reports for a file name, function n ame, and line number.
104 // If functionName is "" or lineNumber is -1, all reports are shown. 104 // If functionName is "" or lineNumber is -1, all reports are shown.
105 func FindFuzzDetails(category, fileName, functionName string, lineNumber int) (F ileFuzzReport, error) { 105 func FindFuzzDetails(category, fileName, functionName string, lineNumber int) (F uzzReportTree, error) {
106 » cache := currentData.caches[category] 106 » cache, found := currentData.caches[category]
107 » for _, file := range cache.FullReport { 107 » if found {
108 » » if file.FileName == fileName { 108 » » if fileName == "" {
109 » » » if functionName == "" { 109 » » » return cache.FullReport, nil
110 » » » » return file, nil 110 » » }
111 » » for _, file := range cache.FullReport {
112 » » » if file.FileName == fileName {
113 » » » » if functionName == "" {
114 » » » » » return FuzzReportTree{file}, nil
115 » » » » }
116 » » » » file.filterByFunctionName(functionName)
117 » » » » if lineNumber == common.UNKNOWN_LINE {
118 » » » » » return FuzzReportTree{file}, nil
119 » » » » }
120 » » » » file.Functions[0].filterByLineNumber(lineNumber)
121 » » » » return FuzzReportTree{file}, nil
111 } 122 }
112 file.filterByFunctionName(functionName)
113 if lineNumber == common.UNKNOWN_LINE {
114 return file, nil
115 }
116 file.Functions[0].filterByLineNumber(lineNumber)
117 return file, nil
118 } 123 }
119 } 124 }
120 » return FileFuzzReport{}, fmt.Errorf("File %q not found", fileName) 125
126 » return nil, fmt.Errorf("File %q not found", fileName)
121 } 127 }
122 128
123 // filterByFunctionName removes all FuzzReportFunction except that which matches functionName 129 // filterByFunctionName removes all FuzzReportFunction except that which matches functionName
124 func (file *FileFuzzReport) filterByFunctionName(functionName string) { 130 func (file *FileFuzzReport) filterByFunctionName(functionName string) {
125 for _, function := range file.Functions { 131 for _, function := range file.Functions {
126 if functionName == function.FunctionName { 132 if functionName == function.FunctionName {
127 file.Functions = []FunctionFuzzReport{function} 133 file.Functions = []FunctionFuzzReport{function}
128 break 134 break
129 } 135 }
130 } 136 }
(...skipping 11 matching lines...) Expand all
142 func CategoryOverview(category string) FuzzReportTree { 148 func CategoryOverview(category string) FuzzReportTree {
143 overview, found := currentData.caches[category] 149 overview, found := currentData.caches[category]
144 if found { 150 if found {
145 return overview.SummaryReport 151 return overview.SummaryReport
146 } 152 }
147 return FuzzReportTree{} 153 return FuzzReportTree{}
148 } 154 }
149 155
150 // FindFuzzDetailForFuzz returns a tree containing the single 156 // FindFuzzDetailForFuzz returns a tree containing the single
151 // report with the given name, or an error, it it doesn't exist. 157 // report with the given name, or an error, it it doesn't exist.
152 func FindFuzzDetailForFuzz(category, name string) (FileFuzzReport, error) { 158 func FindFuzzDetailForFuzz(category, name string) (FuzzReportTree, error) {
153 if cache, found := currentData.caches[category]; found { 159 if cache, found := currentData.caches[category]; found {
154 for _, file := range cache.FullReport { 160 for _, file := range cache.FullReport {
155 if file.filterByFuzzName(name) { 161 if file.filterByFuzzName(name) {
156 » » » » return file, nil 162 » » » » return FuzzReportTree{file}, nil
157 } 163 }
158 } 164 }
159 } 165 }
160 » return FileFuzzReport{}, fmt.Errorf("Fuzz with name %q not found", name) 166 » return nil, fmt.Errorf("Fuzz with name %q not found", name)
161 } 167 }
162 168
163 // filterByFuzzName filters out all functions that do not contain a fuzz with th e given 169 // filterByFuzzName filters out all functions that do not contain a fuzz with th e given
164 // name and returns true. If such a fuzz does not exist, it returns false. 170 // name and returns true. If such a fuzz does not exist, it returns false.
165 func (file *FileFuzzReport) filterByFuzzName(name string) bool { 171 func (file *FileFuzzReport) filterByFuzzName(name string) bool {
166 for _, function := range file.Functions { 172 for _, function := range file.Functions {
167 if function.filterByFuzzName(name) { 173 if function.filterByFuzzName(name) {
168 file.Functions = []FunctionFuzzReport{function} 174 file.Functions = []FunctionFuzzReport{function}
169 return true 175 return true
170 } 176 }
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 } 490 }
485 491
486 // containsName returns the FuzzReport and true if a fuzz with the given name is in the list. 492 // containsName returns the FuzzReport and true if a fuzz with the given name is in the list.
487 func (p SortedFuzzReports) containsName(fuzzName string) (FuzzReport, bool) { 493 func (p SortedFuzzReports) containsName(fuzzName string) (FuzzReport, bool) {
488 i := sort.Search(len(p), func(i int) bool { return p[i].FuzzName >= fuzz Name }) 494 i := sort.Search(len(p), func(i int) bool { return p[i].FuzzName >= fuzz Name })
489 if i < len(p) && p[i].FuzzName == fuzzName { 495 if i < len(p) && p[i].FuzzName == fuzzName {
490 return p[i], true 496 return p[i], true
491 } 497 }
492 return FuzzReport{}, false 498 return FuzzReport{}, false
493 } 499 }
OLDNEW
« no previous file with comments | « no previous file | fuzzer/go/fuzzer-fe/main.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698