Skip to content

test: run showcase integration tests over TLS - #1331

Draft
torreypayne wants to merge 1 commit into
bump-showcasefrom
pqc-tls-validation
Draft

torreypayne wants to merge 1 commit into
bump-showcasefrom
pqc-tls-validation

Conversation

@torreypayne

@torreypayne torreypayne commented Aug 7, 2026

Copy link
Copy Markdown
Member

Starts the local gapic-showcase server with --tls and routes every gRPC and REST test client through the encrypted endpoint. The suite previously connected over plaintext, so no test here ever exercised a real TLS handshake. No PQC assertions yet — this only establishes the transport #1351 asserts against.

Showcase mints its own certificate under --tls and publishes the signing CA through --ca-cert-output-file, so the harness runs no certificate authority of its own.

Reviewer notes

  • Trust is wired per server, because each --tls server mints its own CA. gRPC gets explicit ChannelCredentials, since the C-core resolves GRPC_DEFAULT_SSL_ROOTS_FILE_PATH once per process and cannot express a per-server root. REST uses SSL_CERT_FILE, which Net::HTTP re-reads per connection. Both are restored on teardown.
  • The readiness wait targets the CA file, not the port. endpoint.go binds before generating TLS material: over 40 boots on four cores the port accepted at ~0.01s, the CA at a median 1.4s, max 3.2s. A port probe reports ready seconds early, the race that flaked Rust (#6542, fixed in #6547). A fixed sleep is no substitute: 5% of boots need over 3s, and the suite starts three servers. It parses the file, since existence is briefly true mid-write.
  • spawn_showcase reaps a child whose startup failed. Otherwise it survives holding :7469, the next run reuses it, and every TLS test fails opaquely.

Sits on #1330 (fork-hosted, so GitHub excludes it from the stack) · Companion: ruby-core-libraries#73 raises the gapic-common grpc floor.
Design: go/client-libraries:ruby-pqc · Parent: go/cloudsdk-pqc-ruby

@torreypayne
torreypayne marked this pull request as ready for review August 26, 2026 11:05
@torreypayne
torreypayne requested a review from a team as a code owner August 26, 2026 11:05
@torreypayne
torreypayne marked this pull request as draft August 26, 2026 11:12
@torreypayne torreypayne changed the title test: validate PQC TLS cryptography in showcase integration tests test: run showcase integration tests over TLS Sep 15, 2026
@torreypayne
torreypayne force-pushed the pqc-tls-validation branch 2 times, most recently from 522f436 to d251f79 Compare September 16, 2026 19:38
@torreypayne
torreypayne added this pull request to stack #1353 September 16, 2026 20:00
Starts the local gapic-showcase server with --tls and routes every gRPC and
REST test client through the encrypted endpoint, which is a prerequisite for
validating post-quantum key exchange.

Showcase generates its own serving certificate under --tls and publishes the
signing CA through --ca-cert-output-file, so the harness does not have to
operate a certificate authority of its own.

Notes on the plumbing:
- Startup waits for the CA file to parse as a certificate rather than probing
  the port. Showcase binds its listener roughly a second before it finishes
  writing the CA, so a port probe reports readiness while the trust root the
  clients need does not exist yet.
- gRPC clients are handed GRPC::Core::ChannelCredentials built from that CA.
  The C core resolves GRPC_DEFAULT_SSL_ROOTS_FILE_PATH once per process, which
  cannot express a different CA per server now that every --tls server mints
  its own.
- REST continues to rely on SSL_CERT_FILE, which Net::HTTP re-reads per
  connection. It is restored and the temporary directory removed on teardown.
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.

1 participant