Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run interop tests for v1.69.0 (all tests pass) #267

Merged
merged 1 commit into from
Jan 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Legend:
* 🚫 not supported by `grapesy`

We last tested against version
[v1.62.0](https://github.com/grpc/grpc/releases/tag/v1.62.0) (released Feb 20,
[v1.69.0](https://github.com/grpc/grpc/releases/tag/v1.69.0) (released Dec 24,
2024).

### `grapesy` server versus reference client
Expand Down Expand Up @@ -81,18 +81,16 @@ are not supported by _any_ of the reference implementations that we tested, we
did not consider them any further. The full list is:

* [`cacheable_unary`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#cacheable_unary)
* [`channel_soak`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#channel_soak)
* [`compute_engine_channel_credentials`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptionsmd#compute_engine_channel_credentials)
* [`compute_engine_creds`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#compute_engine_creds)
* [`concurrent_large_unary`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#concurrent_large_unary)
* [`google_default_credentials`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#google_default_credentials)
* [`jwt_token_creds`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#jwt_token_creds)
* [`long_lived_channel`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#long_lived_channel)
* [`oauth2_auth_token`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#oauth2_auth_token)
* [`per_rpc_creds`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#per_rpc_creds)
* [`google_default_credentials`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#google_default_credentials)
* [`compute_engine_channel_credentials`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptionsmd#compute_engine_channel_credentials),
* [`rpc_soak`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#rpc_soak)
* [`channel_soak`](https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md#channel_soak)

[grpc:website]: https://grpc.io/
[grpc:interop]: https://github.com/grpc/grpc/tree/master/tools/interop_matrix
[grapesy:issue:72-orca]: https://github.com/well-typed/grapesy/issues/72

## Memory profiles

Expand Down Expand Up @@ -185,4 +183,10 @@ profile](/assets/profiles/many-messages-server.png)
<td>1151.017</td>
<td>3563.867</td>
</tr>
</table>
</table>


[grpc:website]: https://grpc.io/
[grpc:interop]: https://github.com/grpc/grpc/tree/master/tools/interop_matrix
[grapesy:issue:72-orca]: https://github.com/well-typed/grapesy/issues/72

41 changes: 19 additions & 22 deletions dev/interop.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,29 +35,29 @@ All tests should pass.
## Running development `grapesy` against reference implementation

> [!NOTE]
> At the time of writing version
> [v1.62.0](https://github.com/grpc/grpc/releases/tag/v1.62.0) is the most
> recent (released Feb 20, 2024).
> At the time of writing (2025-01-17) version
> [v1.69.0](https://github.com/grpc/grpc/releases/tag/v1.69.0) is the most
> recent.

In this section we will describe how to run a development `grapesy` server or
client (that is, a local checkout of the git repository, run simply using
`cabal run`) against a reference implementation. For this you will need a
checkout of the [official gRPC repo](https://github.com/grpc/grpc/).

```bash
$ git clone https://github.com/grpc/grpc.git -b v1.62.0 ./grpc-repo
grpc-repo$ git switch -c v1.62.0
$ git clone https://github.com/grpc/grpc.git -b v1.69.0 ./grpc-repo
grpc-repo$ git switch -c v1.69.0
grpc-repo$ git submodule update --init --recursive
```

For some languages, the gRPC implementation lives in a separate repository.

```bash
$ git clone https://github.com/grpc/grpc-java.git -b v1.62.0
grpc-java$ git switch -c v1.62.0
$ git clone https://github.com/grpc/grpc-java.git -b v1.69.0
grpc-java$ git switch -c v1.69.0

$ git clone https://github.com/grpc/grpc-go.git -b v1.62.0
grpc-go$ git switch -c v1.62.0
$ git clone https://github.com/grpc/grpc-go.git -b v1.69.0
grpc-go$ git switch -c v1.69.0
```

These need to be checked out alongside `grpc-repo`, so that you end up with
Expand All @@ -74,7 +74,7 @@ parent
```

> [!WARNING]
> Unlike the [QuickCheck
> Unlike the [Quick start
> instructions](https://grpc.io/docs/languages/python/quickstart/), this does
> _not_ do a shallow checkout. This is important: the tests will fail otherwise
> with an error such as this one:
Expand All @@ -90,9 +90,9 @@ fatal: clone of 'https://github.com/abseil/abseil-cpp.git' into submodule path '
> The official interop tests fail when IPv6 is enabled on the host machine. For
> convenience, there is a script in the `grapesy` repo at
> [/dev/disable-ipv6.sh](/dev/disable-ipv6.sh) that can be used to disable IPv6
> on Linux machines. If IPv6 is enabled, tests will fail with an error such as
> the one below (this error is in the test _infrastructure_, independent from
> the reference client or server):
> on Linux machines (run with `sudo`). If IPv6 is enabled, tests will fail with
> an error such as the one below (this error is in the test _infrastructure_,
> independent from the reference client or server):

```
Traceback (most recent call last):
Expand All @@ -115,7 +115,7 @@ dependencies. For convenience, in this section we describe how to set this up
on Linux. First, you will need Python:

```bash
$ apt-get install python3 python3-pip python3-setuptools python3-yaml
$ sudo apt-get install python3 python3-pip python3-setuptools python3-yaml
```

Create a Python virtual environment
Expand All @@ -130,7 +130,7 @@ PATH (see https://docs.python.org/3/library/venv.html#how-venvs-work); one
option is to create an `.envrc` file in `grpc-repo` with

```bash
export PATH=/path/to/grpc-repo/python-venv/bin:$PATH
export PATH=$PWD/python-venv/bin:$PATH
```

(you can also use `python-venv/bin/activate` but simply setting the path is
Expand All @@ -140,19 +140,13 @@ Finally, install the required Python dependencies:

```bash
grpc-repo$ python3 -m pip install --upgrade \
six==1.16.0 \
google-auth==1.23.0 \
google-api-python-client==1.12.8 \
oauth2client==4.1.0
```

(these version numbers match the ones used in
`tools/dockerfile/interoptest/grpc_interop_go/Dockerfile` and others).

> [!NOTE]
> The Docker file in the repo also pins `pip` itself, but to quite an old
> version (19.3.1). I found that this old version results in some errors, and
> had no problems with the default version (23.2 at the time of writing).
`tools/dockerfile/interoptest/grpc_interop_python/Dockerfile` and others).

As a sanity check, you can try to run the Python reference client against the
Python reference server:
Expand Down Expand Up @@ -297,6 +291,9 @@ grpc-repo$ SERVER_PORT=50052 bash ./java_client.sh
Only the ORCA tests are expected to fail (you may wish to disable those by
editing the client scripts).

The C++ client tests generate a lot of output; test failures will be reported
as `SIGABRT`/`SIGSEGV`.

## Running automatic tests

So far we've been running the interop tests in "manual" mode. To run them
Expand Down