John Calabrese 2018-05-10 07:06:10 -04:00
parent 0ea07c4030
commit f415558c30
1 changed files with 46 additions and 42 deletions

View File

@ -17,6 +17,7 @@ limitations under the License.
package algorithmprovider package algorithmprovider
import ( import (
"fmt"
"testing" "testing"
utilfeature "k8s.io/apiserver/pkg/util/feature" utilfeature "k8s.io/apiserver/pkg/util/feature"
@ -44,44 +45,48 @@ func TestDefaultConfigExists(t *testing.T) {
func TestAlgorithmProviders(t *testing.T) { func TestAlgorithmProviders(t *testing.T) {
for _, pn := range algorithmProviderNames { for _, pn := range algorithmProviderNames {
p, err := factory.GetAlgorithmProvider(pn) t.Run(pn, func(t *testing.T) {
if err != nil { p, err := factory.GetAlgorithmProvider(pn)
t.Errorf("error retrieving '%s' provider: %v", pn, err) if err != nil {
break t.Fatalf("error retrieving provider: %v", err)
}
if len(p.PriorityFunctionKeys) == 0 {
t.Errorf("%s algorithm provider shouldn't have 0 priority functions", pn)
}
for _, pf := range p.PriorityFunctionKeys.List() {
if !factory.IsPriorityFunctionRegistered(pf) {
t.Errorf("priority function %s is not registered but is used in the %s algorithm provider", pf, pn)
} }
} if len(p.PriorityFunctionKeys) == 0 {
for _, fp := range p.FitPredicateKeys.List() { t.Errorf("algorithm provider shouldn't have 0 priority functions")
if !factory.IsFitPredicateRegistered(fp) {
t.Errorf("fit predicate %s is not registered but is used in the %s algorithm provider", fp, pn)
} }
} for _, pf := range p.PriorityFunctionKeys.List() {
t.Run(fmt.Sprintf("priorityfunction/%s", pf), func(t *testing.T) {
if !factory.IsPriorityFunctionRegistered(pf) {
t.Errorf("priority function is not registered but is used in the algorithm provider")
}
})
}
for _, fp := range p.FitPredicateKeys.List() {
t.Run(fmt.Sprintf("fitpredicate/%s", fp), func(t *testing.T) {
if !factory.IsFitPredicateRegistered(fp) {
t.Errorf("fit predicate is not registered but is used in the algorithm provider")
}
})
}
})
} }
} }
func TestApplyFeatureGates(t *testing.T) { func TestApplyFeatureGates(t *testing.T) {
for _, pn := range algorithmProviderNames { for _, pn := range algorithmProviderNames {
p, err := factory.GetAlgorithmProvider(pn) t.Run(pn, func(t *testing.T) {
if err != nil { p, err := factory.GetAlgorithmProvider(pn)
t.Errorf("Error retrieving '%s' provider: %v", pn, err) if err != nil {
break t.Fatalf("Error retrieving provider: %v", err)
} }
if !p.FitPredicateKeys.Has("CheckNodeCondition") { if !p.FitPredicateKeys.Has("CheckNodeCondition") {
t.Errorf("Failed to find predicate: 'CheckNodeCondition'") t.Fatalf("Failed to find predicate: 'CheckNodeCondition'")
break }
}
if !p.FitPredicateKeys.Has("PodToleratesNodeTaints") { if !p.FitPredicateKeys.Has("PodToleratesNodeTaints") {
t.Errorf("Failed to find predicate: 'PodToleratesNodeTaints'") t.Fatalf("Failed to find predicate: 'PodToleratesNodeTaints'")
break }
} })
} }
// Apply features for algorithm providers. // Apply features for algorithm providers.
@ -90,20 +95,19 @@ func TestApplyFeatureGates(t *testing.T) {
ApplyFeatureGates() ApplyFeatureGates()
for _, pn := range algorithmProviderNames { for _, pn := range algorithmProviderNames {
p, err := factory.GetAlgorithmProvider(pn) t.Run(pn, func(t *testing.T) {
if err != nil { p, err := factory.GetAlgorithmProvider(pn)
t.Errorf("Error retrieving '%s' provider: %v", pn, err) if err != nil {
break t.Fatalf("Error retrieving '%s' provider: %v", pn, err)
} }
if !p.FitPredicateKeys.Has("PodToleratesNodeTaints") { if !p.FitPredicateKeys.Has("PodToleratesNodeTaints") {
t.Errorf("Failed to find predicate: 'PodToleratesNodeTaints'") t.Fatalf("Failed to find predicate: 'PodToleratesNodeTaints'")
break }
}
if p.FitPredicateKeys.Has("CheckNodeCondition") { if p.FitPredicateKeys.Has("CheckNodeCondition") {
t.Errorf("Unexpected predicate: 'CheckNodeCondition'") t.Fatalf("Unexpected predicate: 'CheckNodeCondition'")
break }
} })
} }
} }