microsoft/openvmm
Publicmirrored fromhttps://github.com/microsoft/openvmmAvailable
.config/nextest.toml
88lines · modecode
| 1 | # Copyright (c) Microsoft Corporation. |
| 2 | # Licensed under the MIT License. |
| 3 | |
| 4 | # IMPORTANT: nextest processes this file in linear order. The |
| 5 | # first override to set any setting wins. Order any overrides |
| 6 | # from most-to-least specific. |
| 7 | # |
| 8 | # Take the following config items by example: |
| 9 | # |
| 10 | # [[profile.default.overrides]] # <-- override 1 |
| 11 | # filter = 'package(~vmm_tests)' |
| 12 | # threads-required = 3 |
| 13 | # |
| 14 | # [[profile.default.overrides]] # <-- override 2 |
| 15 | # filter = 'package(~vmm_tests) and test(very_heavy)' |
| 16 | # threads-required = 35 |
| 17 | # |
| 18 | # If a test is named "my_very_heavy_test", nextest will |
| 19 | # apply ***threads-required = 3***, since override 1 |
| 20 | # is first in the file and matches. |
| 21 | # |
| 22 | # See: |
| 23 | # https://nexte.st/docs/configuration/per-test-overrides/#override-precedence |
| 24 | # https://nexte.st/docs/configuration/?h=hierar#hierarchical-configuration |
| 25 | |
| 26 | [[profile.default.overrides]] |
| 27 | filter = 'package(~vmm_tests) and test(very_heavy)' |
| 28 | # Extra heavy tests have even more VPs. Internal runners fail when 32vp tests |
| 29 | # are not run one at a time. |
| 30 | threads-required = 32 |
| 31 | |
| 32 | [[profile.default.overrides]] |
| 33 | filter = 'package(~vmm_tests) and test(heavy) and not (test(very_heavy))' |
| 34 | # Require more threads for heavy tests with more VPs to avoid unreliability |
| 35 | # due to contention on the physical cores. |
| 36 | threads-required = 4 |
| 37 | |
| 38 | [[profile.default.overrides]] |
| 39 | # use fuzzy-matching for the package() to allow out-of-tree tests to use the |
| 40 | # same profile |
| 41 | filter = 'package(~vmm_tests)' |
| 42 | # Limit the amount of simultaneous tests by requiring two threads per test. |
| 43 | # This is mostly to avoid running out of memory. Our test runners have 32 cores |
| 44 | # and 128GB of memory, and most tests use 4GB, so total memory usage should be |
| 45 | # about 4GB * (32 cores / (2 threads/test)) = 64GB < 128GB. |
| 46 | # For local dev runs, you may need to manually restrict the number of |
| 47 | # threads running via the -j cli arg. |
| 48 | threads-required = 2 |
| 49 | |
| 50 | # Profile for AI agent runs. Minimizes output noise: only prints slow, failing, |
| 51 | # and flaky tests. Agents should use: cargo nextest run -p <pkg> --profile agent |
| 52 | [profile.agent] |
| 53 | # Only show slow and failing tests during the run (hide PASS lines). |
| 54 | status-level = "slow" |
| 55 | # Show failures and flaky tests in the final summary. |
| 56 | final-status-level = "flaky" |
| 57 | # Mark tests slow after 5s, kill after 30s (6 periods). |
| 58 | slow-timeout = { period = "5s", terminate-after = 6 } |
| 59 | # Print failure output immediately so humans watching can see it. |
| 60 | failure-output = "immediate" |
| 61 | # Don't fail fast--let the agent see all failures at once. |
| 62 | fail-fast = false |
| 63 | |
| 64 | # Profile for CI runs. |
| 65 | [profile.ci] |
| 66 | # Set the default timeout to 1 second, with tests terminated after 10 seconds |
| 67 | slow-timeout = { period = "1s", terminate-after = 10 } |
| 68 | # Print out output for failing tests at the end of the run. |
| 69 | failure-output = "final" |
| 70 | # Do not cancel the test run on the first failure. |
| 71 | fail-fast = false |
| 72 | |
| 73 | [profile.ci.junit] |
| 74 | path = "junit.xml" |
| 75 | store-success-output = "true" |
| 76 | |
| 77 | [[profile.ci.overrides]] |
| 78 | # allow loom based tests more time, as they take a while |
| 79 | filter = 'test(loom)' |
| 80 | slow-timeout = { period = "30s", terminate-after = 2 } |
| 81 | |
| 82 | [[profile.ci.overrides]] |
| 83 | # use fuzzy-matching for the package() to allow out-of-tree tests to use the |
| 84 | # same profile |
| 85 | filter = 'package(~vmm_tests)' |
| 86 | # VMM tests contain their own watchdog timer, but keep an extra long timer |
| 87 | # here as a backup. |
| 88 | slow-timeout = { period = "10m", terminate-after = 2 } |
| 89 | |