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

Initial Mesh (GAMMA) conformance tests #1878

Merged
merged 3 commits into from
Apr 3, 2023

Conversation

howardjohn
Copy link
Contributor

@howardjohn howardjohn commented Mar 25, 2023

What type of PR is this?
/area conformance

What this PR does / why we need it:
This PR introduces the basic scaffolding for Mesh testing. Mesh testing is fundamentally different from ingress testing, as we need to send requests from pod-to-pod instead of "go test" to "reachable IP address".

This PR introduces the basic scaffolding to run this test. With this PR, you can run a test against GAMMA tests.

This will:

  • Deploy a new namespace and a few applications
  • Run tests against them. Currently, there is only a trivial test that ensures applications can talk to each other; this PR is just intended to get the base infra, not add useful tests (yet)

Architecturally, we are deploying gcr.io/istio-testing/app:latest to each app. This is a client+server pair. We then on-demand exec into each pod to run client http://some-request, and parse the result and validate against expectations.

Likely desired improvements:

  • Move image into k8s org, do not use latest
  • Move to use a long-lived port-forward to each application; exec has a high overhead. The echo app has a grpc server we can control it from (instead of exec, we send it a ForwardMessage request). However, this has a downside that it requires us to pull in gRPC.
  • Make code a bit more robust, etc

Opening this PR to get early feedback before moving further.

I think we could also merge this as-is, as it doesn't impact non-Mesh cases and will allow further iteration.

Which issue(s) this PR fixes:

Fixes #1340

Does this PR introduce a user-facing change?:

NONE

@k8s-ci-robot
Copy link
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. area/conformance cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Mar 25, 2023
@k8s-ci-robot k8s-ci-robot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Mar 25, 2023
@howardjohn howardjohn marked this pull request as ready for review March 28, 2023 17:21
@k8s-ci-robot k8s-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 Mar 28, 2023
@howardjohn howardjohn force-pushed the mesh-conformance branch 4 times, most recently from 595bc40 to 46cd068 Compare March 28, 2023 20:39
conformance/conformance_test.go Outdated Show resolved Hide resolved
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 29, 2023
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 30, 2023
@shaneutt shaneutt self-requested a review March 30, 2023 15:07
@shaneutt shaneutt self-assigned this Mar 30, 2023
Copy link
Member

@shaneutt shaneutt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm OK with this based on the machinery and the decisions from discussions here that led to the follow up PR #1894.

I haven't done significant scrutiny of the tests or the test helpers personally, I've invited several mesh-focused community members to review and hopefully test this out themselves. We should give them a little bit of time to check this out before we merge.

/hold

@k8s-ci-robot k8s-ci-robot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Mar 31, 2023
Copy link
Contributor

@keithmattix keithmattix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I personally don't have any reservations about this, but I'll let someone else be the final LGTM

@@ -0,0 +1,70 @@
/*
Copyright 2022 The Kubernetes Authors.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of these files have old copyright dates, are they just being copied from Istio codebase?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

copied from other files in this repo

Copy link
Contributor

@michaelbeaumont michaelbeaumont left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great! LGTM

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: howardjohn, keithmattix, michaelbeaumont, shaneutt

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@shaneutt
Copy link
Member

shaneutt commented Apr 3, 2023

Alright, enough people have seen this now so we can

/unhold

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Apr 3, 2023
@howardjohn
Copy link
Contributor Author

Thanks all. Need 1 lgtm to get this in

@kflynn
Copy link
Contributor

kflynn commented Apr 3, 2023

Looks good from here, FTR.

@robscott
Copy link
Member

robscott commented Apr 3, 2023

Thanks @howardjohn!

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Apr 3, 2023
@k8s-ci-robot k8s-ci-robot merged commit 8dde508 into kubernetes-sigs:main Apr 3, 2023
arkodg added a commit to arkodg/gateway-api that referenced this pull request Apr 4, 2023
* With kubernetes-sigs#1878
the existing flag `EnableAllSupportedFeatures` used in implementations
to run conformance tests pertaining to all Gateway/Ingress features will
now also run Mesh conformance tests which might not be the intent.
* rm `EnableAllSupportedFeatures` and ask Ingress implementations to set
  `SupportedFeatures` to `AllGatewayFeatures` to achieve the same
  intent as before. Mesh implementations that also support Gateway
  features can set `SupportedFeatures` to `AllFeatures`.

Signed-off-by: Arko Dasgupta <[email protected]>
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. area/conformance cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.
Projects
Development

Successfully merging this pull request may close these issues.

conformance: support testing mesh implementations
7 participants