Skip to content

Conversation

ilia-db
Copy link
Contributor

@ilia-db ilia-db commented Sep 8, 2025

Changes

Based on #3544

Move pure client and server logic to the proxy package and test it.

Now proxyConnection is completely private, and proxy package exposes only 2 public functions:

  • RunClientProxy function
  • NewProxyServer constructor

Meanwhile the internal logic doesn't depend on any ssh stuff and can be unit tested.

internal/client and internal/server packages are now much smaller and contain mainly ssh/jobs/cluster glue.

Also adding bench.sh until we have proper e2e tests.

Why

Tests

Tests

Unit and manual tests

@eng-dev-ecosystem-bot
Copy link
Collaborator

eng-dev-ecosystem-bot commented Sep 8, 2025

Run: 17764738168

Env ✅​pass ❌​FAIL 🔄​flaky 🙈​skip
🔄​ aws linux 307 4 527
🔄​ aws windows 306 6 526
🔄​ aws-ucws linux 420 3 425
✅​ aws-ucws windows 424 424
🔄​ azure linux 300 11 526
🔄​ azure windows 304 8 525
✅​ azure-ucws linux 423 424
✅​ azure-ucws windows 424 423
❌​ gcp linux 26 297 502
❌​ gcp windows 26 298 501
298 failing tests:
Test Name aws linux aws windows aws-ucws linux azure linux azure windows gcp linux gcp windows
TestAccept ✅​pass ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/detect-change ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/generate_inplace ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/nested-folders ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/simple ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/simple_outside_bundle_root ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/simple_syncroot ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/empty-bundle ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/empty-bundle/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/empty-bundle/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/files/no-snapshot-sync ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/check-metadata ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/check-metadata/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/check-metadata/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/double-underscore-keys ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/double-underscore-keys/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/double-underscore-keys/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/fail-on-active-runs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/fail-on-active-runs/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/fail-on-active-runs/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/shared-root-path ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/shared-root-path/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/shared-root-path/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/mlops-stacks ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/allow-duplicate-names ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/allow-duplicate-names/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/allow-duplicate-names/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/auto-approve ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/auto-approve/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/auto-approve/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/lakeflow-pipeline ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/lakeflow-pipeline/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/lakeflow-pipeline/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/secret-scope ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/cluster ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/dashboard ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/dashboard/recreation ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/experiment ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/job/generate-and-bind ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/job/job-abort-bind ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/job/job-spark-python-task ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/model-serving-endpoint ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/destroy/jobs-and-pipeline ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/local_state_staleness ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/local_state_staleness/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/local_state_staleness/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/clusters/deploy/simple ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/pipelines/update ✅​pass 🔄​flaky ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/pipelines/update/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass 🔄​flaky ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/pipelines/update/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=yes ✅​pass 🔄​flaky ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=yes 🔄​flaky ✅​pass ✅​pass 🔄​flaky 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=yes ✅​pass ✅​pass ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=yes ✅​pass 🔄​flaky ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=yes 🔄​flaky ✅​pass ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=no 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=yes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic ✅​pass 🔄​flaky ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.10 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.11 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.12 ✅​pass 🔄​flaky ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.13 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.9 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.10 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.11 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.12 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.13 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.9 ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/basic 🔄​flaky ✅​pass 🔄​flaky 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/basic/DATABRICKS_CLI_DEPLOYMENT=direct-exp 🔄​flaky ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/basic/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass 🔄​flaky 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/error ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/error/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/error/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/pipeline-crud ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/pipeline-crud/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/pipeline-crud/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/workspace-file-io ✅​pass ✅​pass ✅​pass 🔄​flaky 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/workspace-file-io/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/workspace-file-io/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAlertsCreateErrWhenNoArguments ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestApiGet ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAuthDescribeSuccess ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestBundleInitErrorOnUnknownFields ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestBundleInitHelpers ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestClustersGet ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestClustersList ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestDashboardAssumptions_WorkspaceImport ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExport ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportDirDoesNotOverwrite ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportWithFileFlag ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFetchRepositoryInfoAPI_FromNonRepo ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFetchRepositoryInfoAPI_FromRepo ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir/workspace_files ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir/workspace_files_extensions ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite/workspace_files ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite/workspace_files_extensions ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete/workspace_files ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete/workspace_files_extensions ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsDelete ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsRead ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsReadDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsStat ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceNotebook ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCat ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCat/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatDoesNotSupportOutputModeJson ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatForDbfsInvalidScheme ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnADir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnADir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnNonExistentFile ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnNonExistentFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCompletion ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpDir/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpErrorsOnInvalidScheme ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpErrorsWhenSourceIsDirWithoutRecursiveFlag ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpErrorsWhenSourceIsDirWithoutRecursiveFlag/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToDir/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirForWindowsPaths 🙈​skip ✅​pass 🙈​skip 🙈​skip ✅​pass 🙈​skip ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToFile/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_uc-volumes 🙈​skip 🙈​skip ✅​pass 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLs/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsForNonexistingDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsForNonexistingDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnEmptyDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnEmptyDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnFile ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsWithAbsolutePaths ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsWithAbsolutePaths/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsWithoutScheme ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirCreatesIntermediateDirectories ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirCreatesIntermediateDirectories/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenDirectoryAlreadyExists ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenDirectoryAlreadyExists/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenFileExistsAtPath ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenFileExistsAtPath/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmDirRecursively ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmDirRecursively/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmEmptyDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmEmptyDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmFile ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmForNonExistentFile ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmForNonExistentFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmNonEmptyDirectory ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmNonEmptyDirectory/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestGenerateFromExistingJobAndDeploy ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestGenerateFromExistingPipelineAndDeploy ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportDir ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportDirDoesNotOverwrite ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileFormatAuto ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileFormatSource ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileUsingContentFormatAuto ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileUsingContentFormatSource ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestLock ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestLockUnlockWithAllowsLockFileNotExist ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestLockUnlockWithoutAllowsLockFileNotExist ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSecretsPutSecretBytesValue ✅​pass ✅​pass 🙈​skip ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSecretsPutSecretStringValue ✅​pass ✅​pass 🙈​skip ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSparkJarTaskDeployAndRunOnWorkspace ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_14.3_LTS ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncEnsureRemotePathIsUsableIfRepoDoesntExist ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncEnsureRemotePathIsUsableIfRepoExists ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncEnsureRemotePathIsUsableInWorkspace ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncFullFileSync ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalFileOverwritesFolder ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalFileSync ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalSyncFileToPythonNotebook ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalSyncPythonNotebookDelete ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalSyncPythonNotebookToFile ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncNestedFolderDoesntFailOnNonEmptyDirectory ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncNestedFolderSync ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncNestedSpacePlusAndHashAreEscapedSync ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestTagKeyGCP 🙈​skip 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestTagKeyGCP/empty ❌​FAIL ❌​FAIL
TestTagKeyGCP/invalid ❌​FAIL ❌​FAIL
TestTagKeyGCP/unicode ❌​FAIL ❌​FAIL
TestTagKeyGCP/valid ❌​FAIL ❌​FAIL
TestTagValueGCP 🙈​skip 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestTagValueGCP/invalid ❌​FAIL ❌​FAIL
TestTagValueGCP/unicode ❌​FAIL ❌​FAIL
TestTagValueGCP/valid ❌​FAIL ❌​FAIL
TestTelemetryEndpoint ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkpaceExportPrintsContents ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsDirectoriesAreNotNotebooks ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsNotebooksAreNotDeletedAsFiles ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsNotebooksAreNotReadAsFiles ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsNotebooksAreNotStatAsFiles ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_python ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_r ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_scala ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_sql ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_python ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_r ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_scala ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_sql ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceList ✅​pass ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL

@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 3c980ed to ac1e3ed Compare September 8, 2025 12:52
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from ac1e3ed to 984311b Compare September 8, 2025 12:54
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 984311b to e1d5c03 Compare September 8, 2025 13:06
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from e1d5c03 to c8a8bfa Compare September 8, 2025 13:07
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from c8a8bfa to 6256801 Compare September 8, 2025 13:47
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 6256801 to d8985aa Compare September 8, 2025 13:58
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from d8985aa to 8769376 Compare September 9, 2025 07:40
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 8769376 to 8353484 Compare September 9, 2025 08:01
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 8353484 to 6cb8f6a Compare September 9, 2025 08:03
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 6cb8f6a to 42a8a3e Compare September 9, 2025 09:40
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 09dfb3e to 2f6dc5a Compare September 10, 2025 08:22
Base automatically changed from ssh-tunnel-exp to main September 10, 2025 10:38
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 2f6dc5a to 5c89e05 Compare September 10, 2025 10:42
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 5c89e05 to 772db5e Compare September 10, 2025 14:49
@ilia-db ilia-db force-pushed the ssh-tunnel-better-proxy branch from 772db5e to f351e0e Compare September 10, 2025 15:01
}
}

func TestHandover(t *testing.T) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a potentially flaky test, and testing/synctest can't be used, as we rely on external IO (real http server, websockets, and cat command).

I've improved the logic itself to rely less on timeouts - only use them to reduce the amount of messages the client is sending, to avoid test buffer overflows. The asserts are done by waiting on the client.onWrite channel, so there shouldn't be timing issues.

Tested it with a few go test -count=1000 -parallel=500 + with the -race flag.

f"--cluster={ctx.clusterId}",
f"--secrets-scope-name={secrets_scope}",
f"--client-key-name={public_key_secret_name}",
f"--keys-secret-scope-name={secrets_scope}",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This rename seems to be a big part of this PR but it's not mentioned in title and description. Is it required here, what prompted it? Perhaps it deserves its own PR?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's based on the @pietern comments in the previous PR: #3544 (comment)

The main goal is to be more explicit with the argument names to avoid any possible confusion (even though the server command is hidden and not supposed to be used by anyone except us)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current ones are not yet optimal, IMO.

E.g. mix of authorized key name and public key secret name. Is it an authorized key or public key? If we use a single secret scope for everything (do we have more than keys?), we can call it --secret-scope-name. If we need a public key for the client, use --client-public-key-secret-name. It's OK to be verbose because the args are only used internally.

Copy link
Contributor

@pietern pietern left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please take a look at the remaining comments.

No need to block on the flag names.

f"--cluster={ctx.clusterId}",
f"--secrets-scope-name={secrets_scope}",
f"--client-key-name={public_key_secret_name}",
f"--keys-secret-scope-name={secrets_scope}",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current ones are not yet optimal, IMO.

E.g. mix of authorized key name and public key secret name. Is it an authorized key or public key? If we use a single secret scope for everything (do we have more than keys?), we can call it --secret-scope-name. If we need a public key for the client, use --client-public-key-secret-name. It's OK to be verbose because the args are only used internally.

@ilia-db ilia-db merged commit f9c6279 into main Sep 16, 2025
12 of 13 checks passed
@ilia-db ilia-db deleted the ssh-tunnel-better-proxy branch September 16, 2025 12:42
ilia-db added a commit that referenced this pull request Sep 16, 2025
## Changes
- Add a cluster selector UI to the `ssh setup` command. We don't filter
or check the clusters during that stage, as it's done later by the
`validateClusterAccess`. Cluster option is no longer required for the
`setup` command. A few customers asked for this already.
- Add an `--auto-start-cluster` flag to both `ssh setup` and `ssh
connect` commands, which defaults to true. Useful for PyCharm users,
where the IDE checks every host in the config to see the if the
connection can be established, starting all the clusters.
- Change a few `client.go` functions to accept ClientOptions instead of
a long list of separate arguments


Based on #3569

## Tests
No unit tests, integration tests will be in the follow ups.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants