kube/features: improve unit testing known/registered features
Co-authored-by: Ben Luddy <bluddy@redhat.com>
This commit is contained in:
		
				
					committed by
					
						
						Ben Luddy
					
				
			
			
				
	
			
			
			
						parent
						
							995135973d
						
					
				
				
					commit
					8a32f346a0
				
			@@ -17,22 +17,56 @@ limitations under the License.
 | 
				
			|||||||
package features
 | 
					package features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
					 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
				
			||||||
 | 
						clientfeatures "k8s.io/client-go/features"
 | 
				
			||||||
 | 
						"k8s.io/component-base/featuregate"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestKubeFeatures(t *testing.T) {
 | 
					// TestKubeFeaturesRegistered tests that all kube features are registered.
 | 
				
			||||||
	features := utilfeature.DefaultFeatureGate.DeepCopy().GetAll()
 | 
					func TestKubeFeaturesRegistered(t *testing.T) {
 | 
				
			||||||
 | 
						registeredFeatures := utilfeature.DefaultFeatureGate.DeepCopy().GetAll()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for i := range features {
 | 
						for featureName := range defaultKubernetesFeatureGates {
 | 
				
			||||||
		featureName := string(i)
 | 
							if _, ok := registeredFeatures[featureName]; !ok {
 | 
				
			||||||
 | 
								t.Errorf("The feature gate %q is not registered in the DefaultFeatureGate", featureName)
 | 
				
			||||||
		if featureName == "AllAlpha" || featureName == "AllBeta" {
 | 
							}
 | 
				
			||||||
			continue
 | 
						}
 | 
				
			||||||
		}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if _, ok := defaultKubernetesFeatureGates[i]; !ok {
 | 
					// TestClientFeaturesRegistered tests that all client features are registered.
 | 
				
			||||||
			t.Errorf("The feature gate %q is not registered", featureName)
 | 
					func TestClientFeaturesRegistered(t *testing.T) {
 | 
				
			||||||
 | 
						onlyClientFg := featuregate.NewFeatureGate()
 | 
				
			||||||
 | 
						if err := clientfeatures.AddFeaturesToExistingFeatureGates(&clientAdapter{onlyClientFg}); err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						registeredFeatures := utilfeature.DefaultFeatureGate.DeepCopy().GetAll()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for featureName := range onlyClientFg.GetAll() {
 | 
				
			||||||
 | 
							if _, ok := registeredFeatures[featureName]; !ok {
 | 
				
			||||||
 | 
								t.Errorf("The client-go's feature gate %q is not registered in the DefaultFeatureGate", featureName)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TestAllRegisteredFeaturesExpected tests that the set of features actually registered does not
 | 
				
			||||||
 | 
					// include any features other than those on the list in this package or in client-go's feature
 | 
				
			||||||
 | 
					// package.
 | 
				
			||||||
 | 
					func TestAllRegisteredFeaturesExpected(t *testing.T) {
 | 
				
			||||||
 | 
						registeredFeatures := utilfeature.DefaultFeatureGate.DeepCopy().GetAll()
 | 
				
			||||||
 | 
						knownFeatureGates := featuregate.NewFeatureGate()
 | 
				
			||||||
 | 
						if err := clientfeatures.AddFeaturesToExistingFeatureGates(&clientAdapter{knownFeatureGates}); err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err := knownFeatureGates.Add(defaultKubernetesFeatureGates); err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						knownFeatures := knownFeatureGates.GetAll()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for registeredFeature := range registeredFeatures {
 | 
				
			||||||
 | 
							if _, ok := knownFeatures[registeredFeature]; !ok {
 | 
				
			||||||
 | 
								t.Errorf("The feature gate %q is not from known feature gates", registeredFeature)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user