Itamar Holder
8a797e42e1
resource metrics e2e tests: expect swap node and container level stats
...
Signed-off-by: Itamar Holder <iholder@redhat.com >
2025-02-11 15:19:45 +02:00
Kevin Hannon
bae4122f56
deprecate nodefeature for feature labels
2025-01-20 17:02:59 -05:00
Kevin Hannon
8495df64b2
deprecate nodefeature for feature labels
2024-12-17 13:58:12 -05:00
Ed Bartosh
2ac5dfe379
e2e_node: check container metrics conditionally
...
When PodAndContainerStatsFromCRI FG is enabled, Kubelet tries to get
list of metrics from the CRI runtime using CRI API 'ListMetricDescriptors'.
As this API is not implemented in neither CRI-O nor Containerd versions
used in the test-infra, ResourceMetrics test case fails to gather
certain container metrics.
Excluding container metrics from the expected list of metrics if
PodAndContainerStatsFromCRI is enabled should solve the issue.
2024-10-23 21:08:36 +03:00
Francesco Romani
c025861e0c
node: metrics: add resource alignment metrics
...
In order to improve the observability of the resource management
in kubelet, cpu allocation and NUMA alignment, we add more metrics
to report if resource alignment is in effect.
The more precise reporting would probably be using pod status,
but this would require more invasive and riskier changes,
and possibly extra interactions to the APIServer.
We start adding metrics to report if containers got their
compute resources aligned.
If metrics are growing, the assingment is working as expected;
If metrics stay consistent, perhaps at zero, no resource
alignment is done.
Extra fixes brought by this work
- retroactively add labels for existing tests
- running metrics test demands precision accounting to avoid flakes;
ensure the node state is restored pristine between each test, to
minimize the aforementioned risk of flakes.
- The test pod command line was wrong, with this the pod could not
reach Running state. That gone unnoticed so far because
no test using this utility function actually needed a pod
in running state.
Signed-off-by: Francesco Romani <fromani@redhat.com >
2024-10-23 08:05:38 +02:00
ruiwen-zhao
ec9387da08
Remove scrape_error from resource_metrics_test due to deprecation
...
Signed-off-by: ruiwen-zhao <ruiwen@google.com >
2023-11-28 18:49:04 +00:00
Patrick Ohly
f2cfbf44b1
e2e: use framework labels
...
This changes the text registration so that tags for which the framework has a
dedicated API (features, feature gates, slow, serial, etc.) those APIs are
used.
Arbitrary, custom tags are still left in place for now.
2023-11-01 15:17:34 +01:00
Sascha Grunert
5e0931336b
kubelet: fix metric container_start_time_seconds's timestamp
...
Adapting the tests and reverting https://github.com/kubernetes/kubernetes/pull/103429
Carry-over from https://github.com/kubernetes/kubernetes/pull/117881
Signed-off-by: Sascha Grunert <sgrunert@redhat.com >
2023-09-08 09:13:37 +02:00
Todd Neal
b8512cfe24
expect the new resource_scape_error metric
2023-08-20 14:17:54 -05:00
Itamar Holder
ee82654e39
Add pod_swap_usage_bytes as an expected metric in e2e test
...
Use haveKeys() matcher from previous commit to ensure
required keys exist.
Signed-off-by: Itamar Holder <iholder@redhat.com >
2023-07-19 14:44:05 +03:00
Itamar Holder
81abfca407
Add a haveKeys() helper function to match multiple keys
...
Signed-off-by: Itamar Holder <iholder@redhat.com >
2023-07-19 14:44:04 +03:00
Kubernetes Prow Robot
2190775b69
Merge pull request #118280 from stlaz/e2e_psa_labels
...
Set all PSa labels in tests
2023-06-28 11:14:43 -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
Stanislav Laznicka
7f532891c9
e2e tests: set all PSa labels instead of just enforcing
2023-06-21 15:05:13 +02:00
Paco Xu
bbae445d17
fix metrics test with 1.16.0 prometheus client
2023-06-20 16:46:31 +08: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
Patrick Ohly
df5d84ae81
e2e: accept context from Ginkgo
...
Every ginkgo callback should return immediately when a timeout occurs or the
test run manually gets aborted with CTRL-C. To do that, they must take a ctx
parameter and pass it through to all code which might block.
This is a first automated step towards that: the additional parameter got added
with
sed -i 's/\(framework.ConformanceIt\|ginkgo.It\)\(.*\)func() {$/\1\2func(ctx context.Context) {/' \
$(git grep -l -e framework.ConformanceIt -e ginkgo.It )
$GOPATH/bin/goimports -w $(git status | grep modified: | sed -e 's/.* //')
log_test.go was left unchanged.
2022-12-10 19:50:18 +01:00
Patrick Ohly
dfdf88d4fa
e2e: adapt to moved code
...
This is the result of automatically editing source files like this:
go install golang.org/x/tools/cmd/goimports@latest
find ./test/e2e* -name "*.go" | xargs env PATH=$GOPATH/bin:$PATH ./e2e-framework-sed.sh
with e2e-framework-sed.sh containing this:
sed -i \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.ExecCommandInContainer(/e2epod.ExecCommandInContainer(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.ExecCommandInContainerWithFullOutput(/e2epod.ExecCommandInContainerWithFullOutput(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.ExecShellInContainer(/e2epod.ExecShellInContainer(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.ExecShellInPod(/e2epod.ExecShellInPod(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.ExecShellInPodWithFullOutput(/e2epod.ExecShellInPodWithFullOutput(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.ExecWithOptions(/e2epod.ExecWithOptions(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.MatchContainerOutput(/e2eoutput.MatchContainerOutput(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.PodClient(/e2epod.NewPodClient(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.PodClientNS(/e2epod.PodClientNS(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.TestContainerOutput(/e2eoutput.TestContainerOutput(\1, /" \
-e "s/\(f\|fr\|\w\w*\.[fF]\w*\)\.TestContainerOutputRegexp(/e2eoutput.TestContainerOutputRegexp(\1, /" \
-e "s/framework.AddOrUpdateLabelOnNode\b/e2enode.AddOrUpdateLabelOnNode/" \
-e "s/framework.AllNodes\b/e2edebug.AllNodes/" \
-e "s/framework.AllNodesReady\b/e2enode.AllNodesReady/" \
-e "s/framework.ContainerResourceGatherer\b/e2edebug.ContainerResourceGatherer/" \
-e "s/framework.ContainerResourceUsage\b/e2edebug.ContainerResourceUsage/" \
-e "s/framework.CreateEmptyFileOnPod\b/e2eoutput.CreateEmptyFileOnPod/" \
-e "s/framework.DefaultPodDeletionTimeout\b/e2epod.DefaultPodDeletionTimeout/" \
-e "s/framework.DumpAllNamespaceInfo\b/e2edebug.DumpAllNamespaceInfo/" \
-e "s/framework.DumpDebugInfo\b/e2eoutput.DumpDebugInfo/" \
-e "s/framework.DumpNodeDebugInfo\b/e2edebug.DumpNodeDebugInfo/" \
-e "s/framework.EtcdUpgrade\b/e2eproviders.EtcdUpgrade/" \
-e "s/framework.EventsLister\b/e2edebug.EventsLister/" \
-e "s/framework.ExecOptions\b/e2epod.ExecOptions/" \
-e "s/framework.ExpectNodeHasLabel\b/e2enode.ExpectNodeHasLabel/" \
-e "s/framework.ExpectNodeHasTaint\b/e2enode.ExpectNodeHasTaint/" \
-e "s/framework.GCEUpgradeScript\b/e2eproviders.GCEUpgradeScript/" \
-e "s/framework.ImagePrePullList\b/e2epod.ImagePrePullList/" \
-e "s/framework.KubectlBuilder\b/e2ekubectl.KubectlBuilder/" \
-e "s/framework.LocationParamGKE\b/e2eproviders.LocationParamGKE/" \
-e "s/framework.LogSizeDataTimeseries\b/e2edebug.LogSizeDataTimeseries/" \
-e "s/framework.LogSizeGatherer\b/e2edebug.LogSizeGatherer/" \
-e "s/framework.LogsSizeData\b/e2edebug.LogsSizeData/" \
-e "s/framework.LogsSizeDataSummary\b/e2edebug.LogsSizeDataSummary/" \
-e "s/framework.LogsSizeVerifier\b/e2edebug.LogsSizeVerifier/" \
-e "s/framework.LookForStringInLog\b/e2eoutput.LookForStringInLog/" \
-e "s/framework.LookForStringInPodExec\b/e2eoutput.LookForStringInPodExec/" \
-e "s/framework.LookForStringInPodExecToContainer\b/e2eoutput.LookForStringInPodExecToContainer/" \
-e "s/framework.MasterAndDNSNodes\b/e2edebug.MasterAndDNSNodes/" \
-e "s/framework.MasterNodes\b/e2edebug.MasterNodes/" \
-e "s/framework.MasterUpgradeGKE\b/e2eproviders.MasterUpgradeGKE/" \
-e "s/framework.NewKubectlCommand\b/e2ekubectl.NewKubectlCommand/" \
-e "s/framework.NewLogsVerifier\b/e2edebug.NewLogsVerifier/" \
-e "s/framework.NewNodeKiller\b/e2enode.NewNodeKiller/" \
-e "s/framework.NewResourceUsageGatherer\b/e2edebug.NewResourceUsageGatherer/" \
-e "s/framework.NodeHasTaint\b/e2enode.NodeHasTaint/" \
-e "s/framework.NodeKiller\b/e2enode.NodeKiller/" \
-e "s/framework.NodesSet\b/e2edebug.NodesSet/" \
-e "s/framework.PodClient\b/e2epod.PodClient/" \
-e "s/framework.RemoveLabelOffNode\b/e2enode.RemoveLabelOffNode/" \
-e "s/framework.ResourceConstraint\b/e2edebug.ResourceConstraint/" \
-e "s/framework.ResourceGathererOptions\b/e2edebug.ResourceGathererOptions/" \
-e "s/framework.ResourceUsagePerContainer\b/e2edebug.ResourceUsagePerContainer/" \
-e "s/framework.ResourceUsageSummary\b/e2edebug.ResourceUsageSummary/" \
-e "s/framework.RunHostCmd\b/e2eoutput.RunHostCmd/" \
-e "s/framework.RunHostCmdOrDie\b/e2eoutput.RunHostCmdOrDie/" \
-e "s/framework.RunHostCmdWithFullOutput\b/e2eoutput.RunHostCmdWithFullOutput/" \
-e "s/framework.RunHostCmdWithRetries\b/e2eoutput.RunHostCmdWithRetries/" \
-e "s/framework.RunKubectl\b/e2ekubectl.RunKubectl/" \
-e "s/framework.RunKubectlInput\b/e2ekubectl.RunKubectlInput/" \
-e "s/framework.RunKubectlOrDie\b/e2ekubectl.RunKubectlOrDie/" \
-e "s/framework.RunKubectlOrDieInput\b/e2ekubectl.RunKubectlOrDieInput/" \
-e "s/framework.RunKubectlWithFullOutput\b/e2ekubectl.RunKubectlWithFullOutput/" \
-e "s/framework.RunKubemciCmd\b/e2ekubectl.RunKubemciCmd/" \
-e "s/framework.RunKubemciWithKubeconfig\b/e2ekubectl.RunKubemciWithKubeconfig/" \
-e "s/framework.SingleContainerSummary\b/e2edebug.SingleContainerSummary/" \
-e "s/framework.SingleLogSummary\b/e2edebug.SingleLogSummary/" \
-e "s/framework.TimestampedSize\b/e2edebug.TimestampedSize/" \
-e "s/framework.WaitForAllNodesSchedulable\b/e2enode.WaitForAllNodesSchedulable/" \
-e "s/framework.WaitForSSHTunnels\b/e2enode.WaitForSSHTunnels/" \
-e "s/framework.WorkItem\b/e2edebug.WorkItem/" \
"$@"
for i in "$@"; do
# Import all sub packages and let goimports figure out which of those
# are redundant (= already imported) or not needed.
sed -i -e '/"k8s.io.kubernetes.test.e2e.framework"/a e2edebug "k8s.io/kubernetes/test/e2e/framework/debug"' "$i"
sed -i -e '/"k8s.io.kubernetes.test.e2e.framework"/a e2ekubectl "k8s.io/kubernetes/test/e2e/framework/kubectl"' "$i"
sed -i -e '/"k8s.io.kubernetes.test.e2e.framework"/a e2enode "k8s.io/kubernetes/test/e2e/framework/node"' "$i"
sed -i -e '/"k8s.io.kubernetes.test.e2e.framework"/a e2eoutput "k8s.io/kubernetes/test/e2e/framework/pod/output"' "$i"
sed -i -e '/"k8s.io.kubernetes.test.e2e.framework"/a e2epod "k8s.io/kubernetes/test/e2e/framework/pod"' "$i"
sed -i -e '/"k8s.io.kubernetes.test.e2e.framework"/a e2eproviders "k8s.io/kubernetes/test/e2e/framework/providers"' "$i"
goimports -w "$i"
done
2022-10-06 08:19:47 +02:00
Dave Chen
fd4b5b629b
Stop using the deprecated method CurrentGinkgoTestDescription
...
Besides, the using of method might lead to a `concurrent map writes`
issue per the discussion here: https://github.com/onsi/ginkgo/issues/970
Signed-off-by: Dave Chen <dave.chen@arm.com >
2022-07-08 10:46:11 +08:00
Dave Chen
857458cfa5
update ginkgo from v1 to v2 and gomega to 1.19.0
...
- update all the import statements
- run hack/pin-dependency.sh to change pinned dependency versions
- run hack/update-vendor.sh to update go.mod files and the vendor directory
- update the method signatures for custom reporters
Signed-off-by: Dave Chen <dave.chen@arm.com >
2022-07-08 10:44:46 +08:00
Sergiusz Urbaniak
1495c9f2cd
test/e2e/*: default existing tests to privileged pod security policy
...
This is to ensure that all existing tests don't break when defaulting
the pod security policy to restricted in the e2e test framework.
2022-04-05 08:41:12 +02:00
Sascha Grunert
2d0f99fba1
Fix resource metrics e2e test
...
Signed-off-by: Sascha Grunert <sgrunert@redhat.com >
2021-07-05 11:16:05 +02:00
sanwishe
43f8f58895
add containers starttime metrics for metrics/resource endpoint
...
Signed-off-by: sanwishe <jiang.mingzhi35@zte.com.cn >
2021-06-24 02:53:21 +08:00
wojtekt
a74737eb03
Mark remaining e2e_node tests with [sig-*] label
2021-02-23 20:11:09 +01:00
Kubernetes Prow Robot
d20e3246ba
Merge pull request #96574 from hasheddan/cleanup-resource-tests
...
Fix test name in e2e resource metrics api test
2020-11-14 05:09:04 -08:00
hasheddan
bf270d1070
Fix test name in e2e resource metrics api test
...
Updates resouce to resource.
Signed-off-by: hasheddan <georgedanielmangum@gmail.com >
2020-11-13 15:19:55 -06:00
hasheddan
56c104a440
Relax matching on pod_memory_working_set_bytes metrics
...
Relaxes matching of pod_memory_working_set_bytes metric so that we won't
error due to presence of other pods.
Signed-off-by: hasheddan <georgedanielmangum@gmail.com >
2020-11-13 12:29:54 -06:00
hasheddan
25a04096e8
Match pod resource metrics to pod not container
...
Update node resource metrics e2e tests to match pod metrics to pod
instread of containers.
Signed-off-by: hasheddan <georgedanielmangum@gmail.com >
2020-11-13 10:29:21 -06:00
Kubernetes Prow Robot
0e0cc1ead8
Merge pull request #95839 from egernst/pod-usage
...
resource-metrics: add pod/sandbox metrics to endpoint
2020-11-12 19:36:23 -08:00
Eric Ernst
b26b755e94
resource-metrics: add pod metrics e2e test
...
Signed-off-by: Eric Ernst <eric_ernst@apple.com >
2020-11-03 10:14:13 -08:00
Morgan Bauer
8936adc146
relax matcher for ResourceMetricsAPI test
...
Instead of requiring only exactly the pods created, allow other pods
to exist by ignoring any extra matches.
2020-08-31 09:53:33 -07:00
Morgan Bauer
916c73b8a5
update ResourceMetricsAPI node-e2e test
...
/metrics/resource/v1alpha1 was deprecated and moved to
/metrics/resource
Renames to remove v1alpha1 from function names and matcher variables.
Pod deletion was taking multiple minutes, so set GracePeriodSeconds to 0.
Commented restart loop during test pod startup.
Move ResourceMetricsAPI out of Orphans by giving it a NodeFeature tag.
API removed in 7b7c73b #88568
Test created 6051664 #73946
2020-08-14 11:28:35 -07:00
drfish
dfab6b637f
Update .import-aliases for e2e test framework
2020-03-25 11:40:02 +08:00
Mike Danese
76f8594378
more artisanal fixes
...
Most of these could have been refactored automatically but it wouldn't
have been uglier. The unsophisticated tooling left lots of unnecessary
struct -> pointer -> struct transitions.
2020-03-05 14:59:47 -08:00
SataQiu
d2bdf89a8b
fix golint issues in test/e2e_node
2019-11-26 16:26:55 +08:00
SataQiu
50bc528a7e
e2e: move LogFailedContainers out of e2e test framework util.go
2019-11-15 10:21:26 +08:00
David Zhu
f15cc60957
Update golang scientific notation using hack/update-gofmt.sh
2019-09-12 18:05:49 -07:00
carlory
d1290ffdef
clean up test code
2019-09-05 23:44:19 +08:00
SataQiu
641d330f89
e2e_node: clean up non-recommended import
2019-07-28 12:49:36 +08:00
Aaron Crickenberger
cb88d87dab
add import-alias for k8s.io/kubernetes/pkg/kubelet/apis/resourcemetrics/v1alpha1
2019-06-20 11:41:23 -07:00
SataQiu
d3a902ff5b
e2e refactor: cleanup Logf form framework/util
2019-05-24 16:39:46 +08:00
SataQiu
252cabf155
[e2e] test/e2e/framework/volume_util.go -> test/e2e/framework/volume/fixtures.go
2019-04-13 16:58:37 +08:00
David Ashpole
6051664c0f
add kubelet prometheus resource metrics endpoint
2019-03-07 15:39:37 -08:00