Unverified Commit 6a12a280 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #67409 from stewart-yu/stewart-controller-manager-codeclean#03

Automatic merge from submit-queue (batch tested with PRs 66884, 67410, 67229, 67409). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. kubeadm: coverage improvement about ValidateVersion function **What this PR does / why we need it**: In commit log :https://github.com/kubernetes/kubernetes/pull/63920/commits/2ef81576448c94b49546738aac94b70dc13b35d1, remove the `MinimumVersion support` for all featuregate, but the `MinimumVersion` still as a parameter in `Feature` struct for `future featuregate`. However,https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/features/features.go#L79-L87 still have judgement about `MinimumVersion` in `ValidateVersion` function, we also need test it. This PR make `test coverage` about `ValidateVersion` function from `20%` to `90%`. Details as below. Before changed, the `test coverage` are: ``` root@shap000101123:/ycj/kubernetes-community/src/k8s.io/kubernetes/cmd/kubeadm/app/features# go tool cover -func=size_coverage.out k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:71: ValidateVersion 20.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:92: Enabled 100.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:101: Supports 100.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:111: Keys 0.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:120: KnownFeatures 90.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:139: NewFeatureGate 94.1% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:171: ResolveFeatureGateDependencies 100.0% total: (statements) 73.1% ``` After change, the `test coverage` are: ``` root@shap000101123:/ycj/kubernetes-community/src/k8s.io/kubernetes/cmd/kubeadm/app/features# go tool cover -func=size_coverage.out k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:71: ValidateVersion 90.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:92: Enabled 100.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:101: Supports 100.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:111: Keys 0.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:120: KnownFeatures 90.0% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:139: NewFeatureGate 94.1% k8s.io/kubernetes/cmd/kubeadm/app/features/features.go:171: ResolveFeatureGateDependencies 100.0% total: (statements) 86.5% ``` **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: @luxas @neolit123 @fabriziopandini @dixudx **Release note**: ```release-note NONE ```
parents 2a81c37d 3975d9fd
......@@ -33,5 +33,8 @@ go_test(
name = "go_default_test",
srcs = ["features_test.go"],
embed = [":go_default_library"],
deps = ["//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library"],
deps = [
"//pkg/util/version:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
],
)
......@@ -170,14 +170,14 @@ func NewFeatureGate(f *FeatureList, value string) (map[string]bool, error) {
// ResolveFeatureGateDependencies resolve dependencies between feature gates
func ResolveFeatureGateDependencies(featureGate map[string]bool) {
// if StoreCertsInSecrets enabled, SelfHosting should enabled
if Enabled(featureGate, StoreCertsInSecrets) {
featureGate[SelfHosting] = true
// if HighAvailability enabled and StoreCertsInSecrets disabled, both StoreCertsInSecrets
// and SelfHosting should enabled
if Enabled(featureGate, HighAvailability) && !Enabled(featureGate, StoreCertsInSecrets) {
featureGate[StoreCertsInSecrets] = true
}
// if HighAvailability enabled, both StoreCertsInSecrets and SelfHosting should enabled
if Enabled(featureGate, HighAvailability) && !Enabled(featureGate, StoreCertsInSecrets) {
// if StoreCertsInSecrets enabled, SelfHosting should enabled
if Enabled(featureGate, StoreCertsInSecrets) {
featureGate[SelfHosting] = true
featureGate[StoreCertsInSecrets] = true
}
}
......@@ -21,8 +21,11 @@ import (
"testing"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/kubernetes/pkg/util/version"
)
var TestMinVersion = version.MustParseSemantic("v1.10.0-alpha.1")
func TestKnownFeatures(t *testing.T) {
var someFeatures = FeatureList{
"feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}},
......@@ -121,7 +124,7 @@ func TestNewFeatureGate(t *testing.T) {
func TestValidateVersion(t *testing.T) {
var someFeatures = FeatureList{
"feature1": {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Beta}},
"feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}},
"feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}, MinimumVersion: TestMinVersion},
}
var tests = []struct {
......@@ -133,10 +136,16 @@ func TestValidateVersion(t *testing.T) {
requestedFeatures: map[string]bool{"feature1": true},
expectedError: false,
},
{ //no min version
{ //min version but correct value given
requestedFeatures: map[string]bool{"feature2": true},
requestedVersion: "v1.10.0",
expectedError: false,
},
{ //min version and incorrect value given
requestedFeatures: map[string]bool{"feature2": true},
requestedVersion: "v1.9.2",
expectedError: true,
},
}
for _, test := range tests {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment