-
Couldn't load subscription status.
- Fork 581
test(e2e): add graceful shutdown upgrade test for long-running requests #7320
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
test(e2e): add graceful shutdown upgrade test for long-running requests #7320
Conversation
bc6cdcd to
900c3c0
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7320 +/- ##
==========================================
- Coverage 72.01% 72.01% -0.01%
==========================================
Files 230 230
Lines 33370 33370
==========================================
- Hits 24031 24030 -1
- Misses 7591 7592 +1
Partials 1748 1748 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
c36961a to
716ff1c
Compare
test/e2e/tests/envoy_shutdown.go
Outdated
| aborter := periodic.NewAborter() | ||
| // will contain indication on success or failure of load test | ||
| loadSuccess := make(chan bool) | ||
| func runEnvoyShutdownCase(t *testing.T, suite *suite.ConformanceTestSuite, delay string, perRequestTimeout time.Duration) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe use delaySeconds string and format the time inside the util to match the fortio api
| // the done channel is used to notify caller of execution result | ||
| // the execution may end due to an external abort or timeout | ||
| func runLoadAndWait(t *testing.T, timeoutConfig *config.TimeoutConfig, done chan bool, aborter *periodic.Aborter, reqURL string) { | ||
| func runLoadAndWait(t *testing.T, timeoutConfig *config.TimeoutConfig, done chan bool, aborter *periodic.Aborter, reqURL string, reqTimeout time.Duration) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if it's always needed in other methods, maybe make this an optional parameter and default to 3 * time.Second or just ignore it inside the function and let fortio use its default instead?
|
also, is it possible to run this as part of the existing test, in parallel with current load? Restarting the proxy can take a while, so I'd rather have one shutdown manager test that verifies the various scenarios and types of requests/protocols if possible |
03692ac to
d6df811
Compare
Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: shawnh2 <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* feat: add zstd compression support Signed-off-by: Steven Kreitzer <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
…envoyproxy#7281) Bumps the gomod group with 2 updates in the / directory: [github.com/replicatedhq/troubleshoot](https://github.com/replicatedhq/troubleshoot) and [github.com/tetratelabs/func-e](https://github.com/tetratelabs/func-e). Bumps the gomod group with 1 update in the /examples/simple-extension-server directory: [github.com/envoyproxy/gateway](https://github.com/envoyproxy/gateway). Updates `github.com/replicatedhq/troubleshoot` from 0.123.7 to 0.123.10 - [Release notes](https://github.com/replicatedhq/troubleshoot/releases) - [Commits](replicatedhq/troubleshoot@v0.123.7...v0.123.10) Updates `github.com/tetratelabs/func-e` from 1.2.0 to 1.3.0 - [Release notes](https://github.com/tetratelabs/func-e/releases) - [Commits](tetratelabs/func-e@v1.2.0...v1.3.0) Updates `github.com/envoyproxy/gateway` from 1.5.3 to 1.5.4 - [Release notes](https://github.com/envoyproxy/gateway/releases) - [Commits](envoyproxy/gateway@v1.5.3...v1.5.4) --- updated-dependencies: - dependency-name: github.com/replicatedhq/troubleshoot dependency-version: 0.123.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gomod - dependency-name: github.com/tetratelabs/func-e dependency-version: 1.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gomod - dependency-name: github.com/envoyproxy/gateway dependency-version: 1.5.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gomod ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Isaac <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
…envoyproxy#7280) Bumps the actions group with 2 updates in the / directory: [github/codeql-action](https://github.com/github/codeql-action) and [actions/setup-node](https://github.com/actions/setup-node). Updates `github/codeql-action` from 4.30.8 to 4.30.9 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@f443b60...16140ae) Updates `actions/setup-node` from 5.0.0 to 6.0.0 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@a0853c2...2028fbc) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.30.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: actions/setup-node dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Lin Moskovitch <[email protected]>
…r/envoy-gateway (envoyproxy#7278) build(deps): bump busybox in /tools/docker/envoy-gateway Bumps busybox from `d82f458` to `2f590fc`. --- updated-dependencies: - dependency-name: busybox dependency-version: 2f590fc602ce325cbff2ccfc39499014d039546dc400ef8bbf5c6ffb860632e7 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Isaac <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
…ilience tests (envoyproxy#7106) * refactor: use MakeRequestAndExpectEventuallyConsistentResponse in resilience tests Replace manual AwaitConvergence patterns with the standardized utility function Signed-off-by: ADITYATIWARI342005 <[email protected]> * refactor(resilience): replace AwaitConvergence loops with MakeRequestAndExpectEventuallyConsistentResponse; cleanup unused imports Signed-off-by: ADITYATIWARI342005 <[email protected]> * test(resilience): preserve original convergence timing using local TimeoutConfig for MakeRequestAndExpectEventuallyConsistentResponse Signed-off-by: ADITYATIWARI342005 <[email protected]> --------- Signed-off-by: ADITYATIWARI342005 <[email protected]> Co-authored-by: Arko Dasgupta <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* fix race Signed-off-by: zirain <[email protected]> * lint Signed-off-by: zirain <[email protected]> --------- Signed-off-by: zirain <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* Fix: Improve 404 page layout by adding proper top spacing Signed-off-by: ADITYATIWARI342005 <[email protected]> * add new line at the end Signed-off-by: ADITYA TIWARI <[email protected]> --------- Signed-off-by: ADITYATIWARI342005 <[email protected]> Signed-off-by: ADITYA TIWARI <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
…voyproxy#7296) Signed-off-by: sudipto baral <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* watch change for the ca cert in the Backend Signed-off-by: Huabing Zhao <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
…y#7284) * fix: set EnforcingConsecutiveGatewayFailure default to 100 Signed-off-by: zirain <[email protected]> * fix Signed-off-by: zirain <[email protected]> * remove default value Signed-off-by: zirain <[email protected]> * fix gen Signed-off-by: zirain <[email protected]> --------- Signed-off-by: zirain <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* Support binaryData in custom response Signed-off-by: Karol Szwaj <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* feat: support chash based on multiple headers Signed-off-by: Shreemaan Abhishek <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
envoyproxy#7171) * feat(securitypolicy): Update API to support tcp security policy. Breaking down larger pr's in to smaller ones Signed-off-by: davem-git <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* feat: support retries in ext proc Signed-off-by: Shreemaan Abhishek <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
fix gen check Signed-off-by: Huabing Zhao <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Connor Rogers <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* clarify that you need to generate after modifying helm charts Signed-off-by: Saska Karsi <[email protected]> * rm accidental unrelated formatting Signed-off-by: Saska Karsi <[email protected]> --------- Signed-off-by: Saska Karsi <[email protected]> Co-authored-by: Saska Karsi <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
fix: set ipfamily in udpistener (envoyproxy#7312) Signed-off-by: cong <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* add logging for 500 direct response Signed-off-by: Huabing Zhao <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
…envoyproxy#7301) fix: empty openid config from well-known endpoint Signed-off-by: Huabing Zhao <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* enable supported conformance test Signed-off-by: zirain <[email protected]> * enable BackendTLSPolicyInvalidKind Signed-off-by: zirain <[email protected]> * fix lint Signed-off-by: zirain <[email protected]> * enable BackendTLSPolicyInvalidCACertificateRef Signed-off-by: zirain <[email protected]> * enable BackendTLSPolicySANValidation Signed-off-by: zirain <[email protected]> * BackendTLSPolicy Signed-off-by: zirain <[email protected]> * fix gen Signed-off-by: zirain <[email protected]> * BackendTLSPolicyObservedGenerationBump Signed-off-by: zirain <[email protected]> * nit Signed-off-by: zirain <[email protected]> * update Signed-off-by: zirain <[email protected]> * update Signed-off-by: zirain <[email protected]> * fix gen Signed-off-by: zirain <[email protected]> --------- Signed-off-by: zirain <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: zirain <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
This adds configuration fields to EnvoyGatewayHostInfrastructureProvider to allow users to specify custom paths for configuration, data, state, and runtime directories, following XDG Base Directory Specification conventions while maintaining backward compatibility.
The implementation introduces four configurable directory paths:
- configHome: certificates and configuration files (default: ~/.config/envoy-gateway)
- dataHome: Envoy binaries, sharable across configs (default: ~/.local/share/envoy-gateway)
- stateHome: logs and persistent state (default: ~/.local/state/envoy-gateway)
- runtimeDir: ephemeral runtime files (default: /tmp/envoy-gateway-${UID})
Certificates are stored under configHome to ensure isolation between different configurations when running multiple EnvoyGateway instances in parallel, preventing certificate conflicts.
These paths are propagated to func-e which creates subdirectories as needed:
- dataHome/envoy-versions/ for Envoy binaries
- stateHome/envoy-runs/{runID}/ for per-run logs
- runtimeDir/{runID}/ for per-run runtime files
The changes include path resolution helpers, updated runners to use configurable paths, comprehensive test coverage, and updated documentation.
Signed-off-by: Adrian Cole <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
* API for per bacend client cert Signed-off-by: Huabing Zhao <[email protected]> provider Signed-off-by: Huabing Zhao <[email protected]> Gateway API translator Signed-off-by: Huabing Zhao <[email protected]> * add e2e test Signed-off-by: Huabing (Robin) Zhao <[email protected]> * add release note Signed-off-by: Huabing Zhao <[email protected]> * fix gen check Signed-off-by: Huabing Zhao <[email protected]> * minor change Signed-off-by: Huabing Zhao <[email protected]> * embed BackendTLSConfig as inline field Signed-off-by: Huabing Zhao <[email protected]> * embed BackendTLSConfig as inline field Signed-off-by: Huabing Zhao <[email protected]> * fix lint Signed-off-by: Huabing Zhao <[email protected]> --------- Signed-off-by: Huabing Zhao <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
* fix nit and enable WASM test Signed-off-by: zirain <[email protected]> * enable ZoneAwareRouting Signed-off-by: zirain <[email protected]> --------- Signed-off-by: zirain <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
adding the prerequisites Signed-off-by: EkLine <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
* docs: add rc.0 marker tagging step to release process Signed-off-by: Shahar Harari <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
* preconnect policy Signed-off-by: jukie <[email protected]> * adjust fields Signed-off-by: jukie <[email protected]> * lint Signed-off-by: jukie <[email protected]> * descriptions, naming, and perEndpointPercent min vs max Signed-off-by: jukie <[email protected]> * test case and description tweak Signed-off-by: jukie <[email protected]> --------- Signed-off-by: jukie <[email protected]> Signed-off-by: Isaac <[email protected]> Signed-off-by: Lin Moskovitch <[email protected]>
…envoyproxy#7338) Bumps the actions group with 3 updates in the / directory: [actions/upload-artifact](https://github.com/actions/upload-artifact), [actions/download-artifact](https://github.com/actions/download-artifact) and [github/codeql-action](https://github.com/github/codeql-action). Updates `actions/upload-artifact` from 4.6.2 to 5.0.0 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@ea165f8...330a01c) Updates `actions/download-artifact` from 5.0.0 to 6.0.0 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@634f93c...018cc2c) Updates `github/codeql-action` from 4.30.9 to 4.31.0 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](github/codeql-action@16140ae...4e94bd1) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/download-artifact dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: github/codeql-action dependency-version: 4.31.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
…envoyproxy#7339) Bumps the gomod group with 2 updates in the / directory: [github.com/klauspost/compress](https://github.com/klauspost/compress) and [github.com/replicatedhq/troubleshoot](https://github.com/replicatedhq/troubleshoot). Bumps the gomod group with 1 update in the /examples/preserve-case-backend directory: [github.com/valyala/fasthttp](https://github.com/valyala/fasthttp). Updates `github.com/klauspost/compress` from 1.18.0 to 1.18.1 - [Release notes](https://github.com/klauspost/compress/releases) - [Changelog](https://github.com/klauspost/compress/blob/master/.goreleaser.yml) - [Commits](klauspost/compress@v1.18.0...v1.18.1) Updates `github.com/replicatedhq/troubleshoot` from 0.123.10 to 0.123.12 - [Release notes](https://github.com/replicatedhq/troubleshoot/releases) - [Commits](https://github.com/replicatedhq/troubleshoot/commits) Updates `github.com/valyala/fasthttp` from 1.67.0 to 1.68.0 - [Release notes](https://github.com/valyala/fasthttp/releases) - [Commits](valyala/fasthttp@v1.67.0...v1.68.0) --- updated-dependencies: - dependency-name: github.com/klauspost/compress dependency-version: 1.18.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gomod - dependency-name: github.com/replicatedhq/troubleshoot dependency-version: 0.123.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gomod - dependency-name: github.com/valyala/fasthttp dependency-version: 1.68.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gomod ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
Signed-off-by: Lin Moskovitch <[email protected]>
d772055 to
04028ef
Compare
What type of PR is this?
test(e2e)
What this PR does / why we need it:
Adds a new upgrade conformance test to verify that Envoy Gateway preserves long-running in-flight HTTP requests during shutdown. This test introduces parallel delayed traffic (
?delay=3s) and triggers an Envoy rollout restart to confirm that request draining works correctly and no in-flight traffic is dropped during graceful shutdown.Which issue(s) this PR fixes:
N/A (extends test coverage)
Release Notes: No