aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/pkg/api/client.go
Commit message (Collapse)AuthorAgeFilesLines
* syz-cluster: support multiple campaigns per fuzz targetAleksandr Nogikh2025-10-071-1/+1
| | | | | | | | During triage, process each fuzzing campaign separately as they may have different base kernel revisions (e.g. if the newest revisions of the kernel no longer build/boot under the specific kernel configuration). Refactor the representation of the fuzzing targets in api.go.
* syz-cluster: collect information about base crashesAleksandr Nogikh2025-08-211-0/+18
| | | | Track base crashes for (commit hash, config, arch) tuples.
* syz-cluster: refactor fuzz config structuresAleksandr Nogikh2025-08-121-2/+2
| | | | | | | | Keep the fuzz-step parameters in a separate structure to minimize the field duplication. It will also facilitate the reuse of the same syzkaller config in several fuzzing configurations.
* syz-cluster: split tree and fuzz config selectionAleksandr Nogikh2025-07-311-1/+2
| | | | | | | | Not always are fuzzing targets well represented by their own kernel trees, so let's select a kernel tree and a fuzzing config separately. Drop explicit priorities and instead just sort the lists of trees and configs.
* syz-cluster: always upload triage logsAleksandr Nogikh2025-07-281-2/+7
| | | | | | | | We used to only upload them on triage failure, but let's improve the inspectability even for successfully finished triage jobs. Slightly refactor the controller API around the triage result submission.
* syz-cluster: provide API for uploading artifacts archiveAleksandr Nogikh2025-04-111-0/+11
| | | | | | | | | | | The archive would be a useful source of debugging information. Provide an HTTP endpoint that accepts a multipart form request with the archived data. Provide an *api.Client method to encapsulate the encoding of the data. Add a test.
* syz-cluster: build latest revisions of base kernelsAleksandr Nogikh2025-02-181-3/+11
| | | | | | Once a new kernel revision becomes available, build it to figure out whether it's buildable. This information will be used in the triage step to figure out the right base kernel revision.
* syz-cluster: report session resultsAleksandr Nogikh2025-02-141-24/+2
| | | | | | | | | | | | Provide an API to set up the reporting of finished sessions for which syz-cluster collected reportable findings. The actual sending of the results is to be done in a separate component that would: 1) Call Next() to get the next report to send. 2) Call Confirm() to confirm that the report has been sent. 3) Call Upstream() if the report has been moderated and needs to be sent to e.g. public mailing lists.
* syz-cluster: report series/sessions via APIAleksandr Nogikh2025-02-141-0/+17
| | | | | | | | | | | | | | | | | | | | | | In the previous version of the code, series-tracker was directly pushing patch series into the DB and the controller auto-created fuzzing sessions. Mediate these via the controller API instead. Instead of creating Session objects on the fly, pre-create them and let processor take them one by one. The approach has multiple benefits: 1) The same API might be used for the patch series sources other than LKML. 2) If the existence of Session objects is not a sign that we have started working on it, it allows for a more precise status display (not created/waiting/running/finished). 3) We could manually push older patch series and manually trigger fuzzing sessions to experimentally measure the bug detection rates. 4) The controller tests could be organized only by relying on the API offered by the component.
* syz-cluster/pkg/api: set deadlines for requestsAleksandr Nogikh2025-02-041-19/+18
| | | | | | Refactor the helper methods to reduce code duplication. Add context argument support for GET methods. Add a one minute deadline on top of the deadline imposed by the context.
* syz-cluster: explicitly set the skip reasonAleksandr Nogikh2025-01-271-0/+5
| | | | | | | | It lets immediately distinguish the series that were actually processed from the series that were skipped early on. By storing a string, we also make it apparent why exactly the series was skipped.
* syz-cluster: add support for findingsAleksandr Nogikh2025-01-221-0/+5
| | | | | Findings are crashes and build/boot/test errors that happened during the patch series processing.
* syz-cluster: initial codeAleksandr Nogikh2025-01-221-0/+119
The basic code of a K8S-based cluster that: * Aggregates new LKML patch series. * Determines the kernel trees to apply them to. * Builds the basic and the patched kernel. * Displays the results on a web dashboard. This is a very rudimentary version with a lot of TODOs that provides a skeleton for further work. The project makes use of Argo workflows and Spanner DB. Bootstrap is used for the web interface. Overall structure: * syz-cluster/dashboard: a web dashboard listing patch series and their test results. * syz-cluster/series-tracker: polls Lore archives and submits the new patch series to the DB. * syz-cluster/controller: schedules workflows and provides API for them. * syz-cluster/kernel-disk: a cron job that keeps a kernel checkout up to date. * syz-cluster/workflow/*: workflow steps. For the DB structure see syz-cluster/pkg/db/migrations/*.