Skip to content

acceptance: alerts/basic: check only 'does not exist' after destroy - #7492

Merged
denik merged 1 commit into
mainfrom
fix-alerts-basic-not-found-message
Nov 11, 2026
Merged

denik merged 1 commit into
mainfrom
fix-alerts-basic-not-found-message

Conversation

@denik

@denik denik commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Changes

In bundle/resources/alerts/basic, the check that the alert is gone after bundle destroy now asserts only that the alerts-v2 get-alert error contains does not exist. It no longer records the full backend message. It follows the same musterr ... &> LOG.x + contains.py pattern used in acceptance/cmd/api/response-handling.

Why

Since 2026-11-10 ~18:00 UTC the backend returns a different not-found message for a deleted alert, on AWS, Azure and GCP:

-Error: Alert with ID '[ALERT_ID]' does not exist.
+Error: Tree node with id [ALERT_ID] does not exist

The test only needs to show that the alert was deleted. The exact wording is backend-owned and has now changed once, so matching the stable part keeps the test from breaking on the next rewording.

Decisions:

  • Not a CLI regression. The dashboard links the start to acceptance: always distinguish UUIDs in test output #7021 (UUID numbering in goldens), but acceptance: always distinguish UUIDs in test output #7021 does not touch this test or the ALERT_ID replacement. Failures began at the same time on all three clouds across several different CLI commits, which points to a backend rollout.
  • Not treated as a backend bug. The call still fails with a not-found error and exit code 1. Only the message text changed, so I did not file a backend ticket.
  • libs/testserver left unchanged. It still returns the old message, which also contains does not exist, so local and cloud runs both pass.

Tests

  • Local: go test ./acceptance -run 'TestAccept/bundle/resources/alerts/basic' passes.
  • Cloud (AWS): testme-aws -count=1 -run 'TestAccept/bundle/resources/alerts/basic' passes for DMS= and DMS=true against the current backend.

Dashboard:

link failure
error/3324 Error: Tree node with id [ALERT_ID] does not exist (expected Error: Alert with ID '[ALERT_ID]' does not exist.)
TestAccept/bundle/resources/alerts/basic/DMS= same
TestAccept/bundle/resources/alerts/basic/DMS=true same

This pull request and its description were written by Isaac.

…/basic

The backend now returns "Tree node with id ... does not exist" instead of
"Alert with ID '...' does not exist." for a deleted alert.

Co-authored-by: Isaac <no-reply@databricks.com>
@denik denik added the ai-auto PRs made by AI loops & factories, label Nov 11, 2026
@github-actions github-actions Bot added DABs DABs related issues test-only-fix PRs that update failing of flaky tests without changing CLI code. labels Nov 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Commit: 885374510 | Workflow run

Regression test report

Selected 1 changed tests (limit=20, 0 not selected)

2 tests: regression=0 unreleased=0 coverage=2 failing=0
test branch main (89a2fe8) latest (v1.26.0)
TestAccept/bundle/resources/alerts/basic/DMS= ✅ ✅ ✅
TestAccept/bundle/resources/alerts/basic/DMS=true ✅ ✅ ✅

@denik

denik commented Nov 11, 2026

Copy link
Copy Markdown
Contributor Author

libs/testserver left unchanged. It still returns the old message, which also contains does not exist, so local and cloud runs both pass.

fix testserver as well

@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

✅ Integration test report

Commit: 8853745

Run: 43067160435

Env 🔄​flaky ✅​pass 🙈​skip Time
✅​ aws linux-2core-8gb 274 15 10:54
✅​ aws-windows-latest-4core-16gb 276 13 7:50
✅​ azure linux-2core-8gb 273 15 10:01
✅​ azure-windows-latest-4core-16gb 275 13 6:41
🔄​ gcp linux-2core-8gb 1 273 15 12:19
✅​ gcp-windows-latest-4core-16gb 276 13 8:14
Test Name gcp linux-2core-8gb
🔄​ TestSyncFullFileSync 🔄​f
Top 11 slowest tests (at least 2 minutes):
duration env testname
3:58 aws linux-2core-8gb TestAccept
3:56 gcp linux-2core-8gb TestAccept
3:49 gcp-windows-latest-4core-16gb TestAccept
3:43 azure linux-2core-8gb TestAccept
3:37 aws-windows-latest-4core-16gb TestAccept
3:30 azure-windows-latest-4core-16gb TestAccept
2:48 gcp linux-2core-8gb TestFilerWorkspaceFilesExtensionsReadDir
2:13 gcp-windows-latest-4core-16gb TestSyncFullFileSync
2:12 gcp-windows-latest-4core-16gb TestImportDirDoesNotOverwrite
2:07 gcp-windows-latest-4core-16gb TestFilerRecursiveDelete/workspace_files_extensions
2:02 azure linux-2core-8gb TestExportDir

@denik
denik marked this pull request as ready for review November 11, 2026 17:45
@denik
denik requested review from a team as code owners November 11, 2026 17:45
@denik
denik requested a review from shreyas-goenka November 11, 2026 17:45
@denik
denik added this pull request to the merge queue Nov 11, 2026
Merged via the queue into main with commit 56dd253 Nov 11, 2026
28 checks passed
@denik
denik deleted the fix-alerts-basic-not-found-message branch November 11, 2026 17:55
@denik

denik commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor Author

fix testserver as well

Done in #7509. While doing it I found that the testserver's alert behaviour differed from the cloud in more than the message. On AWS a trashed alert is still readable (200, lifecycle_state: DELETED). Tree node with id <id> does not exist only comes back after a purge, which is what bundle destroy does. #7509 makes the testserver match the cloud for trashed, purged and unknown alerts, and adds a local test that records all of these cases.

AI agent (harness_auto, isaac_claude, opus5.5)

@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

❌ Integration test report

Commit: 56dd253

Run: 43072917591

Env ❌​FAIL 🟨​KNOWN 🤯​MISS 💚​RECOVERED ✅​pass 🙈​skip Time
❌​ aws linux-2core-8gb 60 56 11 1411 1275 353:02
❌​ aws-windows-latest-4core-16gb 25 4 76 4 1348 1302 345:56
❌​ azure linux-2core-8gb 64 2 9 9 1434 1283 353:09
❌​ azure-windows-latest-4core-16gb 54 2 9 9 1363 1310 346:57
❌​ gcp linux-2core-8gb 37 4 103 4 1377 1281 353:22
❌​ gcp-windows-latest-4core-16gb 69 2 44 9 1320 1308 346:37
318 interesting tests: 177 MISS, 131 FAIL, 7 KNOWN, 3 RECOVERED
Test Name aws linux-2core-8gb aws-windows-latest-4core-16gb azure linux-2core-8gb azure-windows-latest-4core-16gb gcp linux-2core-8gb gcp-windows-latest-4core-16gb
🤯​ TestAccept 🤯​M 🤯​M 🤯​M 🤯​M 🤯​M 🤯​M
🤯​ TestAccept/bundle/apps/job_permissions 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/apps/job_permissions/DMS= 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/apps/job_permissions/DMS=true 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DMS= 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_doesnot_exist/DMS=true 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DMS= 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/artifacts/artifact_path_with_volume/volume_not_deployed/DMS=true 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cli_defaults/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cluster_policy_cross_target 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/cluster_policy_cross_target/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cluster_policy_cross_target/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cluster_policy_remote_addition 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/cluster_policy_remote_addition/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/cluster_policy_remote_addition/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/config_edits 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/config_edits/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/config_edits/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/dashboard_etag/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/external_cluster_policy_cross_target 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/external_cluster_policy_cross_target/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/external_cluster_policy_cross_target/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/flushed_cache/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_fields 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_fields/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_fields/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_multiple_tasks/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_params_variables/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/job_pipeline_task/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/json_status_missing_state 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/json_status_missing_state/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/json_status_missing_state/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/json_status_selectors 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/json_status_selectors/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/json_status_selectors/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_files 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/multiple_files/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources 🤯​M 🙈​s ✅​p 🙈​s ✅​p 🙈​s
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources/DMS= 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true 🤯​M ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/deploy/spark-jar-task/DMS= 🤯​M ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/deployment/bind/pipelines/recreate ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/deployment/bind/pipelines/recreate/DMS=true ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/declined-deploy ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/declined-deploy/DMS=true ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/no-drift ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/no-drift/DMS=true ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/provenance ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/provenance/DMS=true ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/successful-recreate ✅​p ❌​F ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/dms/successful-recreate/DMS=true ✅​p ❌​F ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/continue_293 ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/invariant/continue_293/DMS=/INPUT_CONFIG=secret_scope.yml.tmpl ✅​p ✅​p ❌​F ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=app.yml.tmpl/READPLAN=1 ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=catalog.yml.tmpl/READPLAN= ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=catalog.yml.tmpl/READPLAN=1 ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN= ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster.yml.tmpl/READPLAN=1 ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1 ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🤯​ TestAccept/bundle/invariant/delete_idempotent/DMS=/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN= ✅​p ✅​p 🤯​M ✅​p ✅​p ✅​p
🟨​ TestAccept/bundle/resources/apps/lifecycle-started 💚​R 🟨​K 💚​R 🟨​K 🟨​K 🟨​K
💚​ TestAccept/bundle/resources/apps/lifecycle-started-omitted 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=true 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🟨​ TestAccept/bundle/resources/apps/lifecycle-started-toggle 💚​R 🟨​K 💚​R 💚​R 🟨​K 💚​R
💚​ TestAccept/bundle/resources/apps/lifecycle-started-toggle/DMS= 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🟨​ TestAccept/bundle/resources/apps/lifecycle-started-toggle/DMS=true 💚​R 🟨​K 💚​R 💚​R 🟨​K 💚​R
🟨​ TestAccept/bundle/resources/apps/lifecycle-started/DMS= 💚​R 🟨​K 💚​R 🟨​K 💚​R 🟨​K
🟨​ TestAccept/bundle/resources/apps/lifecycle-started/DMS=true 💚​R 💚​R 💚​R 💚​R 🟨​K 💚​R
❌​ TestAccept/bundle/resources/cluster_policies/basic ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/cluster_policies/basic/DMS= ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/cluster_policies/permissions/levels ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/cluster_policies/permissions/levels/DMS= ✅​p ❌​F ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/cluster_policies/policy_family_definition ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/cluster_policies/policy_family_definition/DMS= ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/clusters/lifecycle-started ✅​p ✅​p ✅​p ❌​F ✅​p ❌​F
❌​ TestAccept/bundle/resources/clusters/lifecycle-started-toggle ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/lifecycle-started/DMS= ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/resize-terminated-fallback ❌​F ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/clusters/resize-terminated-fallback/DMS= ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/clusters/resize-terminated-fallback/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/dashboards/change-name ❌​F ❌​F ✅​p ❌​F ❌​F ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-name/DMS= ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-name/DMS=true ❌​F ❌​F ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-parent-path ❌​F ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-parent-path/DMS= ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-parent-path/DMS=true ❌​F ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-serialized-dashboard ✅​p ✅​p ✅​p ❌​F ✅​p ❌​F
❌​ TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DMS=/READPLAN=1 ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/change-serialized-dashboard/DMS=true/READPLAN= ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/dashboards/dataset-catalog-schema ❌​F ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/dashboards/dataset-catalog-schema/DMS= ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/dataset-catalog-schema/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/dashboards/detect-change ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/detect-change/DMS=true ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/serialized-inline ❌​F ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/dashboards/serialized-inline/DMS=/READPLAN= ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/dashboards/serialized-inline/DMS=/READPLAN=1 ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/features/lifecycle ❌​F ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/features/lifecycle/DMS= ❌​F ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/genie_spaces/change-serialized-space ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/genie_spaces/change-serialized-space/DMS=true ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/registered_models ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/grants/registered_models/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/grants/schemas/change_privilege ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/change_privilege/DMS=true ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/duplicate_principals ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/duplicate_principals/DMS=true ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/duplicate_privileges ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/duplicate_privileges/DMS= ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/remove_principal_manage ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/schemas/remove_principal_manage/DMS=true ✅​p ✅​p ✅​p ✅​p ❌​F ✅​p
❌​ TestAccept/bundle/resources/grants/volume_change_name ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/grants/volume_change_name/DMS= ❌​F ✅​p ✅​p ✅​p ✅​p ✅​p
❌​ TestAccept/bundle/resources/materialization_sets/batch ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/materialization_sets/batch/DMS= ✅​p ✅​p ✅​p ❌​F ✅​p ✅​p
❌​ TestAccept/bundle/resources/model_serving_endpoints/basic ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/model_serving_endpoints/basic/DMS= ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/permissions/jobs/delete_one ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/permissions/jobs/delete_one/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/permissions/pipelines/recreate ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/permissions/pipelines/recreate/DMS=true ✅​p ✅​p ✅​p ✅​p ✅​p ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_protected ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_protected/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_protected/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_ttl ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_ttl/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_branches/update_ttl/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_databases/update ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_databases/update/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_databases/update/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/remove_suspend_timeout ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/remove_suspend_timeout/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/remove_suspend_timeout/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_autoscaling ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_autoscaling/DMS= ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
❌​ TestAccept/bundle/resources/postgres_endpoints/update_autoscaling/DMS=true ❌​F ❌​F ❌​F ❌​F ❌​F ❌​F
Top 50 slowest tests (at least 2 minutes):
duration env testname
16:46 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
15:58 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true
14:22 aws-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
13:40 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
13:05 azure-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
12:39 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
12:05 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=
11:53 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
11:13 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
10:49 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=true
10:39 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
10:16 aws linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
10:14 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
10:09 azure-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
9:55 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
9:51 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=true
9:49 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=
9:39 azure-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=true
9:31 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/data_security_mode/DMS=true
9:13 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=1
9:06 azure linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
8:58 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS=
8:57 aws linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started/DMS=
8:46 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS=true
8:44 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
8:44 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/update-after-create/DMS=true
8:40 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_libraries.yml.tmpl/READPLAN=
8:32 azure linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
8:26 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=
8:15 aws linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
8:09 azure-windows-latest-4core-16gb TestAccept/bundle/resources/apps/lifecycle-started-omitted/DMS=
8:09 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
8:07 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=
7:57 azure linux-2core-8gb TestAccept/bundle/templates/default-python/integration_classic/DMS=/UV_PYTHON=3.12
7:57 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=true
7:46 gcp linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=
7:44 gcp linux-2core-8gb TestAccept/bundle/resources/apps/lifecycle-started-toggle/DMS=
7:42 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/local_ssd_count/DMS=true
7:41 gcp-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
7:34 azure-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/lifecycle-started-toggle/DMS=
7:27 aws linux-2core-8gb TestAccept/bundle/resources/clusters/deploy/simple/DMS=
7:24 azure linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=true
7:22 azure linux-2core-8gb TestAccept/bundle/config-remote-sync/multiple_resources/DMS=
7:16 azure linux-2core-8gb TestAccept/bundle/resources/secret_scopes/permissions/DMS=true
7:16 aws-windows-latest-4core-16gb TestAccept/bundle/resources/clusters/deploy/simple/DMS=true
7:10 aws-windows-latest-4core-16gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=
7:10 aws linux-2core-8gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
7:01 azure linux-2core-8gb TestAccept/bundle/templates/default-python/combinations/classic/DLT=yes/DMS=/NBOOK=yes/PY=no/READPLAN=1
6:56 azure linux-2core-8gb TestAccept/bundle/resources/clusters/lifecycle-started/DMS=
6:49 aws-windows-latest-4core-16gb TestAccept/bundle/invariant/no_drift/DMS=true/INPUT_CONFIG=cluster_apply_policy_default_values.yml.tmpl/READPLAN=1
(164 table rows omitted to keep the report under 60000 bytes)

tedjt pushed a commit to tedjt/cli that referenced this pull request Nov 12, 2026
…rts (databricks#7509)

## Changes

`libs/testserver` now answers alert get/update/trash the way the cloud
does for trashed, purged and unknown alerts:

| state | get | update | trash |
|---|---|---|---|
| trashed (not purged) | 200, `lifecycle_state: DELETED` | 400
`INVALID_PARAMETER_VALUE` `Cannot move node '<file>' (ID: <id>) because
it is in trash folder` | 400 `BAD_REQUEST` `Alert <id> is already
trashed` (purge still succeeds) |
| purged | 404 `NOT_FOUND` `Tree node with id <id> does not exist` |
same | same |
| never existed | 404 `NOT_FOUND` `Alert with id <id> not found or has
no folder node internal name` | same as get | 404 `NOT_FOUND` `Alert
with id <id> not found` |

Before this, get returned 404 with the old `Alert with ID '<id>' does
not exist.` message for both trashed and missing alerts, and
update/trash returned a bare 404 with no body. Update and trash of a
trashed alert succeeded.

New local test `acceptance/cmd/workspace/alerts-v2-not-found` records
this matrix.

## Why

Follow-up to databricks#7492, where the review asked to fix the testserver as
well. That PR left the old message in place.

Decisions:
- The test is local-only. The expected output was recorded on AWS with
the same script, with two known differences: on trash-again the cloud's
message has a different UUID than the alert id, and on update the
cloud's file name has a timestamp suffix (the file is renamed when
trashed). Neither is worth modelling.
- Purged ids are kept in a set so the testserver can tell "purged" from
"never existed", which the cloud reports differently.
- Body validation on create (e.g. the cloud requires a threshold for
`EQUAL`) is out of scope.

## Tests

- `go test ./acceptance -run
TestAccept/cmd/workspace/alerts-v2-not-found` passes locally.
- Every local acceptance test that mentions alerts passes. The same
`bundle/migrate/*`, `bundle/state/*` and `bundle/user_agent/simple`
failures show up on a clean main in this environment, so they are
unrelated.
- Cloud (AWS): ran the same script with `Cloud = true` via `testme-aws`
to capture the responses above.

## Dashboard:

Follow-up to
[error/3324](http://go/cli/dashboard/error/3324?main=1&pr=1&end=2026-11-11T17:00:00Z&last=2d).
It does not fix a failing test, because databricks#7492 already made the cloud
test pass:

| link | failure |
|---|---|
|
[error/3324](http://go/cli/dashboard/error/3324?main=1&pr=1&end=2026-11-11T17:00:00Z&last=2d)
| `Error: Tree node with id [ALERT_ID] does not exist` |

This pull request and its description were written by Isaac.

Co-authored-by: Isaac <no-reply@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-auto PRs made by AI loops & factories, DABs DABs related issues test-only-fix PRs that update failing of flaky tests without changing CLI code.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants