Commit Graph

252 Commits

Author SHA1 Message Date
ndixita
99a6153a4f e2e tests
Signed-off-by: ndixita <ndixita@google.com>
2024-11-08 03:00:54 +00:00
zhifei92
bed96b4eb6 fix: fix the issue of losing the pending phase after a node restart. 2024-11-07 21:10:11 +08:00
Kubernetes Prow Robot
f81a68f488 Merge pull request #128377 from tallclair/allocated-status-2
[FG:InPlacePodVerticalScaling] Implement AllocatedResources status changes for Beta
2024-11-05 23:21:49 +00:00
Tim Allclair
9d28cc0413 Improve resize test debugability 2024-11-01 14:02:58 -07:00
Tim Allclair
45b1104878 Fix resize E2E tests 2024-11-01 14:02:58 -07:00
carlory
529ad9029d improve error message format for WaitForPodSuccessInNamespaceTimeout 2024-11-01 14:33:07 +08:00
Tim Allclair
2407a49956 Reuse cached client config for exec requests in e2e 2024-10-29 10:00:11 -07:00
Kubernetes Prow Robot
ec16c90aaf Merge pull request #126593 from stlaz/trustbundles-e2e
KEP-3257: e2e: extend cluster trust bundles coverage
2024-10-19 00:51:03 +01:00
Stanislav Láznička
3ec3736d66 e2e: extend cluster trust bundles coverage 2024-10-18 12:30:13 +02:00
Anish Shah
3e6df4a871 test: remove container runtime check and fix other nits 2024-10-17 17:14:04 -07:00
Anish Shah
d72c7319f8 test: refactor duplicate inplace pod resize test utilities 2024-10-17 05:35:40 -07:00
Kubernetes Prow Robot
fccbbf324d Merge pull request #124711 from deads2k/vap-per-node
demonstrate VAP restricting action per-node
2024-10-02 21:15:49 +01:00
David Eads
38fd067e92 demonstrate VAP restricting action per-node 2024-10-02 15:09:24 -04:00
Davanum Srinivas
3d7d06e7cd Bump timeout to account for slow GPU operations
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-09-20 20:52:51 -04:00
Kubernetes Prow Robot
d770dd695a Merge pull request #121888 from SD-13/e2e-gomega-be-true-or-false
Enhance boolean assertions when fail
2024-08-20 04:24:42 -07:00
Sujay
223aedcf6b enhance boolean assertions 2024-07-31 15:58:15 +00:00
Matthieu MOREL
7bccbaf996 fix: enable and fixes rules from testifylint on test package
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-30 05:44:47 +00:00
yintong.huang
2db1b321e0 drop deprecated PollWithContext and adopt PollUntilContextTimeout instead
Signed-off-by: yintong.huang <yintong.huang@daocloud.io>
2024-06-21 19:23:31 +08:00
Kubernetes Prow Robot
9de747cc01 Merge pull request #125434 from ffromani/e2e-node-annotate-pods
e2e: node: add feature to annotate pods with owning code
2024-06-16 04:27:28 -07:00
Francesco Romani
7160ef4fbc e2e: node: add code to track the pod creator code
e2e_node test depend on very specific shared state (node state).
Pod leakages between tests oftentimes cause the test preconditions
to be silently corrupted, causing hard to debug CI failures.

We add the option to add an annotation to pods which records
the code line (source code:line) which triggered the pod creation,
so it becomes easier to track which test needs better cleanup.

The relevant e2e framework code is used in all the e2e suites,
so to minimize any unwanted consequences we make the feature
opt-in, planning to enable it initially (and likely only)
in the e2e_node tests.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2024-06-14 13:42:14 +02:00
胡玮文
859bd02593 e2e: add TERM trap to pod sleep command
This should avoid the 30s delay caused by shell not responding to SIGTERM, and can only be killed by SIGKILL.

If the pod is deleted with the namespace during cleanup, this also makes cleanup faster, and frees up the resources for the next test cases faster.
2024-06-11 13:52:47 +08:00
Kubernetes Prow Robot
cb3bd5bc41 Merge pull request #124205 from mkarrmann/wait-for-pods-e2e-cleanup-111092
chore/refactor(e2e tests): Solidify Contract for and Cleanup WaitForPodsRunningReady
2024-04-22 01:24:24 -07:00
Matt Karrmann
5b3f48d263 Revert check at end of WaitForAlmostAllPodsReady to only consider Pending pods 2024-04-17 23:18:26 -05:00
Matt Karrmann
62b9e832cc Small clean and comment rewording of WaitForPodsRunningReady 2024-04-17 23:18:26 -05:00
Matt Karrmann
bcf42255bb Refactor and simplify WaitForPodsRunningReady; update callers to use new interface 2024-04-17 23:18:26 -05:00
Matt Karrmann
fcdf67a815 Add WaitForAlmostAllPodsReady function, similar to previous WaitForPodsRunningReady function 2024-04-17 23:18:26 -05:00
Matt Karrmann
fe251cb737 Explicitity set contract for WaitForPodsRunningReady, and rewrite accordingly 2024-04-17 23:18:26 -05:00
Matt Karrmann
2537c10453 Improve logging and comments in WaitForPodsRunningReady 2024-04-17 23:18:26 -05:00
Matt Karrmann
273cd03c01 Cleanup WaitForPodsRunningReady: fail for bad pods and reword log message 2024-04-17 23:18:26 -05:00
Antonio Ojea
f81cce61e6 e2e test to execute 1000 times in a container
with concurrency 10

Change-Id: Idf9aa8e22e62e718993ea82b23e1818e34556315
2024-04-07 19:34:40 +00:00
huweiwen
c2ccb921ea e2e pod: fail fast on failed pod
no need to wait until timeout. reduce test time
2024-03-04 00:01:02 +08:00
Kubernetes Prow Robot
3516bc6f49 Merge pull request #122456 from AxeZhan/beta3960
[KEP 3960]: graduate PodLifecycleSleepAction to beta
2024-02-19 07:44:50 -08:00
AxeZhan
c74ec3df09 graduate PodLifecycleSleepAction to beta 2024-02-19 19:40:52 +08:00
Patrick Ohly
aa772d77fb e2e pod: dump pod in unexpected phase
When stopping polling, the provided messages becomes the complete failure
message. This means that the code which calls gomega.StopTrying must include
the pod in the message instead of just summarizing the phase. This makes the
failure more useful.
2024-02-14 09:01:32 +01:00
Patrick Ohly
43539c855f e2e framework: unify logging, support skipping helpers
ginkgo.GinkgoHelper is a recent addition to ginkgo which allows functions to
mark themselves as helper. This then changes which callstack gets reported for
failures. It makes sense to support the same mechanism also for logging.

There's also no reason why framework.Logf should produce output that is in a
different format than klog log entries. Having time stamps formatted
differently makes it hard to read test output which uses a mixture of both.
Another user-visible advantage is that the error log entry from
framework.ExpectNoError now references the test source code.

With textlogger there is a simple replacement for klog that can be reconfigured
to let the caller handle stack unwinding. klog itself doesn't support that
and should be modified to support it (feature freeze).

Emitting printf-style output via that logger would work, but become less
readable because the message string would get quoted instead of printing it
verbatim as before. So instead, the traditional klog header gets reproduced
in the framework code. In this example, the first line is from klog, the second
from Logf:

    I0111 11:00:54.088957  332873 factory.go:193] Registered Plugin "containerd"
    ...
      I0111 11:00:54.987534 332873 util.go:506] >>> kubeConfig: /var/run/kubernetes/admin.kubeconfig

Indention is a bit different because the initial output is printed before
installing the logger which writes through ginkgo.GinkgoWriter.

One welcome side effect is that now "go vet" detects mismatched parameters for
framework.Logf because fmt.Sprintf is called without mangling the format
string. Some of the calls were incorrect.
2024-01-20 18:23:31 +01:00
Patrick Ohly
3aa366a3eb e2e: remove dead code
The dead code was found with:

    deadcode -test -filter=k8s.io/kubernetes/test/e2e/framework/... ./test/e2e ./test/e2e_node ./test/e2e_node ./test/e2e_kubeadm

See https://go.dev/blog/deadcode for an introduction.

Only dead code which is clearly not needed anymore (glog logging),
questionable (skipping based on feature gates) or
redundant (WaitForPodSuccessInNamespaceSlow) gets removed for now. More
removals might make sense in the future.
2024-01-17 12:57:35 +01:00
Patrick Ohly
f9ceab37ca e2e: pass context into pod helper functions
This ensures that progress reports and timeouts work.
2023-11-14 15:57:55 +01:00
Patrick Ohly
fc3ee07b51 e2e pods: fix WaitForPodsResponding retry
The status error was embedded inside the new error constructed by
WaitForPodsResponding's get function, but not wrapped. Therefore
`apierrors.IsServiceUnavailable(err)` didn't find it and returned false -> no
retries.

Wrapping fixes this and Gomega formatting of the error remains useful:

	err := &errors.StatusError{}
	err.ErrStatus.Code = 503
	err.ErrStatus.Message = "temporary failure"

	err2 := fmt.Errorf("Controller %s: failed to Get from replica pod %s:\n%w\nPod status:\n%s",
		"foo", "bar",
		err, "some status")
	fmt.Println(format.Object(err2, 1))
        fmt.Println(errors.IsServiceUnavailable(err2))

=>

    <*fmt.wrapError | 0xc000139340>:
    Controller foo: failed to Get from replica pod bar:
    temporary failure
    Pod status:
    some status
    {
        msg: "Controller foo: failed to Get from replica pod bar:\ntemporary failure\nPod status:\nsome status",
        err: <*errors.StatusError | 0xc0001a01e0>{
            ErrStatus: {
                TypeMeta: {Kind: "", APIVersion: ""},
                ListMeta: {
                    SelfLink: "",
                    ResourceVersion: "",
                    Continue: "",
                    RemainingItemCount: nil,
                },
                Status: "",
                Message: "temporary failure",
                Reason: "",
                Details: nil,
                Code: 503,
            },
        },
    }

    true
2023-09-11 11:54:15 +02:00
carlory
f33265cf5d HandleRetry has already called in the GetObject 2023-09-07 15:48:18 +08:00
Kubernetes Prow Robot
d48fc2ad2d Merge pull request #119035 from saschagrunert/critical-pod
Fix `should be able to create and delete a critical pod` test
2023-07-06 00:51:03 -07:00
Patrick Ohly
c903c29c3b e2e: support admissionapi.LevelRestricted in test/e2e/framwork/pod
CreatePod and MakePod only accepted an `isPrivileged` boolean, which made it
impossible to write tests using those helpers which work in a default
framework.Framework, because the default there is LevelRestricted.

The simple boolean gets replaced with admissionapi.Level. Passing
LevelRestricted does the same as calling e2epod.MixinRestrictedPodSecurity.

Instead of explicitly passing a constant to these modified helpers, most tests
get updated to pass f.NamespacePodSecurityLevel. This has the advantage
that if that level gets lowered in the future, tests only need to be updated in
one place.

In some cases, helpers taking client+namespace+timeouts parameters get replaced
with passing the Framework instance to get access to
f.NamespacePodSecurityEnforceLevel. These helpers don't need separate
parameters because in practice all they ever used where the values from the
Framework instance.
2023-07-03 16:26:28 +02:00
Sascha Grunert
bcbc12cd79 Fix should be able to create and delete a critical pod test
The namespace the crictical pod was referring to was wrong, because it
was using the generated one instead of `kube-system`. This and the
resulting test condition is now fixed.

The test seems to run only in `ci-crio-cgroupv1-node-e2e-flaky` for now.

Closes https://github.com/kubernetes/kubernetes/issues/109296

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2023-07-03 11:15:59 +02:00
SataQiu
4d2ff08bfa e2e-framework: code cleanup for mismatched comments 2023-05-26 12:36:19 +08:00
carlory
20602c819b e2e framework: remove dependency on k8s.io/kubernetes/pkg/api/v1/pod 2023-05-12 08:39:37 +08:00
Ed Bartosh
ff9ebfa90d e2e framework: control k/k/pkg imports
Modified import restrictions for the e2e framework submodules
to enable control of the k/k/pkg imports.
2023-04-17 00:17:16 +03:00
Ed Bartosh
dc4f6f9da6 e2e framework: remove last dependency to k/k/pkg/util
Copied and modified RemoveString function from
k/k/pkg/util/slice/slice.go to e2e/framework/pod/pod_client.go

This is the last dependency from e2e framework to k/k/pkg/util
2023-04-15 14:28:32 +03:00
Ed Bartosh
40521fe360 e2e framework: remove last dependency to k/k/pkg/kubelet
Copied and modified pod format function from
k/k/pkg/kubelet/util/format/pod.go to e2e/framework/pod/pod_client.go

This is the last dependency from e2e framework to k/k/pkg/kubelet
2023-04-14 22:32:06 +03:00
Michal Wozniak
3d68f362c3 Give terminal phase correctly to all pods that will not be restarted 2023-03-16 21:25:29 +01:00
Patrick Ohly
fe59e091eb dependencies: ginkgo v2.9.1, gomega v1.27.4
They contain some nice-to-have improvements (for example, better printing of
errors with gomega/format.Object) but nothing that is critical right now.

"go mod tidy" was run manually in
staging/src/k8s.io/kms/internal/plugins/mock (https://github.com/kubernetes/kubernetes/pull/116613
not merged yet).
2023-03-14 22:26:27 +01:00
David Porter
c5a1f0188b test: Add node e2e test to verify static pod termination
Add node e2e test to verify that static pods can be started after a
previous static pod with the same config temporarily failed termination.

The scenario is:

1. Static pod is started
2. Static pod is deleted
3. Static pod termination fails (internally `syncTerminatedPod` fails)
4. At later time, pod termination should succeed
5. New static pod with the same config is (re)-added
6. New static pod is expected to start successfully

To repro this scenario, setup a pod using a NFS mount. The NFS server is
stopped which will result in volumes failing to unmount and
`syncTerminatedPod` to fail. The NFS server is later started, allowing
the volume to unmount successfully.

xref:

1. https://github.com/kubernetes/kubernetes/pull/113145#issuecomment-1289587988
2. https://github.com/kubernetes/kubernetes/pull/113065
3. https://github.com/kubernetes/kubernetes/pull/113093

Signed-off-by: David Porter <david@porter.me>
2023-03-03 10:00:48 -06:00