Fix swap feature gate check by introduting IsFeatureGateEnabled()

Signed-off-by: Itamar Holder <iholder@redhat.com>
This commit is contained in:
Itamar Holder 2024-02-28 11:57:14 +02:00
parent 959d01cbbf
commit 13403e836a
2 changed files with 13 additions and 4 deletions

View File

@ -56,8 +56,7 @@ func SkipUnlessAtLeast(value int, minValue int, message string) {
var featureGate featuregate.FeatureGate var featureGate featuregate.FeatureGate
// InitFeatureGates must be called in test suites that have a --feature-gates parameter. // InitFeatureGates must be called in test suites that have a --feature-gates parameter.
// If not called, SkipUnlessFeatureGateEnabled and SkipIfFeatureGateEnabled will // If not called, SkipUnlessFeatureGateEnabled will record a test failure.
// record a test failure.
func InitFeatureGates(defaults featuregate.FeatureGate, overrides map[string]bool) error { func InitFeatureGates(defaults featuregate.FeatureGate, overrides map[string]bool) error {
clone := defaults.DeepCopy() clone := defaults.DeepCopy()
if err := clone.SetFromMap(overrides); err != nil { if err := clone.SetFromMap(overrides); err != nil {
@ -67,6 +66,16 @@ func InitFeatureGates(defaults featuregate.FeatureGate, overrides map[string]boo
return nil return nil
} }
// IsFeatureGateEnabled can be used during e2e tests to figure out if a certain feature gate is enabled.
// This function is dependent on InitFeatureGates under the hood. Therefore, the test must be called with a
// --feature-gates parameter.
func IsFeatureGateEnabled(feature featuregate.Feature) bool {
if featureGate == nil {
framework.Failf("feature gate interface is not initialized")
}
return featureGate.Enabled(feature)
}
// SkipUnlessFeatureGateEnabled skips if the feature is disabled. // SkipUnlessFeatureGateEnabled skips if the feature is disabled.
// //
// Beware that this only works in test suites that have a --feature-gate // Beware that this only works in test suites that have a --feature-gate

View File

@ -19,6 +19,7 @@ package e2enode
import ( import (
"context" "context"
"fmt" "fmt"
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
"k8s.io/kubernetes/test/e2e/nodefeature" "k8s.io/kubernetes/test/e2e/nodefeature"
"path/filepath" "path/filepath"
"strconv" "strconv"
@ -29,7 +30,6 @@ import (
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/rand" "k8s.io/apimachinery/pkg/util/rand"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/types" "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
@ -147,7 +147,7 @@ func runPodAndWaitUntilScheduled(f *framework.Framework, pod *v1.Pod) *v1.Pod {
func isSwapFeatureGateEnabled() bool { func isSwapFeatureGateEnabled() bool {
ginkgo.By("figuring if NodeSwap feature gate is turned on") ginkgo.By("figuring if NodeSwap feature gate is turned on")
return utilfeature.DefaultFeatureGate.Enabled(features.NodeSwap) return e2eskipper.IsFeatureGateEnabled(features.NodeSwap)
} }
func readCgroupFile(f *framework.Framework, pod *v1.Pod, filename string) string { func readCgroupFile(f *framework.Framework, pod *v1.Pod, filename string) string {