Commit graph

189 commits

Author SHA1 Message Date
Tim Allclair
2e60e1407b Fix user namespace test cleanup race 2026-03-23 23:22:44 +00:00
Ayato Tokubi
3256f5175f cri-api: Add streaming RPCs for CRI list operations
Add server-side streaming RPCs to bypass the gRPC 16MB message size
limit on nodes with many containers/pods. This implements KEP-5825.

New RuntimeService streaming RPCs:
- StreamPodSandboxes
- StreamContainers
- StreamContainerStats
- StreamPodSandboxStats
- StreamPodSandboxMetrics

New ImageService streaming RPC:
- StreamImages

Each streaming RPC accepts the same filter as its unary counterpart
and streams results one item at a time.

Feature gate: CRIListStreaming
KEP: https://kep.k8s.io/5825

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Ayato Tokubi <atokubi@redhat.com>
2026-03-18 16:32:49 +00:00
Sergey Kanzhelev
f5efc1de14 add context to CRI API client and contextual logging per-call 2026-03-07 08:07:10 +00:00
Francesco Romani
9e50a1b638 e2e: node: move helpers in util.go
move generic helpers in the generic utilities file,
because this code is not topology-manager specific and we
lack a better place.

trivial code movement.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2026-02-18 16:34:26 +01:00
Francesco Romani
8d88146e2d e2e: node: add GinkgoHelper calls
use ginkgo.GinkgoHelper() in the helper functions for
more explicative stacktraces and failures.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2026-02-18 16:12:04 +01:00
Heba
aceb89debc
KEP-5471: Extend tolerations operators (#134665)
* Add numeric operations to tolerations

Signed-off-by: Heba Elayoty <heelayot@microsoft.com>

* code review feedback

Signed-off-by: Heba Elayoty <heelayot@microsoft.com>

* add default feature gate

Signed-off-by: Heba Elayoty <heelayot@microsoft.com>

* Add integration tests

Signed-off-by: Heba Elayoty <heelayot@microsoft.com>

* Add toleration value validation

Signed-off-by: Heba Elayoty <heelayot@microsoft.com>

* Add validate options for new operators

Signed-off-by: helayoty <heelayot@microsoft.com>

* Remove log

Signed-off-by: helayoty <heelayot@microsoft.com>

* Update feature gate check

Signed-off-by: helayoty <heelayot@microsoft.com>

* emove IsValidNumericString func

Signed-off-by: helayoty <heelayot@microsoft.com>

* Implement IsDecimalInteger

Signed-off-by: helayoty <heelayot@microsoft.com>

* code review feedback

Signed-off-by: helayoty <heelayot@microsoft.com>

* Add logs to v1/toleration

Signed-off-by: Heba Elayoty <heelayot@microsoft.com>
Signed-off-by: helayoty <heelayot@microsoft.com>

* Update integration tests and address code review feedback

Signed-off-by: helayoty <heelayot@microsoft.com>

* Add feature gate to the scheduler framework

Signed-off-by: helayoty <heelayot@microsoft.com>

* Remove extra test

Signed-off-by: helayoty <heelayot@microsoft.com>

* Fix integration test

Signed-off-by: helayoty <heelayot@microsoft.com>

* pass feature gate via TolerationsTolerateTaint

Signed-off-by: helayoty <heelayot@microsoft.com>

---------

Signed-off-by: Heba Elayoty <heelayot@microsoft.com>
Signed-off-by: helayoty <heelayot@microsoft.com>
2025-11-10 12:42:54 -08:00
Francesco Romani
30ca634386 e2e: node: cpumanager: push utilities in util.go
Push more utilities from cpu manager tests to util.go.
This time there is not a clear (or big enough)
them for this set of shared code blocks.

Trivial code movement, no intended behavioral changes.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2025-08-11 14:46:07 +02:00
Francesco Romani
1a4e289cfa e2e: node: split kubeletconfig utilities
Is not ideal to heve utilities source file or packages,
because these tend to be unfocused and attract unstructured
code, easily leading to a kitchesink approach.
So, let's start cleaning up by splitting the utilities
we have to deal with kubelet config in its own source file,
lacking bandwidth now for deeper refactorings.

Trivial code movement, no intended behavioral changes.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2025-08-11 14:46:02 +02:00
Daniel Shebib
179c4398f3 use defaultImage per OS 2025-07-01 23:17:51 -05:00
Jack Francis
53499d97ee prefer error over bool, prefer Should(gomega.Succeed())
Signed-off-by: Jack Francis <jackfrancis@gmail.com>
2025-03-13 16:15:24 -07:00
Jack Francis
d54ff7441e test: don't panic during an Eventually retry loop
Signed-off-by: Jack Francis <jackfrancis@gmail.com>
2025-03-13 13:57:55 -07:00
Sotiris Salloumis
c5fc4193bb Fix pod delete issues in podresize tests 2025-01-21 07:25:14 +01:00
zhifei92
cb74323e07 refactor: Simplify the code logic. 2024-12-03 20:31:09 +08:00
Ed Bartosh
3aa95dafea e2e_node: refactor stopping and restarting kubelet
Moved Kubelet health checks from test cases to the stopKubelet API.
This should make the API cleaner and easier to use.
2024-11-06 11:34:48 +02: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
Davanum Srinivas
f6836df520
[e2e-node] Cleanup pods after the test runs
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-07-09 16:53:28 -04:00
Itamar Holder
9f344f23fb Add NodeSwap as a node feature in nodefeature.go
Also, Remove wrong documentation about
tempSetCurrentKubeletConfig() returning bool

Signed-off-by: Itamar Holder <iholder@redhat.com>
2024-05-21 11:19:54 +03:00
Sascha Grunert
2aa9e76be1
Move pkg/kubelet/cri/remote to cri-client
Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2024-05-14 10:58:18 +02:00
Sascha Grunert
9c712466f6
Make remote runtime and image service logging independent
It's now possible to pass around the `*klog.Logger` which can also be
`nil` to disable logging at all.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2024-05-08 10:32:21 +02:00
Francesco Romani
181fb0da51 node: devicemgr: remove obsolete pre-1.20 checkpoint file support
In commit 2f426fdba6 we added
compatibility (and tests) to deal with pre-1.20 checkpoint files.
We are now well past the end of support for pre-1.20 kubelets,
so we can get rid of this code.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2024-04-15 14:01:56 +02:00
Ed Bartosh
9ce994af9f e2e_node: remove Dbus test case
The test case restarts dbus and systemd, which is considered dangerous
practice and caused slowdown of the test cases for CRI-O Serial jobs.
2024-03-20 18:38:11 +02:00
Peter Hunt
6cd78bc5fc node e2e: add image max gc test
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2024-02-19 14:44:20 -05:00
Peter Hunt
be7856e340 e2e_node: factor out waitForKubeletToStart
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2024-02-19 14:31:38 -05:00
Kevin Hannon
dd9c3358f5
Revert "podresources: e2e: force eager connection" 2023-10-16 09:46:04 -04:00
Kubernetes Prow Robot
38a1ec75f0
Merge pull request #119882 from ffromani/podres-client-wait
podresources: e2e: force eager connection
2023-10-12 15:59:55 +02:00
carlory
d5d7fb595e e2e_node: stop using deprecated framework.ExpectEqual 2023-10-09 16:42:42 +08:00
Kubernetes Prow Robot
7fb7e2625b
Merge pull request #120401 from shijinye/e2eclean-node-notequal
cleanup:e2e:stop using deprecated framework.ExpectNotEqual
2023-09-20 11:26:19 -07:00
Kubernetes Prow Robot
b27670dfbd
Merge pull request #118740 from saschagrunert/kubelet-label-types
Make kubelet label types public
2023-09-06 23:46:57 -07:00
Francesco Romani
2ea47038b9 podresources: e2e: force eager connection
Add and use more facilities to the *internal* podresources client.
Checking e2e test runs, we have quite some
```
rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial unix /var/lib/kubelet/pod-resources/kubelet.sock: connect: connection refused": rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial unix /var/lib/kubelet/pod-resources/kubelet.sock: connect: connection refused"
```

This is likely caused by kubelet restarts, which we do plenty in e2e tests,
combined with the fact gRPC does lazy connection AND we don't really
check the errors in client code - we just bubble them up.

While it's arguably bad we don't check properly error codes, it's also
true that in the main case, e2e tests, the functions should just never
fail besides few well known cases, we're connecting over a
super-reliable unix domain socket after all.

So, we centralize the fix adding a function (alongside with minor
cleanups) which wants to trigger and ensure the connection happens,
localizing the changes just here. The main advantage is this approach
is opt-in, composable, and doesn't leak gRPC details into the client
code.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2023-09-07 08:24:49 +02:00
jinye
a774887262 cleanup:e2e:stop using deprecated framework.ExpectNotEqual 2023-09-05 18:16:57 +08:00
Sascha Grunert
3bae26ae58
Check dbus error on container runtime start/stop
We should evaluate the error, otherwise we risk to hang indefinately on
waiting for the `reschan` in:

64939b66c6/test/e2e_node/util.go (L419)

We also increase the timeout, because it can take a bit longer for
runtimes to determinate depending on the work they have to be done on
running containers.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2023-07-10 13:45:40 +02:00
Sascha Grunert
a6554b9d5d
Make kubelet label types public
We use the label definitions in CRI-O, means we now make them public to
stop vendoring/copying this part of Kubernetes.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
2023-07-10 10:58:44 +02:00
Davanum Srinivas
931456a142
Simplify the node name for metrics - just use localhost
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-06-28 18:21:12 -04:00
Kubernetes Prow Robot
470889278f
Merge pull request #118910 from dims/better-url-for-scraping-metrics-from-kubelet
Better URL for scraping metrics from kubelet in node e2e tests
2023-06-27 16:00:41 -07:00
Davanum Srinivas
a75b00ea39
Better URL for scraping metrics from kubelet
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-06-27 16:14:59 -04:00
Davanum Srinivas
6c587b43e9
Cleanup pods at the end in Pod conditions e2e node test
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2023-06-27 09:36:00 -04:00
Todd Neal
28c573358b test for init container restarts
Refactor tests and add an additional one to ensure init containers
don't restart upon regular container restart.
2023-04-28 13:13:55 -05:00
Ed Bartosh
1b93abb9ba Move kubelet config API to e2e_node
This API is only used by e2e_node, moved it out of e2e framework.
2023-04-14 17:56:15 +03:00
Ed Bartosh
867be8fc3e get rid of e2e/framework -> k/k/pkg/kubelet dependency
It's conceptually wrong to have dependencies to k/k/pkg in
the e2e framework code. They should be moved to corresponding
packages, in this particular case to the test/e2e_node.
2023-04-14 00:28:33 +03:00
Sergey Kanzhelev
1e6281e4a2 first iteration to add standalone mode 2023-03-14 20:46:41 +00:00
David Porter
1c75c2cda8
test: Add e2e to verify static pod termination
Add a node e2e to verify that if a static pod is terminated while the
container runtime or CRI returns an error, the pod is eventually
terminated successfully.

This test serves as a regression test for k8s.io/issue/113145 which
fixes an issue where force deleted pods may not be terminated if the
container runtime fails during a `syncTerminatingPod`.

To test this behavior, start a static pod, stop the container runtime,
and later start the container runtime. The static pod is expected to
eventually terminate successfully.

To start and stop the container runtime, we need to find the container
runtime systemd unit name. Introduce a util function
`findContainerRuntimeServiceName` which finds the unit name by getting
the pid of the container runtime from the existing
`ContainerRuntimeProcessName` flag passed into node e2e and using
systemd dbus `GetUnitNameByPID` function to convert the pid of the
container runtime to a unit name. Using the unit name, introduce helper
functions to start and stop the container runtime.

Signed-off-by: David Porter <david@porter.me>
2023-03-03 10:00:48 -06:00
Kubernetes Prow Robot
59a7e34052
Merge pull request #115442 from bobbypage/unknown_pods_test
test: Add e2e node test to check for unknown pods
2023-03-01 19:08:55 -08:00
Patrick Ohly
136f89dfc5 e2e: use error wrapping with %w
The recently introduced failure handling in ExpectNoError depends on error
wrapping: if an error prefix gets added with `fmt.Errorf("foo: %v", err)`, then
ExpectNoError cannot detect that the root cause is an assertion failure and
then will add another useless "unexpected error" prefix and will not dump the
additional failure information (currently the backtrace inside the E2E
framework).

Instead of manually deciding on a case-by-case basis where %w is needed, all
error wrapping was updated automatically with

    sed -i "s/fmt.Errorf\(.*\): '*\(%s\|%v\)'*\",\(.* err)\)/fmt.Errorf\1: %w\",\3/" $(git grep -l 'fmt.Errorf' test/e2e*)

This may be unnecessary in some cases, but it's not wrong.
2023-02-06 15:39:13 +01:00
Antonio Ojea
7f5ae1c0c1
Revert "e2e: wait for pods with gomega" 2023-02-06 12:08:22 +01:00
David Porter
c2923c472d test: Move waitForAllContainerRemoval() into node e2e util
This is used across multiple tests, so let's move into the util file.

Also, refactor it a bit to provide a better error message in case of a
failure.

Signed-off-by: David Porter <david@porter.me>
2023-02-03 23:04:35 -08:00
Patrick Ohly
222f655062 e2e: use error wrapping with %w
The recently introduced failure handling in ExpectNoError depends on error
wrapping: if an error prefix gets added with `fmt.Errorf("foo: %v", err)`, then
ExpectNoError cannot detect that the root cause is an assertion failure and
then will add another useless "unexpected error" prefix and will not dump the
additional failure information (currently the backtrace inside the E2E
framework).

Instead of manually deciding on a case-by-case basis where %w is needed, all
error wrapping was updated automatically with

    sed -i "s/fmt.Errorf\(.*\): '*\(%s\|%v\)'*\",\(.* err)\)/fmt.Errorf\1: %w\",\3/" $(git grep -l 'fmt.Errorf' test/e2e*)

This may be unnecessary in some cases, but it's not wrong.
2023-01-31 13:01:39 +01:00
Patrick Ohly
2f6c4f5eab e2e: use Ginkgo context
All code must use the context from Ginkgo when doing API calls or polling for a
change, otherwise the code would not return immediately when the test gets
aborted.
2022-12-16 20:14:04 +01:00
Swagat Bora
caa83c25ae Support otel tracing in cri remote image service
Signed-off-by: Swagat Bora <sbora@amazon.com>
2022-09-29 22:15:07 +00:00
Sally O'Malley
47e7d8034f
kubelet tracing
Signed-off-by: Sally O'Malley <somalley@redhat.com>
Co-authored-by: David Ashpole <dashpole@google.com>
2022-08-01 12:55:02 -04:00