aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/cover
Commit message (Collapse)AuthorAgeFilesLines
* all: remove unused nolint directivesDmitry Vyukov2026-01-021-2/+2
|
* pkg/osutil: make VerboseError nest other errorsAleksandr Nogikh2025-10-011-1/+3
| | | | | After this change it fits more naturally into the Go's error functionality.
* pkg/cover: extract coverage points from binary data for s390x archAlexander Egorenkov2025-06-301-1/+13
| | | | | | This is a faster way to find all coverage points. Signed-off-by: Alexander Egorenkov <eaibmz@gmail.com>
* pkg/cover: fix coverage point pc for core kernelAlexander Egorenkov2025-06-301-1/+4
| | | | | | objdump prints absolute addresses for coverage points of core kernel. Signed-off-by: Alexander Egorenkov <eaibmz@gmail.com>
* pkg/cover: fix handling of compile unit namem0ck1ng2025-06-201-2/+5
| | | | | | | The 'attrName' is often an absolute path for out-of-tree modules. This commit avoids redundant path concatenation when 'attrName' is already absolute, enabling developers to view coverage correctly in the web UI.
* dashboard/app: email regressions in files onlyTaras Madan2025-05-191-2/+2
| | | | The lines about folders don't look actionable.
* pkg/cover/backend: extract PC ranges from Rust DWARFAleksandr Nogikh2025-05-131-25/+107
| | | | | | | | | | Rust compilation units are different from C in that a single compilation unit includes multiple source files, but we still need to tell which PC range belong to which source file. Infer that information from the LineEntry structures. Cc #6000.
* dashboard/app: send coverage report to ns-defined emailTaras Madan2025-04-302-4/+12
| | | | We periodically send coverage reports for the regressions detection.
* pkg/cover: always hide empty dirsTaras Madan2025-04-252-6/+24
| | | | The last filtering step is the empty dirs removal.
* pkg/cover: use space for alignment, not underscoreTaras Madan2025-04-232-2/+8
| | | | | | Pre tag is used to save formatting space. Pre uses monospace font, thus changed all the file-tree to monospace. Pre also adds margin. Forcing margin to 0 manually.
* dashboard/app: aggregate coverage drop numbers bottom-upTaras Madan2025-04-222-1/+12
| | | | Tree view now shows the total drop for every item.
* dashboard/app: enable coverage pages formattingTaras Madan2025-04-113-78/+299
| | | | | | | | | | | | | cover.Format controls the resulting view. It allows to: 1. Remove records with 0 covered blocks. 2. Remove lines with low (user defined) coverage. 3. Order records by the covered lines drop value. The corresponding GET parameters are: 1. Implicitly enabled for onlyUnique records. 2. min-cover-lines-drop=%d 3. order-by-cover-lines-drop=1
* tools/syz-declextract: add interface coverage infoDmitry Vyukov2025-04-102-6/+9
| | | | | | Add coverage percent for kernel interfaces. The current data is generated with Mar coverage report on kernel commit 1e7857b28020ba57ca7fdafae7ac855ba326c697.
* dashboard/app: export info about uncovered blocks as wellDmitry Vyukov2025-04-102-15/+16
| | | | | | | | Currently it's only possible to understand total number of uncovered blocks in a function (implicitly defined by Instrumented field). This does not allow to render coverage data, nor do detailed analysis on line level. Export detailed info about both covered and uncovered blocks. This allows to e.g. calculate coverage percent for kernel interfaces.
* pkg/cover: reorder types for natural reading orderDmitry Vyukov2025-04-101-16/+16
| | | | Humans read top-down rather than zigzag.
* pkg/cover: reduce params to backend.MakeJiao, Joey2025-04-082-4/+7
|
* pkg/covermerger: read gcs files sequentiallyTaras Madan2025-04-041-13/+3
| | | | | | | Quarter long aggregation means thousands of gzip files. Opening all the files in parallel we struggle from: 1. Memory overhead. 2. GCS API errors. It can't read Attrs for 1500+ files.
* all: opt-out some functions to enforce linter checksTaras Madan2025-03-271-0/+1
| | | | New code will be limited to max 7 function params.
* pkg: use kernelDir instead of 3 parametersTaras Madan2025-03-276-39/+33
| | | | It allows to reduce parameters count for some functions.
* pkg/cover: reduce prepareFileMap cyclomatic complexityJiao, Joey2025-03-261-28/+39
|
* all: reduce params to MakeReportGeneratorJoey Jiao2025-03-172-7/+6
|
* pkg/cover: allow paths to be excluded from statsKevin Ding2025-03-112-1/+67
| | | | | | | | | | | | | | | Some sub paths may not be covered due to hardware configuration, or lack of interest. This patch allows them to be excluded from the stats. This can be convenient if the excluded paths are deep in the hierarchy: { "name": "sound", "path": [ "techpack/audio", "-techpack/audio/asoc/aaa/bbb" "-techpack/audio/asoc/aaa/ccc" ] }
* syz-ci: upload syz progs with coverage to gcsTaras Madan2025-03-102-6/+8
|
* pkg/symbolizer: introduce Symbolizer interfaceTaras Madan2025-03-072-4/+3
| | | | To simplify interface Read*Symbols were moved out from symbolizer.Symbolizer.
* pkg/cover: reduce generateReport cycloTaras Madan2025-02-281-29/+17
| | | | This function reached the cyclo complexity limit 24
* pkg/cover: test DoCoverProgramsTaras Madan2025-02-281-18/+40
|
* pkg/manager: export programs + coverage jsonlTaras Madan2025-02-282-4/+94
| | | | | The export is quite big but is generated fast. Every line is a valid json object representing the single program coverage.
* pkg/cover: use frame pointers insteadTaras Madan2025-02-284-18/+18
|
* pkg/cover/backend: fix arch usageTaras Madan2025-02-282-7/+5
| | | | There is no need to init arch every loop iteration.
* all: remove loop variables scopingTaras Madan2025-02-172-3/+0
|
* pkg/cover: typo in var nameTaras Madan2025-02-141-11/+11
| | | | Typo fix introduced the var name shadowing thus it is easier to remove the intermediate var.
* pkg/cover: remove unused fixUpPCs paramTaras Madan2025-02-141-11/+11
|
* pkg/cover: rename progPCs to pcToProgsTaras Madan2025-02-142-17/+17
| | | | Reads from this map return Progs, not PCs.
* pkg/cover: reuse cover.html percent function in /ns/coverage pageTaras Madan2025-02-132-3/+3
|
* all: fix recvcheck errorsTaras Madan2025-02-071-3/+3
|
* pkg/cover: split logic, move some data processing to pkg/coveragedbTaras Madan2025-02-062-483/+15
|
* dashboard/app: change coverage linksTaras Madan2025-01-312-6/+6
| | | | It will simplify the json API links.
* all: replace Walk with WalkDir to reduce os.Lstat callsGofastasf2025-01-301-2/+2
| | | | | | | | filepath.Walk calls os.Lstat for every file or directory to retrieve os.FileInfo. filepath.WalkDir avoids unnecessary system calls since it provides a fs.DirEntry, which includes file type information without requiring a stat call. This improves performance by reducing redundant system calls.
* dashboard/app: looking for the unique coverage, hide record with zero hitcountTaras Madan2025-01-272-15/+45
|
* dashboard/app: test coverage /file linkTaras Madan2025-01-273-15/+15
| | | | | | | | 1. Init coveragedb client once and propagate it through context to enable mocking. 2. Always init coverage handlers. It simplifies testing. 3. Read webGit and coveragedb client from ctx to make it mockable. 4. Use int for file line number and int64 for merged coverage. 5. Add tests.
* dashboard/app: show manager unique coverageTaras Madan2025-01-274-33/+419
| | | | | | | | | | | | 1. Make heatmap testable, move out the spanner client instantiation. 2. Generate spannerdb.ReadOnlyTransaction mocks. 3. Generate spannerdb.RowIterator mocks. 4. Generate spannerdb.Row mocks. 5. Prepare spannerdb fixture. 6. Fixed html control name + value. 7. Added multiple tests. 8. Show line coverage from selected manager. 9. Propagate coverage url params to file coverage url.
* all: use min/max functionsDmitry Vyukov2025-01-172-29/+8
| | | | They are shorter, more readable, and don't require temp vars.
* dashboard/app: coverage page allows to specify analysis duration (columns)Taras Madan2025-01-101-1/+5
|
* dashboard/app: add targeting controls to the coverage pageTaras Madan2025-01-092-12/+62
| | | | | | | | | It allows to control known parameters: 1. Period (months or days). 2. Target subsystem. 3. Target manager. And adds the disabled "Only unique" checkbox.
* dashboard/app: show manager coverageTaras Madan2024-12-231-12/+16
|
* pkg/covermerger: propagate context cancellationTaras Madan2024-12-191-1/+1
| | | | | | | | The problem is the deadlock happening on GCS storage error. GCS client establishes the connection when it has enough data to write. It is approximately 16M. The error happens on io.Writer access in the middle of the merge. This error terminates errgroup goroutine. Other goroutines remain blocked. This commit propagates termination signal to other goroutines.
* pkg/coveragedb: test SaveMergeResultTaras Madan2024-12-191-1/+2
| | | | | | | | 1. Make interface testable. 2. Add Spanner interfaces. 3. Generate mocks for proxy interfaces. 4. Test SaveMergeResult. 5. Test MergeCSVWriteJSONL and coveragedb.SaveMergeResult integration.
* tools/syz-covermerger: upload coverage as jsonlTaras Madan2024-12-191-4/+14
| | | | | | | | | | | | | | | | | Previous implementation store only the summary of processed records. The summary was <1GB and single processing node was able to manipulate the data. Current implementation stores all the details about records read to make post-processing more flexible. This change was needed to get access to the source manager name and will help to analyze other details. This new implementation requires 20GB mem to process single day records. CSV log interning experiment allowed to merge using 10G. Quarter data aggregation will cost ~100 times more. The alternative is to use stream processing. We can process data kernel-file-by-file. It allows to /15000 memory consumption. This approach is implemented here. We're batching coverage signals by file and store per-file results in GCS JSONL file. See https://jsonlines.org/ to learn about jsonl.
* pkg/covermerger: always store detailsTaras Madan2024-12-161-1/+0
| | | | | Storing all the details about coverage data source we're able to better explain the origin. This origin data is currently used to get "manager" name.
* pkg/covermerger: aggregate data per-managerTaras Madan2024-12-121-1/+1
| | | | It enables us to see the manager unique coverage.