aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/app/tree_test.go
Commit message (Collapse)AuthorAgeFilesLines
* dashboard/app: prevent staticcheck false positiveDmitry Vyukov2024-04-261-0/+1
| | | | | | | | | Otherwise it complains: dashboard/app/tree_test.go:1136:5: SA5011(related information): this check suggests that the pointer can be nil if found == nil { ^
* dashboard: retest missing backportsAleksandr Nogikh2024-02-051-0/+60
| | | | | | | | 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: access config through contextAleksandr Nogikh2023-10-121-2/+2
| | | | | | | | | | | | | | | | | | | | | We used to have a single global `config` variable and access it throughout the whole dashboard application. However, this approach has been more and more complicated test writing -- sometimes we want the config to be only slightly different, so that it's not worth it adding new namespaces, sometimes we have to test how dashboard handles config changes over time. This has already led to a number of hacky contextWithXXX methods that mocked various parts of the global variable. The rest of the code had to sometimes still use `config` directly and sometimes invoke getXXX(c) methods. This is very inconsistent and prone to errors. With more and more situations where we need to patch the config appearing (see #4118), let's refactor the application to always access config via the getConfig(c) method. This allows us to uniformly patch the config and be sure that the non-patched copy is not accessible from anywhere else.
* dashboard: fix a panic during fix candidate job generationAleksandr Nogikh2023-10-021-0/+38
| | | | | | | The existing code fails if it's executed before we have finished the tree origin job for the tree where the fix is supposed to be applied to. Add a test.
* dashboard: redo origin testing for newer crashesAleksandr Nogikh2023-08-301-0/+45
| | | | | | | | | | 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-0/+28
| | | | | | | 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: fix a nil pointer dereferenceAleksandr Nogikh2023-08-071-0/+13
| | | | | | | | If bug's origin has not yet been determined, the dashboard app might crash with "panic: runtime error: invalid memory address or nil pointer dereference" at dashboard/app/tree.go:740. Fix this and add a test.
* dashboard: don't close bugs on cross-tree fix findingsAleksandr Nogikh2023-08-041-0/+4
| | | | | Accept only normal fix bisections as a reason to auto-close a bug if FixBisectionAutoClose is set to true.
* dashboard: report fix candidate commits per emailAleksandr Nogikh2023-08-041-3/+28
| | | | | | | Enable reporting of the results of cross-tree bisections. Adjust email reporting to differentiate between normal fix bisections and fix candidate reporting.
* all: support cross-tree fix bisectionAleksandr Nogikh2023-07-251-2/+114
| | | | | | | | | | | | | If tree origin assessment code has identified that the bug is not reproducible in a tree from which we merge/cherry-pick commits, use fix bisection to identify that commit. This can e.g. be used to find fixing commits that were not backported from Linux kernel mainline into LTS branches. In case of bisection errors, re-do such jobs every 30 days. Remember in the Bug structure whether there's a fix candidate and return the details in the full bug info API query.
* dashboard: improve tree origin code testingAleksandr Nogikh2023-07-251-12/+20
| | | | | | | 1) Ensure we upload a separate Build every time (they must have different ID values). 2) Support specifying kernel commits. 3) Split out the loadBug() functionality. It will be needed later.
* dashboard: amend configs during tree origin testingAleksandr Nogikh2023-05-301-0/+53
| | | | | | | | There are cases when e.g. an LTS kernel does not build if provided with some downstream kernel config. Introduce a special AppendConfig option to KernelRepo that can help in this case.
* dashboard: include tree origin jobs into full bug infoAleksandr Nogikh2023-05-261-0/+17
|
* dashboard: use short hashes in mail_label_notif.txtAleksandr Nogikh2023-05-261-4/+5
| | | | Full commit ids are not necessary in the notification email.
* dashboard: include label message into bug reportsAleksandr Nogikh2023-05-251-3/+43
|
* dashboard: send per-label notificationsAleksandr Nogikh2023-05-251-4/+44
| | | | | | | | 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: display bug origin tree testing resultsAleksandr Nogikh2023-05-121-0/+7
| | | | | Display them as a collapsible block on the bug info page. Use colors to distinguish results.
* dashboard: adjust bug origin tree testing periodsAleksandr Nogikh2023-05-111-14/+14
| | | | | If the tested tree is build/boot/test broken, repeat the job in 2 weeks. If we are waiting for a bug to get fix, repeat every 45 days.
* dashboard: prioritize Merge=true KernelRepo linksAleksandr Nogikh2023-04-281-3/+58
| | | | | | It might be the case that the same repo is mentioned both as Merge=false and via some chain of Merge=true links. Adjust the code to properly handle such scenarios and add a test.
* dashboard: determine bug origin trees and missing backportsAleksandr Nogikh2023-04-281-0/+796
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.