| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
#6070 explains the problem of data propagation.
1. Add weekly /cron/update_coverdb_subsystems.
2. Stop updating subsystems from coverage receiver API.
|
| | |
|
| |
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
| |
Some records have only information about the function covered. Let's skip them.
~2% of the records in BigQuery don't have information about line.
It is a side effect of #5850.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Some functions are not the struct members now.
Some functions deleted.
Client mock generated.
|
| |
|
|
|
| |
Gerrit servers return base64 encoded file content.
To get the raw data, &format=TEXT request param is needed.
|
| |
|
|
|
| |
go install golang.org/x/tools/cmd/deadcode@latest
deadcode -test ./...
|
| | |
|
| |
|
|
| |
It fixes the query error.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
| |
1. Make interface testable.
2. Add Spanner interfaces.
3. Generate mocks for proxy interfaces.
4. Test SaveMergeResult.
5. Test MergeCSVWriteJSONL and coveragedb.SaveMergeResult integration.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
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.
|
| |
|
|
| |
It enables us to see the manager unique coverage.
|
| |
|
|
|
| |
We don't want to scale the github repo usage.
Let's eventually switch to the internal service.
|
| |
|
|
|
|
| |
The consistency make the code more predictable.
We want all the values to be non-empty.
If "empty" is an option - use validator.AnyOk(validator.EmptyStr(target), otherCheck(target)).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
| |
Not all variables were renames after RepoBranchCommit refactoring.
Some unused variables found.
|
| |
|
|
|
| |
Every commit checkout takes >3 seconds.
Let's optimize this operation to save on large merges.
|
| | |
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Closes https://github.com/google/syzkaller/issues/5213.
Some commits may be detached upstream.
Specifying the commits we increase the cloning probability.
Tested by:
go run ./tools/syz-covermerger/ -workdir ../workdir-cover-aggregation/
-repo git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
-branch master -commit 3d5f968a177d468cd13568ef901c5be84d83d32b
-namespace upstream -duration 7
-date-to 2024-08-23 -file-path-prefix drivers/clk/actions
|
| |
|
|
|
|
| |
It hopefully fixes https://github.com/google/syzkaller/issues/4815.
The default 1 second timeout is not what we want.
To reproduce the problem, set timeout to 10 ms.
|
| | |
|
| |
|
|
|
| |
Current statement doesn't work for table names like "something-71".
The namespace was backticked here before the code migration to golang.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
It allows to speed up the single file calculations because we don't need git clone.
|