aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/app/app_test.go
Commit message (Collapse)AuthorAgeFilesLines
* dashboard: fix manuallyUpstreamedAleksandr Nogikh2026-01-151-0/+6
| | | | | The function returned incorrect result when the reporting stage of interest was completely skipped and never reported.
* dashboard: add a manuallyUpstreamed helperAleksandr Nogikh2026-01-151-0/+40
| | | | | | | | | | This helper function can be used in the reporting filtering rules to skip certain reporting stages depending on whether the previous stage(s) have been manually upstreamed. Add tests that it does have the intended effect. Cc #6554.
* dashboard/app: add support for AI workflowsDmitry Vyukov2026-01-051-0/+29
| | | | | | | | Support for: - polling for AI jobs - handling completion of AI jobs - submitting job trajectory logs - basic visualization for AI jobs
* all: simplify subsystem revision updatesAleksandr Nogikh2025-07-231-3/+3
| | | | | | Don't specify the subsystem revision in the dashboard config and instead let it be nested in the registered subsystems. This reduces the amount of the manual work needed to switch syzbot to a newer subsystem list.
* dashboard/app: send coverage report to ns-defined emailTaras Madan2025-04-301-0/+25
| | | | We periodically send coverage reports for the regressions detection.
* dashboard/app: introduce authorized PublicAccessTaras Madan2024-10-241-1/+10
|
* dashboard/app: unit test accessLevelTaras Madan2024-10-181-1/+1
|
* dashboard: allow multiple allowed authentication domainsFlorent Revest2024-10-101-1/+1
| | | | | | | In some situations, it could be useful to share access to the dashboard to multiple authentication domains. The current GlobalConfig format doesn't really allow it so this deprecates the existing field and add a new slice of allowed authentication domains.
* dashboard: fix TestAccessAleksandr Nogikh2024-07-111-0/+1
| | | | | | | | | | | The test has recently become broken, but we didn't notice it in our presubmit testing. Fix the problem (ReproLog being set to 0). Run TestAccess also in -short mode, but limit it to ensuring that non-public URLs are not accessible publicly. The short test now takes 60 seconds compared to 104 seconds without -short.
* tools/syz-linter: check t.Logf/Errorf/Fatalf messagesDmitry Vyukov2024-04-171-2/+2
| | | | | Fix checking of Logf, it has string in 0-th arg. Add checking of t.Errorf/Fatalf.
* dashboard: retest missing backportsAleksandr Nogikh2024-02-051-1/+2
| | | | | | | | Poll missing backport commits and, once a missing backport is found to be present in the fuzzed trees, don't display it on the web dashboard and send an email with the suggestion to close the bug. Closes #4425.
* dashboard: include repro messages into daily limitsAleksandr Nogikh2024-01-091-2/+2
| | | | | A recent failure (#4412) could have been more constrained if our reproducer emails were included in our daily limits. Let's change that.
* dashboard: prevent infinite reporting of revoked reprosAleksandr Nogikh2024-01-091-0/+1
| | | | | | | | | | Fix a bug in the reporting of bugs with revoked reproducers. Add a test that reproduces the problematic situation. Also, ensure that we don't include the revoked reproducer into the report we send to the next reporting stage. Cc #4412.
* dashboard: only count last stage bugs in monthly reportsAleksandr Nogikh2023-12-121-3/+4
| | | | | | | | Currently we count all publicly visible bugs, which can get confusing now that we keep KCSAN bugs in public moderation. Only consider the reporting stage at which we generate the report. This is tested in TestPeriodicSubsystemReminders().
* dashboard: optionally cache displayed bug groupsAleksandr Nogikh2023-10-231-0/+1
| | | | | | | | | | | | | | | | For upstream Linux namespace, it sometimes takes up to 5-10 seconds to load the main page. That is too much and the reason for this is datastore not being intended for frequent querying of thousands of entities from the database. Let's take a step forward and at least cache the bugs we display on the main page. Once in a minute, query them for all access levels, compress and save to the memcached. Only do it for non-filtered bugs, because otherwise it works fast enough. As the next step we could also take care of terminal pages.
* dashboard: check config's integrity during testsAleksandr Nogikh2023-10-121-0/+1
| | | | | Marshal the config at the installing and during getConfig() to ensure that it's not accidentally changed during code execution.
* dashboard: redo origin testing for newer crashesAleksandr Nogikh2023-08-301-0/+5
| | | | | | | | | | If a higher-priority crash has become available, re-run bug origin tests. Currently, since fix candidate testing runs on tree origin testing results, we remain bound to the manager used back then. And it can be that the manager does not support bisections (e.g. qemu) or is quite problematic (arm64).
* dashboard: display backport listsAleksandr Nogikh2023-08-231-3/+9
| | | | | | | Add a per-namespace page that contains: 1) The list of commits to backport from the trees fuzzed in that namespace. 2) The list of commits to backport into the namespace.
* dashboard: support subsystem redirectsAleksandr Nogikh2023-08-081-0/+3
| | | | | | | | There are cases when subsystem names change over time. As we share /namespace/s/name links in our reminder emails, we have to make sure they remain valid. Introduce an old => new name map into the dashboard configuration.
* dashboard: don't close bugs on cross-tree fix findingsAleksandr Nogikh2023-08-041-2/+3
| | | | | Accept only normal fix bisections as a reason to auto-close a bug if FixBisectionAutoClose is set to true.
* all: use errors.As instead of .(type)Taras Madan2023-07-241-4/+5
|
* dashboard/app/util_test.go: *HTTPError not HTTPErrorTaras Madan2023-07-201-2/+2
|
* dashboard: send per-label notificationsAleksandr Nogikh2023-05-251-0/+41
| | | | | | | | If the label is not user-set and the config specifies a message for it, send a bug notification. If the label is related to bug origin testing, attach the list of tested trees.
* dashboard: determine bug origin trees and missing backportsAleksandr Nogikh2023-04-281-3/+5
| | | | | | | | | | | | | | | Run reproducers on other trees in order to determine 1) Trees where a bug originates (i.e. the reproducer can trigger a bug in none of the further trees, from which commits flow). 2) Trees, to which the bug has already spread (i.e. the reproducer works on none of the trees that receive commits from the current one). 3) The abscence of a backport (= the reproducer used to work on some upstream tree and then stopped). For (1) the bot assigns the LabelIntroduced from KernelRepo. For (2) -- the value of LabelReached. For better understanding see sample configs in tree_test.go.
* dashboard: ensure that repo aliases are all differentAleksandr Nogikh2023-04-281-2/+2
| | | | This will be important for futher changes.
* dashboard: rename KernelRepo.Obsolete to NoPollAleksandr Nogikh2023-04-281-4/+4
| | | | | | In further commits KernelRepo will also be used for repro retesting purposes, so Obsolete is no longer a good name for opting out of polling.
* dashboard: lazily generate repro retesting jobsAleksandr Nogikh2023-04-191-1/+1
| | | | | | | | | | | | | Refactor patch testing functionality. Instead of creating patch testing jobs per cron, create them on demand during pollJob(). This allows to only create jobs for managers that do support jobs and also simplifies further changes that are related to patch testing. As there are too many bugs and poll period is quite small, don't query all the database each time. Consider a random subset of bugs each time, this should be enough given high poll rate.
* pkg/subsystem: optionally disable monthly reportsAleksandr Nogikh2023-04-131-0/+7
| | | | | | For some subsystems (e.g. `kernel`) such reports just don't make much sense, since there are too many incorrectly classified bugs in there. Make it possible to exclude such subsystems from periodic reminders.
* dashboard: collect and display bug-related discussionsAleksandr Nogikh2023-04-061-0/+3
| | | | | | | | | Collect the information about the discussions under bug reports and patches that target the reported bugs. For now only Lore discussions are supported. Display the discussion list on the bug info page.
* dashboard: introduce per-subsystem reminders about open bugsAleksandr Nogikh2023-03-241-0/+58
| | | | | | | | | Once in a month, collect for each subsystem the list of bugs that are still open on the syzbot dashboard and send an email to the corresponding mailing list. Support manual moderation of such reminders, we'll need that at least for the time being.
* dashboard: support obsolete KernelRepo entriesAleksandr Nogikh2023-03-071-0/+6
| | | | | | There are cases when a previously fuzzed tree was obsoleted and can no longer be polled for commits. At the same time, we still want to display short repo aliases in bug reportings and on the dashboard.
* dashboard: support manual bug subsystem assignmentAleksandr Nogikh2023-02-241-14/+19
| | | | Support the #syz set subsystems: A, B, C command.
* dashboard/app: infer bug subsystems from crashesAleksandr Nogikh2023-02-161-2/+19
| | | | | | After each saved crash, invoke the new pkg/subsystem machinery to infer the subsystem list. Use 5 crashes with biggest priority to base the inference on.
* pkg/subsystem: move the exiting code to /legacyAleksandr Nogikh2023-02-101-1/+1
| | | | It will help gradually switch to the new code, once it's fully ready.
* dashboard: fix racy decommission testsAleksandr Nogikh2023-01-271-16/+97
| | | | | | | | These tests require a change in the global configuration during the test execution, so they at least need their own namespaces in order not to interfere with other tests. Fixes #3641
* pkg/subsystem: extract filesystems from guilty pathAleksandr Nogikh2022-12-161-1/+1
| | | | | As we can easily do the subsystem <-> path mapping, let's also use it for determining the actual involved filesystem.
* dashboard: test the new fs bug routing flowAleksandr Nogikh2022-12-161-0/+46
|
* dashboard: speed up the TestPurgeOldCrashes test()`Aleksandr Nogikh2022-12-091-5/+6
| | | | | | | | | | | This test is skipped during short testing, but during the full testing it takes most of the time. At the same time, for testing purposes it's actually irrelevant whether we keep 40 or 20 crashes, so we're just wasting time. Make maxCrashes() mockable and set it to 20 during testing. This makes full testing 1.5x faster and also gives a small speed improvement for -short testing.
* dashboard: support reporting and unreporting of multiple crashesAleksandr Nogikh2022-12-091-0/+38
| | | | | | | | | | Previously we could only report a single crash ID for each reporting stage. That is enough for email reporting, but it unnecessarily restricts the interface available to external reporting methods. Instead of relying just on the Reported field of the Crash entity, introduce the list of other entities that reference the Crash. It lets us track the moment when the crash has been released by everyone else.
* dashboard: add full bug info request APIAleksandr Nogikh2022-12-091-2/+6
| | | | | | | Introduce the /load_full_bug call that, for a given bug ID, returns 1) Bisection results 2) Similar crashes in other namespaces 3) A subset of most noteworthy crashes.
* dashboard: adjust job tests to public namespacesAleksandr Nogikh2022-12-051-4/+7
| | | | | After the previous commit, our existing patch testing jobs began to fail. Fix this by switching them to another test namespace.
* dashboard/app: linkify source references in arm32 reportsDmitry Vyukov2022-11-281-0/+2
| | | | Arm32 reports have ")" after the file:line part.
* dashboard: send user-friendly bug from title matching errorsAleksandr Nogikh2022-11-251-12/+40
| | | | | | | Explicitly tell users about the situations when the incoming request could be related to several different syzbot bugs. Test this behavior.
* dashboard: fix the broken AccessTestAleksandr Nogikh2022-11-221-15/+36
| | | | | | | | The test config changes needed for the recent changes in incoming email handling testing accidentally broke the AccessTest. Fix this by introducing a separate test namespace for public email testing.
* dashboard: temporarily introduce the HandleListEmails optionAleksandr Nogikh2022-11-071-2/+4
| | | | It will help us gradually deploy the feature.
* dashboard: infer bug info from subject and mailing listAleksandr Nogikh2022-11-071-2/+6
| | | | | | | | | | | | | | | | | | Currently we only determine the bug by looking at the hash encoded after '+' in syzbot's email address. Users tend to forget to Cc the right email address while interacting with the bot. Also, it turns out that if the bug was only sent to Google Groups, any reply to the email thread does not include the topic starter email address. Instead of only relying on the right address, try to infer the bug that was meant by looking more closely at the incoming email. Parse the mail subject to extract thee title and the sequence number of the bug. Extract the mailing list through which the bug was routed to syzbot. Fetch and filter matching bugs. If only one matches, handle the command as if it the bug were explicitly specified.
* dashboard: enabe per-namespace configuration of repro retestingAleksandr Nogikh2022-08-261-0/+1
|
* dashboard: revoke no longer working reproducersAleksandr Nogikh2022-08-261-0/+1
| | | | | | | | | | | Reuse the existing patch testing mechanism to periodically re-check existing reproducers. If a repro no longer works, mark it as such and don't consider during bug obsoletion testing. For obsoleted bugs, pass also a string argument specifying the reason for the obsoletion. This will make email messages more user-friendly and also let us later estimate the amount of no longer relevant bugs that we had on the dashboard.
* dashboard/app: support . in source file namesDmitry Vyukov2022-06-201-0/+2
| | | | | | | In some cases Linux build system generates source file names that contain dots, e.g.: arch/x86/kvm/../../../virt/kvm/kvm_main.c Support this in the regexp.
* dashboard/app: linkify source files in sample reportsDmitry Vyukov2022-05-201-0/+23
| | | | Fixes #652