Skip to content

acc: run ssh/connect-serverless-gpu locally#5878

Draft
radakam wants to merge 2 commits into
mainfrom
acc-local-ssh-connect-serverless-gpu
Draft

acc: run ssh/connect-serverless-gpu locally#5878
radakam wants to merge 2 commits into
mainfrom
acc-local-ssh-connect-serverless-gpu

Conversation

@radakam

@radakam radakam commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Runs acceptance/ssh/connect-serverless-gpu locally against the in-process testserver (it was disabled on cloud and local in #4838).

A full SSH handshake can't complete locally (no real compute/sshd, plus a wss:// driver-proxy websocket and a real ssh spawn), so the local run drives the connect flow up to the connection attempt and asserts what the CLI actually controls: the serverless-GPU bootstrap job it submits (GPU_1xA10, serverless env, secret scope, notebook task).

To reach that point fast and deterministically, libs/testserver gains:

  • secrets/listRESOURCE_DOES_NOT_EXIST for a missing scope, so CreateKeysSecretScope creates it
  • a synthesized metadata.json on ssh-server-bootstrap-* submit (as the real tunnel server would publish)
  • driver-proxy metadata/logs endpoints
  • workspace/export returns 404 for a missing object instead of a nil body

The connect attempt's noisy failure output goes to LOG.stderr (excluded from goldens); the cloud path (Connection successful) is preserved for when cloud is re-enabled.

Flip acceptance/ssh/connect-serverless-gpu to Local = true so it runs
against the in-process testserver (it was disabled on both cloud and
local in #4838). A full SSH handshake can't complete locally (no real
compute/sshd + a wss driver-proxy), so the local run drives the connect
flow up to the connection attempt and asserts the serverless GPU
bootstrap job the CLI submits (accelerator, environment, secret scope).

Teach libs/testserver enough of the SSH tunnel backend for the flow to
get there deterministically and fast:
- secrets/list (ListSecretsByScope), returning RESOURCE_DOES_NOT_EXIST
  for a missing scope so CreateKeysSecretScope creates it
- synthesize metadata.json on the ssh-server-bootstrap run submit, as a
  real tunnel server would publish it, so getServerMetadata succeeds
- driver-proxy metadata/logs endpoints
- workspace/export now 404s a missing object instead of returning a nil
  body (which the response normalizer rejects)

The connect attempt itself is expected to fail locally; its noisy
output goes to LOG.stderr (excluded from the golden files).
@radakam radakam temporarily deployed to test-trigger-is July 9, 2026 13:27 — with GitHub Actions Inactive
@radakam radakam temporarily deployed to test-trigger-is July 9, 2026 13:27 — with GitHub Actions Inactive
@radakam radakam temporarily deployed to test-trigger-is July 9, 2026 13:31 — with GitHub Actions Inactive
@radakam radakam temporarily deployed to test-trigger-is July 9, 2026 13:31 — with GitHub Actions Inactive
@eng-dev-ecosystem-bot

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 5097357

Run: 29021672518

Env 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 4 4 230 1077 5:06
💚​ aws windows 4 4 232 1075 6:49
💚​ aws-ucws linux 4 4 314 995 5:34
💚​ aws-ucws windows 4 4 316 993 7:14
💚​ azure linux 4 4 230 1076 4:51
💚​ azure windows 4 4 232 1074 7:16
💚​ azure-ucws linux 4 4 316 992 6:15
💚​ azure-ucws windows 4 4 318 990 7:56
💚​ gcp linux 4 4 229 1078 4:50
💚​ gcp windows 4 4 231 1076 7:04
8 interesting tests: 4 RECOVERED, 4 SKIP
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
💚​ TestFetchRepositoryInfoAPI_FromRepo 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/root 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/subdir 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
Top 10 slowest tests (at least 2 minutes):
duration env testname
6:57 azure-ucws windows TestAccept
6:15 azure windows TestAccept
6:11 gcp windows TestAccept
6:08 aws-ucws windows TestAccept
5:54 aws windows TestAccept
2:55 azure linux TestAccept
2:55 gcp linux TestAccept
2:52 aws linux TestAccept
2:50 aws-ucws linux TestAccept
2:48 azure-ucws linux TestAccept

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.

2 participants