Merge pull request #128923 from kannon92/drop-node-special-feature-node-e2e

[KEP-3041]: Drop NodeSpecialFeature and NodeAlphaFeature from e2e-node
This commit is contained in:
Kubernetes Prow Robot 2024-12-17 20:50:52 +01:00 committed by GitHub
commit bb24538ff5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 21 additions and 12 deletions

View File

@ -52,7 +52,7 @@ var (
cmd = []string{"/bin/sh", "-c", "sleep 1d"} cmd = []string{"/bin/sh", "-c", "sleep 1d"}
) )
var _ = SIGDescribe("Pod Level Resources", framework.WithSerial(), feature.PodLevelResources, "[NodeAlphaFeature:PodLevelResources]", func() { var _ = SIGDescribe("Pod Level Resources", framework.WithSerial(), feature.PodLevelResources, func() {
f := framework.NewDefaultFramework("pod-level-resources-tests") f := framework.NewDefaultFramework("pod-level-resources-tests")
f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged

View File

@ -1210,7 +1210,7 @@ func doPodResizeErrorTests() {
// Above tests are performed by doSheduletTests() and doPodResizeResourceQuotaTests() // Above tests are performed by doSheduletTests() and doPodResizeResourceQuotaTests()
// in test/e2e/node/pod_resize.go // in test/e2e/node/pod_resize.go
var _ = SIGDescribe("Pod InPlace Resize Container", feature.InPlacePodVerticalScaling, "[NodeAlphaFeature:InPlacePodVerticalScaling]", func() { var _ = SIGDescribe("Pod InPlace Resize Container", feature.InPlacePodVerticalScaling, func() {
f := framework.NewDefaultFramework("pod-resize-tests") f := framework.NewDefaultFramework("pod-resize-tests")
ginkgo.BeforeEach(func(ctx context.Context) { ginkgo.BeforeEach(func(ctx context.Context) {

View File

@ -110,6 +110,12 @@ var (
// is enabled such that passing CDI device IDs through CRI fields is supported // is enabled such that passing CDI device IDs through CRI fields is supported
DynamicResourceAllocation = framework.WithFeature(framework.ValidFeatures.Add("DynamicResourceAllocation")) DynamicResourceAllocation = framework.WithFeature(framework.ValidFeatures.Add("DynamicResourceAllocation"))
// owning-sig: sig-node
// kep: https://kep.k8s.io/4009
// DevicePluginCDIDevices tests the CDI feature which is GA.
// This label is used for https://testgrid.k8s.io/sig-node-cri-o#ci-crio-cdi-device-plugins
DevicePluginCDIDevices = framework.WithFeature(framework.ValidFeatures.Add("DevicePluginCDIDevices"))
// TODO: document the feature (owning SIG, when to use this feature for a test) // TODO: document the feature (owning SIG, when to use this feature for a test)
EphemeralStorage = framework.WithFeature(framework.ValidFeatures.Add("EphemeralStorage")) EphemeralStorage = framework.WithFeature(framework.ValidFeatures.Add("EphemeralStorage"))
@ -207,6 +213,9 @@ var (
// TODO: document the feature (owning SIG, when to use this feature for a test) // TODO: document the feature (owning SIG, when to use this feature for a test)
LocalStorageCapacityIsolationQuota = framework.WithFeature(framework.ValidFeatures.Add("LocalStorageCapacityIsolationQuota")) LocalStorageCapacityIsolationQuota = framework.WithFeature(framework.ValidFeatures.Add("LocalStorageCapacityIsolationQuota"))
// owning-sig: sig-node
// Marks a disruptive test for lock contention
LockContention = framework.WithFeature(framework.ValidFeatures.Add("LockContention"))
// TODO: document the feature (owning SIG, when to use this feature for a test) // TODO: document the feature (owning SIG, when to use this feature for a test)
MasterUpgrade = framework.WithFeature(framework.ValidFeatures.Add("MasterUpgrade")) MasterUpgrade = framework.WithFeature(framework.ValidFeatures.Add("MasterUpgrade"))

View File

@ -168,7 +168,7 @@ var _ = SIGDescribe("Density", framework.WithSerial(), framework.WithSlow(), fun
for _, testArg := range dTests { for _, testArg := range dTests {
itArg := testArg itArg := testArg
desc := fmt.Sprintf("latency/resource should be within limit when create %d pods with %v interval [Benchmark][NodeSpecialFeature:Benchmark]", itArg.podsNr, itArg.interval) desc := fmt.Sprintf("latency/resource should be within limit when create %d pods with %v interval [Benchmark]", itArg.podsNr, itArg.interval)
ginkgo.It(desc, func(ctx context.Context) { ginkgo.It(desc, func(ctx context.Context) {
itArg.createMethod = "batch" itArg.createMethod = "batch"
testInfo := getTestNodeInfo(f, itArg.getTestName(), desc) testInfo := getTestNodeInfo(f, itArg.getTestName(), desc)
@ -206,7 +206,7 @@ var _ = SIGDescribe("Density", framework.WithSerial(), framework.WithSlow(), fun
for _, testArg := range dTests { for _, testArg := range dTests {
itArg := testArg itArg := testArg
ginkgo.Context("", func() { ginkgo.Context("", func() {
desc := fmt.Sprintf("latency/resource should be within limit when create %d pods with %v interval (QPS %d) [Benchmark][NodeSpecialFeature:Benchmark]", itArg.podsNr, itArg.interval, itArg.APIQPSLimit) desc := fmt.Sprintf("latency/resource should be within limit when create %d pods with %v interval (QPS %d) [Benchmark]", itArg.podsNr, itArg.interval, itArg.APIQPSLimit)
// The latency caused by API QPS limit takes a large portion (up to ~33%) of e2e latency. // The latency caused by API QPS limit takes a large portion (up to ~33%) of e2e latency.
// It makes the pod startup latency of Kubelet (creation throughput as well) under-estimated. // It makes the pod startup latency of Kubelet (creation throughput as well) under-estimated.
// Here we set API QPS limit from default 5 to 60 in order to test real Kubelet performance. // Here we set API QPS limit from default 5 to 60 in order to test real Kubelet performance.

View File

@ -49,10 +49,10 @@ import (
kubeletpodresourcesv1 "k8s.io/kubelet/pkg/apis/podresources/v1" kubeletpodresourcesv1 "k8s.io/kubelet/pkg/apis/podresources/v1"
kubeletpodresourcesv1alpha1 "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" kubeletpodresourcesv1alpha1 "k8s.io/kubelet/pkg/apis/podresources/v1alpha1"
"k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/test/e2e/feature"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
e2enode "k8s.io/kubernetes/test/e2e/framework/node" e2enode "k8s.io/kubernetes/test/e2e/framework/node"
e2epod "k8s.io/kubernetes/test/e2e/framework/pod" e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
e2etestfiles "k8s.io/kubernetes/test/e2e/framework/testfiles" e2etestfiles "k8s.io/kubernetes/test/e2e/framework/testfiles"
"k8s.io/kubernetes/test/e2e/nodefeature" "k8s.io/kubernetes/test/e2e/nodefeature"
) )
@ -283,8 +283,7 @@ func testDevicePlugin(f *framework.Framework, pluginSockDir string) {
gomega.Expect(v1ResourcesForOurPod.Containers[0].Devices[0].DeviceIds).To(gomega.HaveLen(1)) gomega.Expect(v1ResourcesForOurPod.Containers[0].Devices[0].DeviceIds).To(gomega.HaveLen(1))
}) })
ginkgo.It("[NodeSpecialFeature:CDI] can make a CDI device accessible in a container", func(ctx context.Context) { f.It("can make a CDI device accessible in a container", feature.DevicePluginCDIDevices, func(ctx context.Context) {
e2eskipper.SkipUnlessFeatureGateEnabled(features.DevicePluginCDIDevices)
// check if CDI_DEVICE env variable is set // check if CDI_DEVICE env variable is set
// and only one correspondent device node /tmp/<CDI_DEVICE> is available inside a container // and only one correspondent device node /tmp/<CDI_DEVICE> is available inside a container
podObj := makeBusyboxPod(SampleDeviceResourceName, "[ $(ls /tmp/CDI-Dev-[1,2] | wc -l) -eq 1 -a -b /tmp/$CDI_DEVICE ]") podObj := makeBusyboxPod(SampleDeviceResourceName, "[ $(ls /tmp/CDI-Dev-[1,2] | wc -l) -eq 1 -a -b /tmp/$CDI_DEVICE ]")

View File

@ -18,7 +18,7 @@ limitations under the License.
E2E Node test for DRA (Dynamic Resource Allocation) E2E Node test for DRA (Dynamic Resource Allocation)
This test covers node-specific aspects of DRA This test covers node-specific aspects of DRA
The test can be run locally on Linux this way: The test can be run locally on Linux this way:
make test-e2e-node FOCUS='\[NodeAlphaFeature:DynamicResourceAllocation\]' SKIP='\[Flaky\]' PARALLELISM=1 \ make test-e2e-node FOCUS='\[Feature:DynamicResourceAllocation\]' SKIP='\[Flaky\]' PARALLELISM=1 \
TEST_ARGS='--feature-gates="DynamicResourceAllocation=true" --service-feature-gates="DynamicResourceAllocation=true" --runtime-config=api/all=true' TEST_ARGS='--feature-gates="DynamicResourceAllocation=true" --service-feature-gates="DynamicResourceAllocation=true" --runtime-config=api/all=true'
*/ */
@ -83,7 +83,7 @@ const (
retryTestTimeout = kubeletRetryPeriod + 30*time.Second retryTestTimeout = kubeletRetryPeriod + 30*time.Second
) )
var _ = framework.SIGDescribe("node")("DRA", feature.DynamicResourceAllocation, "[NodeAlphaFeature:DynamicResourceAllocation]", func() { var _ = framework.SIGDescribe("node")("DRA", feature.DynamicResourceAllocation, func() {
f := framework.NewDefaultFramework("dra-node") f := framework.NewDefaultFramework("dra-node")
f.NamespacePodSecurityLevel = admissionapi.LevelBaseline f.NamespacePodSecurityLevel = admissionapi.LevelBaseline

View File

@ -201,7 +201,7 @@ func getHugepagesTestPod(f *framework.Framework, limits v1.ResourceList, mounts
} }
// Serial because the test updates kubelet configuration. // Serial because the test updates kubelet configuration.
var _ = SIGDescribe("HugePages", framework.WithSerial(), feature.HugePages, "[NodeSpecialFeature:HugePages]", func() { var _ = SIGDescribe("HugePages", framework.WithSerial(), feature.HugePages, func() {
f := framework.NewDefaultFramework("hugepages-test") f := framework.NewDefaultFramework("hugepages-test")
f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged

View File

@ -27,6 +27,7 @@ import (
"github.com/onsi/ginkgo/v2" "github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega" "github.com/onsi/gomega"
"k8s.io/kubernetes/test/e2e/feature"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
) )
@ -34,9 +35,9 @@ const contentionLockFile = "/var/run/kubelet.lock"
// Kubelet Lock contention tests the lock contention feature. // Kubelet Lock contention tests the lock contention feature.
// Disruptive because the kubelet is restarted in the test. // Disruptive because the kubelet is restarted in the test.
// NodeSpecialFeature:LockContention because we don't want the test to be picked up by any other // Feature:LockContention because we don't want the test to be picked up by any other
// test suite, hence the unique name "LockContention". // test suite, hence the unique name "LockContention".
var _ = SIGDescribe("Lock contention", framework.WithSlow(), framework.WithDisruptive(), "[NodeSpecialFeature:LockContention]", func() { var _ = SIGDescribe("Lock contention", framework.WithSlow(), framework.WithDisruptive(), feature.LockContention, func() {
// Requires `--lock-file` & `--exit-on-lock-contention` flags to be set on the Kubelet. // Requires `--lock-file` & `--exit-on-lock-contention` flags to be set on the Kubelet.
ginkgo.It("Kubelet should stop when the test acquires the lock on lock file and restart once the lock is released", func(ctx context.Context) { ginkgo.It("Kubelet should stop when the test acquires the lock on lock file and restart once the lock is released", func(ctx context.Context) {