aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/coveragedb
Commit message (Collapse)AuthorAgeFilesLines
* pkg/coveragedb: add subsystem information about the new filesTaras Madan2026-01-051-1/+19
| | | | | Current logic updates information about the already knows files. Additionally we want to see subsystem information about all the created/added files.
* pkg/coveragedb: fix docsTaras Madan2026-01-051-1/+1
|
* all: use any instead of interface{}Dmitry Vyukov2025-12-224-13/+13
| | | | Any is the preferred over interface{} now in Go.
* pkg/coveragedb: update file to subsystem info periodicallyTaras Madan2025-08-072-21/+59
| | | | | | #6070 explains the problem of data propagation. 1. Add weekly /cron/update_coverdb_subsystems. 2. Stop updating subsystems from coverage receiver API.
* pkg/coveragedb: document how to create the BQ table and data transferTaras Madan2025-07-292-0/+165
|
* all/mocks: regenerate with mockery v3Taras Madan2025-07-014-142/+172
|
* dashboard/app: ns/cover?jsonl=1 supports manager and subsystem selectionTaras Madan2025-06-062-11/+23
| | | | | 1. Refactor handleHeatmap. 2. Introduce function options. Build them from http.Request.
* all/mocks: updateTaras Madan2025-03-284-0/+234
|
* all: use mockery config instead of go:generateTaras Madan2025-03-281-5/+0
|
* pkg/coveragedb: fix tests flakinessTaras Madan2025-02-131-2/+2
| | | | Happy path testing rely on iter.Stop() call to be done before we close errCh.
* pkg/coveragedb: fix context propagationTaras Madan2025-02-121-5/+5
|
* go.mod: update mockeryTaras Madan2025-02-074-8/+8
|
* dashboard/app: export coverage jsonTaras Madan2025-02-062-8/+104
|
* pkg/cover: split logic, move some data processing to pkg/coveragedbTaras Madan2025-02-062-0/+479
|
* pkg/coveragedb: use funcname instead of functionTaras Madan2025-01-301-2/+2
| | | | It fixes the misalignment with the code.
* pkg/coveragedb: store information about covered file functions in dbTaras Madan2025-01-292-43/+80
|
* pkg/covermerger: stream information about covered functions to dashboardTaras Madan2025-01-291-0/+13
|
* pkg/coveragedb: add functions tableTaras Madan2025-01-291-0/+16
| | | | | | | Session aggregates information about multiple builds. The source code may have a few function definitions per file. In case of multiple function definitions we want to see sum(func1 + func2). Instead of [line_from, line_to] it is better to store the specific list of lines signaled func coverage.
* pkg/coveragedb: reorder fields, aligh with primary_keyTaras Madan2025-01-281-1/+1
|
* dashboard/app: test coverage /file linkTaras Madan2025-01-271-23/+18
| | | | | | | | 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-275-17/+174
| | | | | | | | | | | | 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.
* pkg/coveragedb: fix schema in order to support multiple managersTaras Madan2024-12-231-0/+64
| | | | | Current schema makes session+filepath a primary key (it is unique). Manager as a part of primary key makes session+filepath+manager a unique combination.
* pkg/coveragedb: fix data unpacking bugTaras Madan2024-12-201-1/+1
| | | | | | | Current tests check the amount of data transfered to the mock. But they didn't check the data correctness. Because of this bug every batch have the same coverage which is nonsense.
* pkg/coveragedb: test SaveMergeResultTaras Madan2024-12-194-26/+315
| | | | | | | | 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-32/+41
| | | | | | | | | | | | | | | | | 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.
* tools/syz-covermerger: more logsTaras Madan2024-12-121-5/+7
| | | | | | | I don't see any visible problems but the records in DB are not created. Let's report the amount of records created at the end of the batch step. +log the names of the managers
* pkg/covermerger: aggregate data per-managerTaras Madan2024-12-121-15/+34
| | | | It enables us to see the manager unique coverage.
* dashboard/app: periodically remove coverage garbage from spannerTaras Madan2024-12-051-0/+74
|
* dashboard/app: read lines coverage from spannerTaras Madan2024-11-071-0/+59
| | | | | | We currently merge bigquery data for every line coverage request. Let's read cached lines coverage data from spanner instead. It allows to get only 1 file version from git and skip the data merge step.
* pkg/coveragedb: store hitcount instead of coveredlinesTaras Madan2024-11-071-4/+4
| | | | | Instrumented lines + hit count gives more information than instrumented + covered lines. Expected storage cost is at the same level.
* tools/syz-covermerger: store lines numbersTaras Madan2024-11-061-14/+21
| | | | | | It stores instrumented and covered lines numbers in the same table where we store file coverage numbers. These line numbers will be used to speed up the file coverage rendering.
* dashboard/app: propagate period type generating seriesTaras Madan2024-10-022-25/+37
|
* pkg/cover: embed correct period type into line coverage urlTaras Madan2024-10-021-1/+2
|
* dashboard/app: add file coverage pageTaras Madan2024-09-162-12/+40
| | | | | | | | | | | | | | It directly uses the coverage signals from BigQuery. There is no need to wait for the coverage_batch cron jobs. Looks good for debugging. Limitations: 1. It is slow. I know how to speed up but want to stabilize the UI first. 2. It is expensive because of the direct BQ requests. Limited to admin only because of it. 3. It merges only the commits reachable on github because of the gitweb throttling. After the UI stabilization I'll save all the required artifacts to spanner and make this page publicly available. To merge all the commits, not the github reachable only, http git caching instance is needed.
* dashboard/app: use day long aggregations not week longTaras Madan2024-09-092-9/+20
| | | | | | | | | Current coverage is a week long data merge for every day. The goal is to show a monthly data by default and make daily data available for &period=day requests. This commit makes the first two steps: 1. Make the day a day long, not a week long aggregation. 2. Enable the month long merges available for &period=month.
* dashboard/app: total coverage is about months or quartersTaras Madan2024-08-302-13/+67
| | | | | Total coverage page defaults to quarters (?period=quarter). Monthly data is available with ?period=month.
* pkg/spanner/coveragedb: move package to pkg/coveragedbTaras Madan2024-08-293-0/+560