Skip to content

Conversation

@linmosko
Copy link
Contributor

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

@linmosko linmosko requested a review from a team as a code owner October 23, 2025 15:57
@linmosko linmosko force-pushed the test/graceful-shutdown-additions branch 2 times, most recently from bc6cdcd to 900c3c0 Compare October 23, 2025 16:00
@codecov
Copy link

codecov bot commented Oct 23, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 72.01%. Comparing base (4fd1fc1) to head (2556399).
⚠️ Report is 1 commits behind head on main.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@arkodg arkodg added this to the v1.6.0 Milestone milestone Oct 23, 2025
@linmosko linmosko force-pushed the test/graceful-shutdown-additions branch 2 times, most recently from c36961a to 716ff1c Compare October 24, 2025 15:28
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) {
Copy link
Contributor

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) {
Copy link
Contributor

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?

@guydc
Copy link
Contributor

guydc commented Oct 25, 2025

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

@linmosko linmosko force-pushed the test/graceful-shutdown-additions branch 3 times, most recently from 03692ac to d6df811 Compare October 27, 2025 14:51
linmosko and others added 18 commits October 27, 2025 19:47
Signed-off-by: Lin Moskovitch <[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]>
* 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]>
shreealt and others added 24 commits October 27, 2025 19:47
* 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]>
@linmosko linmosko force-pushed the test/graceful-shutdown-additions branch from d772055 to 04028ef Compare October 27, 2025 17:49
@linmosko linmosko closed this Oct 27, 2025
@linmosko linmosko deleted the test/graceful-shutdown-additions branch October 27, 2025 22:17
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.