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

Bug 1826186: router: add gRPC interop end-2-end tests #24856

Merged

Conversation

frobware
Copy link
Contributor

@frobware frobware commented Apr 9, 2020

Add e2e gRPC interop test cases for the router.

This reuses the interop test cases already defined in the grpc project[1].
The following tests are exercised:

  • cancel_after_begin
  • cancel_after_first_response
  • client_streaming
  • custom_metadata
  • empty_unary
  • large_unary
  • ping_pong
  • server_streaming
  • special_status_message
  • status_code_and_message
  • timeout_on_sleeping_server
  • unimplemented_method
  • unimplemented_service

The test fixture comprises a POD with three containers:

  • builder
  • server
  • client-shell

The builder has copies of client.go and server.go populated from a configmap. Both these binaries are built from source during test fixture setup. They have a pinned go.{mod,sum} matching the version of gRPC currently used in origin (1.26.0). The server listens for (gRPC) client connections on h2 and h2c, and is also exposed as a service. The client-shell has access to the pre-built gRPC client binary and is used to exercise the tests on the cluster.

Three routes are created:

  • passthrough (maps to server/h2)
  • reencrypt (maps to server/h2)
  • edge (maps to server/h2c)

The interop tests are executed against the following scenarios:

  • in-cluster via the service endpoints (h2 and h2c)
  • in-cluster using routes
  • out-of-cluster using routes (purposefully going via the load balancer)

Note: testing via edge is currently skipped and is waiting for openshift/router#104

[1] https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md

TODO:

  • Get buy-in for building client/server.go on the cluster

@frobware
Copy link
Contributor Author

frobware commented Apr 9, 2020

A e2e run looks like:

grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 cancel_after_begin
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 cancel_after_first_response
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 client_streaming
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 custom_metadata
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 empty_stream
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 empty_unary
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 large_unary
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 ping_pong
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 server_streaming
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 special_status_message
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 status_code_and_message
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 timeout_on_sleeping_server
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 unimplemented_method
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 1110 unimplemented_service
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" cancel_after_begin
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" cancel_after_first_response
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" client_streaming
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" custom_metadata
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" empty_stream
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" empty_unary
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" large_unary
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" ping_pong
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" server_streaming
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" special_status_message
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" status_code_and_message
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" timeout_on_sleeping_server
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" unimplemented_method
grpc-client -host "grpc-interop.e2e-test-router-grpc-xvj2b.svc" -port 8443 -tls -ca-cert "/etc/service-ca/service-ca.crt" unimplemented_service
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure cancel_after_begin
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure cancel_after_first_response
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure client_streaming
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure custom_metadata
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure empty_unary
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure large_unary
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure ping_pong
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure server_streaming
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure special_status_message
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure status_code_and_message
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure timeout_on_sleeping_server
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure unimplemented_method
grpc-client -host "grpc-interop-passthrough-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure unimplemented_service
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure cancel_after_begin
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure cancel_after_first_response
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure client_streaming
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure custom_metadata
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure empty_unary
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure large_unary
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure ping_pong
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure server_streaming
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure special_status_message
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure status_code_and_message
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure timeout_on_sleeping_server
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure unimplemented_method
grpc-client -host "grpc-interop-reencrypt-e2e-test-router-grpc-xvj2b.apps.amcdermo-2020-04-09-0819.gcp.devcluster.openshift.com" -port 443 -tls -insecure unimplemented_service

@frobware
Copy link
Contributor Author

frobware commented Apr 9, 2020

@openshift/openshift-team-network-edge

@frobware frobware force-pushed the router-grpc-interop-testing branch from d3cb0a6 to 15b1e25 Compare April 9, 2020 16:57
@frobware frobware changed the title router: add gRPC interop end-2-end tests [WIP] router: add gRPC interop end-2-end tests Apr 9, 2020
@openshift-ci-robot openshift-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 9, 2020
@frobware
Copy link
Contributor Author

frobware commented Apr 9, 2020

/retest

@frobware frobware force-pushed the router-grpc-interop-testing branch 7 times, most recently from 8dcf15e to d3dc3d9 Compare April 14, 2020 12:29
@frobware
Copy link
Contributor Author

/test unit

@frobware
Copy link
Contributor Author

/test images

@frobware
Copy link
Contributor Author

/retest

@frobware frobware force-pushed the router-grpc-interop-testing branch from d3dc3d9 to 3df4feb Compare April 16, 2020 13:14
@frobware
Copy link
Contributor Author

/test verify

@frobware
Copy link
Contributor Author

/retest

@frobware
Copy link
Contributor Author

frobware commented Apr 16, 2020

@ironcladlou @smarterclayton i think this is good to review now. The unaddressed TODO is that this builds some Go code in the test container. Is this a good thing? If not, we need a new home for the client/server code as an image.

@frobware frobware changed the title [WIP] router: add gRPC interop end-2-end tests router: add gRPC interop end-2-end tests Apr 16, 2020
@openshift-ci-robot openshift-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 16, 2020
@frobware
Copy link
Contributor Author

/retest

@frobware frobware force-pushed the router-grpc-interop-testing branch from 60fcf79 to 37329fe Compare April 17, 2020 14:44
@ironcladlou
Copy link
Contributor

/lgtm

@smarterclayton can you please sanity check out approach here? I'll approve today if nobody objects

@frobware
Copy link
Contributor Author

/test e2e-aws-serial

@frobware
Copy link
Contributor Author

/retest

@ironcladlou
Copy link
Contributor

/hold cancel

@openshift-ci-robot openshift-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Apr 20, 2020
@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

9 similar comments
@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@frobware
Copy link
Contributor Author

/retitle Bug 1826186: router: add gRPC interop end-2-end tests

@openshift-ci-robot openshift-ci-robot changed the title router: add gRPC interop end-2-end tests Bug 1826186: router: add gRPC interop end-2-end tests Apr 21, 2020
@openshift-ci-robot openshift-ci-robot added bugzilla/medium bugzilla/invalid-bug Indicates that a referenced Bugzilla bug is invalid for the branch this PR is targeting. labels Apr 21, 2020
@openshift-ci-robot
Copy link

@frobware: This pull request references Bugzilla bug 1826186, which is invalid:

  • expected the bug to target the "4.5.0" release, but it targets "---" instead

Comment /bugzilla refresh to re-evaluate validity if changes to the Bugzilla bug are made, or edit the title of this pull request to link to a different bug.

In response to this:

Bug 1826186: router: add gRPC interop end-2-end tests

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@frobware
Copy link
Contributor Author

/bugzilla refresh

@openshift-ci-robot openshift-ci-robot added bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. and removed bugzilla/invalid-bug Indicates that a referenced Bugzilla bug is invalid for the branch this PR is targeting. labels Apr 21, 2020
@openshift-ci-robot
Copy link

@frobware: This pull request references Bugzilla bug 1826186, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target release (4.5.0) matches configured target release for branch (4.5.0)
  • bug is in the state NEW, which is one of the valid states (NEW, ASSIGNED, ON_DEV, POST, POST)

In response to this:

/bugzilla refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

2 similar comments
@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-ci-robot
Copy link

@frobware: The following test failed, say /retest to rerun all failed tests:

Test name Commit Details Rerun command
ci/prow/e2e-gcp 60ce48b link /test e2e-gcp

Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@openshift-bot
Copy link
Contributor

/retest

Please review the full test history for this PR and help us cut down flakes.

@openshift-merge-robot openshift-merge-robot merged commit 67d410b into openshift:master Apr 22, 2020
@openshift-ci-robot
Copy link

@frobware: All pull requests linked via external trackers have merged: openshift/origin#24856. Bugzilla bug 1826186 has been moved to the MODIFIED state.

In response to this:

Bug 1826186: router: add gRPC interop end-2-end tests

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. bugzilla/valid-bug Indicates that a referenced Bugzilla bug is valid for the branch this PR is targeting. lgtm Indicates that a PR is ready to be merged.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants