Skip to content

[Test] Run the interop cases over TLS and check handshakes with OpenSSL - #148

Merged
theminjunchoi merged 2 commits into
mainfrom
ci/tls-interop
Nov 7, 2026
Merged

theminjunchoi merged 2 commits into
mainfrom
ci/tls-interop

Conversation

@theminjunchoi

Copy link
Copy Markdown
Collaborator

What this PR does / why we need it:

Fixes #147

interop/run.py now runs every case with and without TLS, so the job goes from 112 runs to 224. The Go and Python clients connect to 127.0.0.1 and verify the certificate as localhost. The summary shows one table for each.

tests/test_tls.py gets handshake tests that connect with Python's ssl. They cover TLS 1.2 and 1.3, a client that doesn't offer h2, and required client certificates on TLS 1.2. Both grpcio and pygrpc-native have to give the same result.

The job now also fails when empty_unary fails on grpcio. Before, a client that couldn't connect failed on both servers, and that counted as no difference.

How it was tested:

All 224 interop runs pass, and so does pytest tests. tests/test_tls.py also passes on Python 3.10 with grpcio 1.64.3, and on 3.13.

To check the tests can fail, I broke src/server/tls.rs three ways:

Change New tests Existing tests Interop
No ALPN 1 fails 12 fail 50 runs fail
No client certificate check 2 fail 9 fail passes
TLS 1.3 only 2 fail pass passes

Pointing the clients at the wrong CA fails the job too.

Special notes for your reviewers:

Most of the interop/run.py diff is indentation from the new loop.

A client that offers no ALPN isn't tested on purpose, because the two servers differ there: see #146.

If applicable:

  • this PR changes user-facing behavior, and the README is updated
  • this PR contains tests

Signed-off-by: MinJun Choi <mj04300017@gmail.com>
Signed-off-by: MinJun Choi <mj04300017@gmail.com>
@theminjunchoi
theminjunchoi merged commit fab74c4 into main Nov 7, 2026
9 checks passed
@theminjunchoi
theminjunchoi deleted the ci/tls-interop branch November 7, 2026 11:10
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.

Run the interop cases over TLS

1 participant