kubernetes/test/e2e
Dan Winship b68e2ac8a5 Drop e2enode.PickIP(), fix its one caller
This returned a randomly-selected IP from across all nodes, preferring
ExternalIP but falling back to an InternalIP. But it was only called
from one place, which was connecting from inside the cluster and thus
wanted an InternalIP anyway.
2026-03-07 10:45:07 -05:00
..
apimachinery Merge pull request #136937 from p0lyn0mial/upstream-reflector-list-unsupported-table 2026-02-23 20:59:36 +05:30
apps Wait for RS to report status rather than count pods 2026-03-04 14:33:55 +01:00
architecture add bentheelder to conformance related test *reviewers* 2025-06-10 20:09:57 -07:00
auth Fix the NodeAuthenticator e2e tests 2026-02-19 07:22:21 -05:00
autoscaling Remove WithSerial 2026-02-21 12:13:49 +02:00
chaosmonkey test: refactor to use atomic types 2026-02-05 20:19:33 +05:30
cloud Remove redundant re-assignments in for-loops in test/{e2e,integration,utils} 2026-01-25 22:58:27 +01:00
common deflake pod resize oom_score_adj check 2026-03-05 18:36:03 +00:00
dra Move DRAAdminAccess feature to GA (#137373) 2026-03-05 23:42:21 +05:30
environment Ensure all the files have the updated sorting 2025-06-27 11:13:50 -04:00
feature Merge pull request #136501 from adrianmoisey/remove-CustomMetricsAutoscaling 2026-02-15 21:23:58 +05:30
framework Drop e2enode.PickIP(), fix its one caller 2026-03-07 10:45:07 -05:00
instrumentation feat: Add matcher and conformance tests ensuring that RV is uint128 2025-10-01 00:01:50 +00:00
invariants Use HTTP GET for Node log queries in e2e logcheck 2026-03-05 16:38:24 -06:00
kubectl fix flaky logs test by retrying logs fetch 2026-02-24 18:27:15 +05:30
lifecycle add HirazawaUi to kubeadm approvers list 2025-05-08 21:15:24 +08:00
network Inline a Service jig helper into a test 2026-03-07 10:45:06 -05:00
node Update pod after the container is removed 2026-03-05 23:21:33 +00:00
perftype
reporters
scheduling Fallback to ExternalIP in tests. 2026-02-17 17:24:08 +01:00
storage test: fix WaitForNamespacedGVRDeletion parameter order 2026-03-05 22:57:50 +08:00
testing-manifests e2e: add executable permission to snapshot metadata test script 2026-03-02 11:23:19 +05:30
upgrades chore(test/autoscaling): replace RC with ReplicaSet and update deprecated API versions in HPA e2e 2026-02-17 14:01:02 +03:00
windows Drop e2enode.PickIP(), fix its one caller 2026-03-07 10:45:07 -05:00
e2e-example-config.json
e2e.go Drop NodeKiller 2026-02-21 08:30:04 -05:00
e2e_test.go E2E logcheck: move to "invariants" directory 2026-01-19 16:25:49 +01:00
providers.go Remove gcp in-tree cloud provider and credential provider 2024-05-01 09:03:53 -04:00
README.md e2e: use framework labels 2023-11-01 15:17:34 +01:00
suites.go Drop NodeKiller 2026-02-21 08:30:04 -05:00

test/e2e

This is home to e2e tests used for presubmit, periodic, and postsubmit jobs.

Some of these jobs are merge-blocking, some are release-blocking.

e2e test ownership

All e2e tests must adhere to the following policies:

  • the test must be owned by one and only one SIG
  • the test must live in/underneath a sig-owned package matching pattern: test/e2e/[{subpath}/]{sig}/..., e.g.
    • test/e2e/auth - all tests owned by sig-auth
    • test/e2e/common/storage - all tests common to cluster-level and node-level e2e tests, owned by sig-node
    • test/e2e/upgrade/apps - all tests used in upgrade testing, owned by sig-apps
  • each sig-owned package should have an OWNERS file defining relevant approvers and labels for the owning sig, e.g.
# test/e2e/node/OWNERS
# See the OWNERS docs at https://go.k8s.io/owners

approvers:
- alice
- bob
- cynthia
emeritus_approvers:
- dave
reviewers:
- sig-node-reviewers
labels:
- sig/node
  • packages that use {subpath} should have an imports.go file importing sig-owned packages (for ginkgo's benefit), e.g.
// test/e2e/common/imports.go
package common

import (
	// ensure these packages are scanned by ginkgo for e2e tests
	_ "k8s.io/kubernetes/test/e2e/common/network"
	_ "k8s.io/kubernetes/test/e2e/common/node"
	_ "k8s.io/kubernetes/test/e2e/common/storage"
)
  • test ownership must be declared via a top-level SIGDescribe call defined in the sig-owned package, e.g.
// test/e2e/lifecycle/framework.go
package lifecycle

import "k8s.io/kubernetes/test/e2e/framework"

// SIGDescribe annotates the test with the SIG label.
var SIGDescribe = framework.SIGDescribe("cluster-lifecycle")
// test/e2e/lifecycle/bootstrap/bootstrap_signer.go

package bootstrap

import (
	"github.com/onsi/ginkgo"
	"k8s.io/kubernetes/test/e2e/lifecycle"
)
var _ = lifecycle.SIGDescribe("cluster", feature.BootstrapTokens, func() {
  /* ... */
  ginkgo.It("should sign the new added bootstrap tokens", func(ctx context.Context) {
    /* ... */
  })
  /* etc */
})

These polices are enforced:

  • via the merge-blocking presubmit job pull-kubernetes-verify
  • which ends up running hack/verify-e2e-test-ownership.sh
  • which can also be run via make verify WHAT=e2e-test-ownership

more info

See kubernetes/community/.../e2e-tests.md