aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/pkg/db
Commit message (Collapse)AuthorAgeFilesLines
* syz-cluster: show series versions in the dashboardPimyn Girgis2026-01-081-0/+11
| | | | | | Display a list of other versions of the same series on the series details page. Fetch all series sharing the same title and render them in a new "Series Versions" table, allowing navigation between different versions of a patch series.
* syz-cluster: add tests for series and patch name filteringPimyn Girgis2026-01-081-0/+88
| | | | Adds unit tests for the series and patch name filtering functionality in the database repository.
* syz-cluster: add filtering by series and patch namePimyn Girgis2026-01-083-12/+40
| | | | | Update SeriesFilter in pkg/db to include PatchName and SeriesName fields, implement the SQL logic to filter by these fields case-insensitively, and expose these filters in the dashboard UI.
* all: remove unused nolint directivesDmitry Vyukov2026-01-024-6/+0
|
* syz-cluster/pkg/db: make it possible to use emulator in dashboard testsDmitry Vyukov2025-12-311-24/+35
|
* syz-cluster/pkg/db: fix bunch of bugs in emulator managementDmitry Vyukov2025-12-291-56/+55
| | | | | | | | | | | | | | | | | | | There is a bunch of bugs now: 1. The emulator binary is killed when the first test finished, before subsequent tests start. 2. The child emulator binary (the actual emulator "emulator_main") is leaked. These subprocesses are never killed and live past tests. (that's why we get away with the first problem) 3. Errors are not handled well if emulator setup fails. We leave spannerHost empty and subsequent tests ignore the original error (since only the first test executes setupSpannerOnce). 4. NewTransientDB duplicates a bunch of work that needs to happen only once (in particular os.Setenv("SPANNER_EMULATOR_HOST")). Fix all of that. Support spanner emulator distributed as part of google-cloud-sdk while we are here, so that tests can be run locally.
* syz-cluster/pkg/db: don't drop test databasesDmitry Vyukov2025-12-291-17/+2
| | | | | | | | | | | | | | | | | | | | | | This is not necessary, makes things slower, than is not working anyway: === RUN TestSeriesRepositoryUpdate spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSeriesRepositoryUpdate (0.07s) === RUN TestSeriesInsertSession spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSeriesInsertSession (0.11s) === RUN TestQueryWaitingSessions spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestQueryWaitingSessions (0.12s) === RUN TestSessionTestRepository spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestSessionTestRepository (0.09s) === RUN TestMigrations spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled --- PASS: TestMigrations (0.15s) === RUN TestStatsSQLs spanner.go:168: failed to drop the test DB: rpc error: code = Canceled desc = context canceled
* all: use any instead of interface{}Dmitry Vyukov2025-12-229-27/+27
| | | | Any is the preferred over interface{} now in Go.
* syz-cluster: basic support for finding invalidationAleksandr Nogikh2025-12-016-15/+46
| | | | | | Add some initial #syz invalid support to syz-cluster. For now, mark all findings as invalid and don't display that such series have findings on the web dashboard.
* syz-cluster: display the reports count graphAleksandr Nogikh2025-10-172-0/+16
| | | | | | Apart from just the total number of findings (some of which may end up being non-reported), also display specifically the number of reports that have found their way to the mailing lists.
* syz-cluster: use test context in NewTransientDBAleksandr Nogikh2025-08-211-1/+1
| | | | This is a better choice than context.Background().
* syz-cluster: collect information about base crashesAleksandr Nogikh2025-08-215-0/+105
| | | | Track base crashes for (commit hash, config, arch) tuples.
* syz-cluster: use correct failed session step statusAleksandr Nogikh2025-08-201-1/+1
| | | | It is the session steps with the "error" status that must be counted.
* syz-cluster: display the session processing timeAleksandr Nogikh2025-08-201-0/+7
|
* syz-cluster: improve the status distribution graphAleksandr Nogikh2025-08-191-11/+32
| | | | Display the share of sessions that have failed and skipped tests.
* syz-cluster: skip fuzzing if binaries are the sameAleksandr Nogikh2025-08-192-0/+6
| | | | | | | | If all symbol hashes between the base and the pathed kernel match, there's no reason to spend time fuzzing the series. Add a 'skipped' status to the enum of possible session test results and set it from the fuzz-step.
* syz-cluster: fix stats display for non finished sessionsAleksandr Nogikh2025-08-182-12/+19
| | | | | | | We could not generate the stats page when there were findings for a not yet finished session. Fix it and adjust the tests.
* syz-cluster: display statisticsAleksandr Nogikh2025-08-142-0/+125
| | | | | | | Add a web dashboard page with the main statistics concerning patch series fuzzing. Improve the navigation bar on top of the page.
* syz-cluster: refactor generic Spanner helpersAleksandr Nogikh2025-07-298-115/+65
| | | | | Extract the common "Query - ReadOne - close iterator" pattern into a separate method.
* syz-cluster: allow finding resubmissionAleksandr Nogikh2025-07-294-23/+66
| | | | | | | | | | Permit the following scenario: a finding is first submitted without a C reproducer and then resubmitted again, now with one. Ensure that it's only possible as long as the session is still in progress. Refactor Finding repository and service and adjust the tests.
* syz-cluster: remember LKML series tagsAleksandr Nogikh2025-07-223-8/+13
| | | | | Sometimes the patch series directly hint at the kernel tree they should be applied to. Extract and remember this information.
* syz-cluster: remember and share kernel tree URLsAleksandr Nogikh2025-07-173-2/+5
| | | | | | | | Share not just the tree name (mainline, net, etc), but also the full URL to check out the repository. For that, add one more field to the Build entity and adjust email reporting templates.
* syz-cluster: upload and share build config and logAleksandr Nogikh2025-07-143-0/+11
|
* syz-cluster: make reports more detailedAleksandr Nogikh2025-07-143-3/+6
| | | | | | | Fill in build details per each finding and display that information in the report email. Extend the test that verifies how api.SessionReport is filled.
* syz-cluster: use shorter report IDsAleksandr Nogikh2025-07-082-4/+37
| | | | Since these may be included into email addresses, keep them short.
* syz-cluster: make report reply tracking more flexibleAleksandr Nogikh2025-07-026-35/+0
| | | | | | Replace an UpdateReport() call with a RecordReply(). This will eventually allow us to support the email sender implementations for which we do not immediately know the MessageID of the reported message.
* syz-cluster: save and display reproducers for findingsAleksandr Nogikh2025-06-232-7/+13
|
* syz-cluster: fix db-mgmt job problemsAleksandr Nogikh2025-05-231-1/+6
| | | | | Don't restart the job if it returned a non-zero exit code. Don't treat the ErrNoChange error as a failure.
* syz-cluster/pkg/db: test migrationsAleksandr Nogikh2025-05-143-17/+65
| | | | | Add a test that verifies that we have correct down migrations. Fix the down migrations sql file.
* syz-cluster: add reply tracking functionalityAleksandr Nogikh2025-05-138-6/+214
| | | | | Add API to record replies under the reports that allows to determine the original report only by having the MessageID.
* syz-cluster: support multiple reporter typesAleksandr Nogikh2025-05-094-10/+17
| | | | | Introduce a Reporter column to the SessionReport. For finished reports, store both a MessageID instead of Link.
* syz-cluster: clean up running steps of finished workflowsAleksandr Nogikh2025-04-171-8/+12
| | | | | | | | | If the workflow step crashed or timed out, we used to have Running status for such steps even though the session itself may be long finished. In order to prevent this inconsistency, on finishing each session go through all remaining running steps and update their status to Error.
* syz-cluster: enable atomic updates for SessionTestRepoAleksandr Nogikh2025-04-174-4/+12
| | | | | | | | A raw InsertOrUpdate method is not very reliable in case of concurrent update requests. Add a callback inside which the modified fields would be set. Refactor the existing code that used to call the old method.
* syz-cluster: display the skipped statusAleksandr Nogikh2025-04-152-1/+7
| | | | | If the series was skipped during triage, show that in the status and let users filter by it.
* syz-cluster: share and display triage logsAleksandr Nogikh2025-04-112-8/+10
| | | | For now, only share it for the skipped series.
* syz-cluster: provide API for uploading artifacts archiveAleksandr Nogikh2025-04-112-7/+9
| | | | | | | | | | | 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: filter by series with findingsAleksandr Nogikh2025-04-102-4/+16
| | | | Add a checkbox to only display the series for which there are findings.
* syz-cluster: display the number of findings per seriesAleksandr Nogikh2025-04-102-35/+99
| | | | It will help identify the series to highlight.
* syz-cluster/pkg/db: add a helper classAleksandr Nogikh2025-04-102-14/+70
| | | | | | In the tests, we often spawn different dummy objects. Add a separate helper class to avoid duplicating this code.
* syz-cluster: add paginationAleksandr Nogikh2025-04-083-12/+29
| | | | | Add simple Previous/Next navigation for the list of series. For now, just rely on SQL's LIMIT/OFFSET functionality.
* syz-cluster: filter by the session statusAleksandr Nogikh2025-04-083-2/+68
| | | | Update the Web UI to have a filter form on top of the index page.
* syz-cluster: display and filter by Cc listAleksandr Nogikh2025-03-113-7/+25
| | | | | For each series, display the Cc'd email list and let users filter the patch series list by those addresses.
* syz-cluster: add a DB migration jobAleksandr Nogikh2025-02-261-1/+4
| | | | | The job can be created by a CD to apply the missing DB migrations. Add a Makefile target to prepare the job's description.
* syz-cluster: build latest revisions of base kernelsAleksandr Nogikh2025-02-182-17/+53
| | | | | | 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: use uuid.NewString() to generate UUIDAleksandr Nogikh2025-02-145-6/+6
| | | | It's a bit more conscise than uuid.New().String().
* syz-cluster: report session resultsAleksandr Nogikh2025-02-148-15/+227
| | | | | | | | | | | | 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-149-67/+170
| | | | | | | | | | | | | | | | | | | | | | 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: store session test logsAleksandr Nogikh2025-02-043-0/+15
| | | | Record the logs from the build and fuzzing steps.
* syz-cluster/dashboard: display logs and reports of findingsAleksandr Nogikh2025-02-041-0/+6
|
* syz-cluster: don't use a composite key for FindingsAleksandr Nogikh2025-01-273-2/+16
| | | | | | | | It looks convenient (as it automatically enforces the uniqueness constraint), but once we start referencing findings in URLs and from other DB entities, it becomes increasingly problematic. Let's use UUIDs and a separate uniqueness constraint.