2015-08-11 15:03:35 -04:00
/ *
2016-06-02 20:25:58 -04:00
Copyright 2015 The Kubernetes Authors .
2015-08-11 15:03:35 -04:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
package defaults
import (
2016-08-18 02:07:26 -04:00
"fmt"
2015-08-11 15:03:35 -04:00
"reflect"
"testing"
2016-02-12 13:58:43 -05:00
"net/http/httptest"
2016-05-04 02:50:31 -04:00
"k8s.io/kubernetes/pkg/api"
2016-10-04 17:20:07 -04:00
"k8s.io/kubernetes/pkg/apimachinery/registered"
2016-10-05 04:40:39 -04:00
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
2016-02-12 13:58:43 -05:00
"k8s.io/kubernetes/pkg/client/restclient"
2016-01-22 00:06:52 -05:00
"k8s.io/kubernetes/pkg/runtime"
2016-08-18 02:07:26 -04:00
"k8s.io/kubernetes/pkg/util/sets"
2016-02-15 11:13:38 -05:00
utiltesting "k8s.io/kubernetes/pkg/util/testing"
2015-08-11 15:03:35 -04:00
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
latestschedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api/latest"
"k8s.io/kubernetes/plugin/pkg/scheduler/factory"
)
func TestCompatibility_v1_Scheduler ( t * testing . T ) {
// Add serialized versions of scheduler config that exercise available options to ensure compatibility between releases
schedulerFiles := map [ string ] struct {
JSON string
ExpectedPolicy schedulerapi . Policy
} {
2016-08-18 02:07:26 -04:00
// Do not change this JSON after the corresponding release has been tagged.
// A failure indicates backwards compatibility with the specified release was broken.
2015-08-11 15:03:35 -04:00
"1.0" : {
JSON : ` {
2015-10-05 22:57:07 -04:00
"kind" : "Policy" ,
"apiVersion" : "v1" ,
2015-08-11 15:03:35 -04:00
"predicates" : [
{ "name" : "MatchNodeSelector" } ,
{ "name" : "PodFitsResources" } ,
{ "name" : "PodFitsPorts" } ,
{ "name" : "NoDiskConflict" } ,
{ "name" : "TestServiceAffinity" , "argument" : { "serviceAffinity" : { "labels" : [ "region" ] } } } ,
{ "name" : "TestLabelsPresence" , "argument" : { "labelsPresence" : { "labels" : [ "foo" ] , "presence" : true } } }
] , "priorities" : [
{ "name" : "LeastRequestedPriority" , "weight" : 1 } ,
{ "name" : "ServiceSpreadingPriority" , "weight" : 2 } ,
{ "name" : "TestServiceAntiAffinity" , "weight" : 3 , "argument" : { "serviceAntiAffinity" : { "label" : "zone" } } } ,
{ "name" : "TestLabelPreference" , "weight" : 4 , "argument" : { "labelPreference" : { "label" : "bar" , "presence" : true } } }
]
} ` ,
ExpectedPolicy : schedulerapi . Policy {
Predicates : [ ] schedulerapi . PredicatePolicy {
{ Name : "MatchNodeSelector" } ,
{ Name : "PodFitsResources" } ,
{ Name : "PodFitsPorts" } ,
{ Name : "NoDiskConflict" } ,
{ Name : "TestServiceAffinity" , Argument : & schedulerapi . PredicateArgument { ServiceAffinity : & schedulerapi . ServiceAffinity { Labels : [ ] string { "region" } } } } ,
{ Name : "TestLabelsPresence" , Argument : & schedulerapi . PredicateArgument { LabelsPresence : & schedulerapi . LabelsPresence { Labels : [ ] string { "foo" } , Presence : true } } } ,
} ,
Priorities : [ ] schedulerapi . PriorityPolicy {
{ Name : "LeastRequestedPriority" , Weight : 1 } ,
{ Name : "ServiceSpreadingPriority" , Weight : 2 } ,
{ Name : "TestServiceAntiAffinity" , Weight : 3 , Argument : & schedulerapi . PriorityArgument { ServiceAntiAffinity : & schedulerapi . ServiceAntiAffinity { Label : "zone" } } } ,
{ Name : "TestLabelPreference" , Weight : 4 , Argument : & schedulerapi . PriorityArgument { LabelPreference : & schedulerapi . LabelPreference { Label : "bar" , Presence : true } } } ,
} ,
} ,
} ,
2016-08-18 02:07:26 -04:00
// Do not change this JSON after the corresponding release has been tagged.
// A failure indicates backwards compatibility with the specified release was broken.
2015-08-11 15:03:35 -04:00
"1.1" : {
JSON : ` {
2015-10-05 22:57:07 -04:00
"kind" : "Policy" ,
"apiVersion" : "v1" ,
2015-09-29 05:44:26 -04:00
"predicates" : [
2016-08-18 02:07:26 -04:00
{ "name" : "MatchNodeSelector" } ,
{ "name" : "PodFitsHostPorts" } ,
{ "name" : "PodFitsResources" } ,
{ "name" : "NoDiskConflict" } ,
{ "name" : "HostName" } ,
{ "name" : "TestServiceAffinity" , "argument" : { "serviceAffinity" : { "labels" : [ "region" ] } } } ,
{ "name" : "TestLabelsPresence" , "argument" : { "labelsPresence" : { "labels" : [ "foo" ] , "presence" : true } } }
2015-09-29 05:44:26 -04:00
] , "priorities" : [
2016-08-18 02:07:26 -04:00
{ "name" : "EqualPriority" , "weight" : 2 } ,
{ "name" : "LeastRequestedPriority" , "weight" : 2 } ,
{ "name" : "BalancedResourceAllocation" , "weight" : 2 } ,
{ "name" : "SelectorSpreadPriority" , "weight" : 2 } ,
{ "name" : "TestServiceAntiAffinity" , "weight" : 3 , "argument" : { "serviceAntiAffinity" : { "label" : "zone" } } } ,
{ "name" : "TestLabelPreference" , "weight" : 4 , "argument" : { "labelPreference" : { "label" : "bar" , "presence" : true } } }
2015-08-11 15:03:35 -04:00
]
} ` ,
ExpectedPolicy : schedulerapi . Policy {
2015-09-29 05:44:26 -04:00
Predicates : [ ] schedulerapi . PredicatePolicy {
2016-08-18 02:07:26 -04:00
{ Name : "MatchNodeSelector" } ,
{ Name : "PodFitsHostPorts" } ,
{ Name : "PodFitsResources" } ,
{ Name : "NoDiskConflict" } ,
{ Name : "HostName" } ,
{ Name : "TestServiceAffinity" , Argument : & schedulerapi . PredicateArgument { ServiceAffinity : & schedulerapi . ServiceAffinity { Labels : [ ] string { "region" } } } } ,
{ Name : "TestLabelsPresence" , Argument : & schedulerapi . PredicateArgument { LabelsPresence : & schedulerapi . LabelsPresence { Labels : [ ] string { "foo" } , Presence : true } } } ,
} ,
Priorities : [ ] schedulerapi . PriorityPolicy {
{ Name : "EqualPriority" , Weight : 2 } ,
{ Name : "LeastRequestedPriority" , Weight : 2 } ,
{ Name : "BalancedResourceAllocation" , Weight : 2 } ,
{ Name : "SelectorSpreadPriority" , Weight : 2 } ,
{ Name : "TestServiceAntiAffinity" , Weight : 3 , Argument : & schedulerapi . PriorityArgument { ServiceAntiAffinity : & schedulerapi . ServiceAntiAffinity { Label : "zone" } } } ,
{ Name : "TestLabelPreference" , Weight : 4 , Argument : & schedulerapi . PriorityArgument { LabelPreference : & schedulerapi . LabelPreference { Label : "bar" , Presence : true } } } ,
} ,
} ,
} ,
// Do not change this JSON after the corresponding release has been tagged.
// A failure indicates backwards compatibility with the specified release was broken.
"1.2" : {
JSON : ` {
"kind" : "Policy" ,
"apiVersion" : "v1" ,
"predicates" : [
{ "name" : "MatchNodeSelector" } ,
{ "name" : "PodFitsResources" } ,
{ "name" : "PodFitsHostPorts" } ,
{ "name" : "HostName" } ,
{ "name" : "NoDiskConflict" } ,
{ "name" : "NoVolumeZoneConflict" } ,
{ "name" : "MaxEBSVolumeCount" } ,
{ "name" : "MaxGCEPDVolumeCount" } ,
{ "name" : "TestServiceAffinity" , "argument" : { "serviceAffinity" : { "labels" : [ "region" ] } } } ,
{ "name" : "TestLabelsPresence" , "argument" : { "labelsPresence" : { "labels" : [ "foo" ] , "presence" : true } } }
] , "priorities" : [
{ "name" : "EqualPriority" , "weight" : 2 } ,
{ "name" : "NodeAffinityPriority" , "weight" : 2 } ,
{ "name" : "ImageLocalityPriority" , "weight" : 2 } ,
{ "name" : "LeastRequestedPriority" , "weight" : 2 } ,
{ "name" : "BalancedResourceAllocation" , "weight" : 2 } ,
{ "name" : "SelectorSpreadPriority" , "weight" : 2 } ,
{ "name" : "TestServiceAntiAffinity" , "weight" : 3 , "argument" : { "serviceAntiAffinity" : { "label" : "zone" } } } ,
{ "name" : "TestLabelPreference" , "weight" : 4 , "argument" : { "labelPreference" : { "label" : "bar" , "presence" : true } } }
]
} ` ,
ExpectedPolicy : schedulerapi . Policy {
Predicates : [ ] schedulerapi . PredicatePolicy {
{ Name : "MatchNodeSelector" } ,
{ Name : "PodFitsResources" } ,
{ Name : "PodFitsHostPorts" } ,
{ Name : "HostName" } ,
{ Name : "NoDiskConflict" } ,
{ Name : "NoVolumeZoneConflict" } ,
{ Name : "MaxEBSVolumeCount" } ,
{ Name : "MaxGCEPDVolumeCount" } ,
{ Name : "TestServiceAffinity" , Argument : & schedulerapi . PredicateArgument { ServiceAffinity : & schedulerapi . ServiceAffinity { Labels : [ ] string { "region" } } } } ,
{ Name : "TestLabelsPresence" , Argument : & schedulerapi . PredicateArgument { LabelsPresence : & schedulerapi . LabelsPresence { Labels : [ ] string { "foo" } , Presence : true } } } ,
} ,
Priorities : [ ] schedulerapi . PriorityPolicy {
{ Name : "EqualPriority" , Weight : 2 } ,
{ Name : "NodeAffinityPriority" , Weight : 2 } ,
{ Name : "ImageLocalityPriority" , Weight : 2 } ,
{ Name : "LeastRequestedPriority" , Weight : 2 } ,
{ Name : "BalancedResourceAllocation" , Weight : 2 } ,
{ Name : "SelectorSpreadPriority" , Weight : 2 } ,
{ Name : "TestServiceAntiAffinity" , Weight : 3 , Argument : & schedulerapi . PriorityArgument { ServiceAntiAffinity : & schedulerapi . ServiceAntiAffinity { Label : "zone" } } } ,
{ Name : "TestLabelPreference" , Weight : 4 , Argument : & schedulerapi . PriorityArgument { LabelPreference : & schedulerapi . LabelPreference { Label : "bar" , Presence : true } } } ,
} ,
} ,
} ,
// Do not change this JSON after the corresponding release has been tagged.
// A failure indicates backwards compatibility with the specified release was broken.
"1.3" : {
JSON : ` {
"kind" : "Policy" ,
"apiVersion" : "v1" ,
"predicates" : [
{ "name" : "MatchNodeSelector" } ,
{ "name" : "PodFitsResources" } ,
{ "name" : "PodFitsHostPorts" } ,
{ "name" : "HostName" } ,
{ "name" : "NoDiskConflict" } ,
{ "name" : "NoVolumeZoneConflict" } ,
{ "name" : "PodToleratesNodeTaints" } ,
{ "name" : "CheckNodeMemoryPressure" } ,
{ "name" : "MaxEBSVolumeCount" } ,
{ "name" : "MaxGCEPDVolumeCount" } ,
{ "name" : "MatchInterPodAffinity" } ,
{ "name" : "GeneralPredicates" } ,
{ "name" : "TestServiceAffinity" , "argument" : { "serviceAffinity" : { "labels" : [ "region" ] } } } ,
{ "name" : "TestLabelsPresence" , "argument" : { "labelsPresence" : { "labels" : [ "foo" ] , "presence" : true } } }
] , "priorities" : [
{ "name" : "EqualPriority" , "weight" : 2 } ,
{ "name" : "ImageLocalityPriority" , "weight" : 2 } ,
{ "name" : "LeastRequestedPriority" , "weight" : 2 } ,
{ "name" : "BalancedResourceAllocation" , "weight" : 2 } ,
{ "name" : "SelectorSpreadPriority" , "weight" : 2 } ,
{ "name" : "NodeAffinityPriority" , "weight" : 2 } ,
{ "name" : "TaintTolerationPriority" , "weight" : 2 } ,
{ "name" : "InterPodAffinityPriority" , "weight" : 2 }
]
} ` ,
ExpectedPolicy : schedulerapi . Policy {
Predicates : [ ] schedulerapi . PredicatePolicy {
{ Name : "MatchNodeSelector" } ,
{ Name : "PodFitsResources" } ,
2015-09-29 05:44:26 -04:00
{ Name : "PodFitsHostPorts" } ,
2016-08-18 02:07:26 -04:00
{ Name : "HostName" } ,
{ Name : "NoDiskConflict" } ,
{ Name : "NoVolumeZoneConflict" } ,
{ Name : "PodToleratesNodeTaints" } ,
{ Name : "CheckNodeMemoryPressure" } ,
{ Name : "MaxEBSVolumeCount" } ,
{ Name : "MaxGCEPDVolumeCount" } ,
{ Name : "MatchInterPodAffinity" } ,
{ Name : "GeneralPredicates" } ,
{ Name : "TestServiceAffinity" , Argument : & schedulerapi . PredicateArgument { ServiceAffinity : & schedulerapi . ServiceAffinity { Labels : [ ] string { "region" } } } } ,
{ Name : "TestLabelsPresence" , Argument : & schedulerapi . PredicateArgument { LabelsPresence : & schedulerapi . LabelsPresence { Labels : [ ] string { "foo" } , Presence : true } } } ,
2015-09-29 05:44:26 -04:00
} ,
2015-08-11 15:03:35 -04:00
Priorities : [ ] schedulerapi . PriorityPolicy {
2016-08-18 02:07:26 -04:00
{ Name : "EqualPriority" , Weight : 2 } ,
{ Name : "ImageLocalityPriority" , Weight : 2 } ,
{ Name : "LeastRequestedPriority" , Weight : 2 } ,
{ Name : "BalancedResourceAllocation" , Weight : 2 } ,
2015-08-11 15:03:35 -04:00
{ Name : "SelectorSpreadPriority" , Weight : 2 } ,
2016-08-18 02:07:26 -04:00
{ Name : "NodeAffinityPriority" , Weight : 2 } ,
{ Name : "TaintTolerationPriority" , Weight : 2 } ,
{ Name : "InterPodAffinityPriority" , Weight : 2 } ,
} ,
} ,
} ,
// Do not change this JSON after the corresponding release has been tagged.
// A failure indicates backwards compatibility with the specified release was broken.
"1.4" : {
JSON : ` {
"kind" : "Policy" ,
"apiVersion" : "v1" ,
"predicates" : [
{ "name" : "MatchNodeSelector" } ,
{ "name" : "PodFitsResources" } ,
{ "name" : "PodFitsHostPorts" } ,
{ "name" : "HostName" } ,
{ "name" : "NoDiskConflict" } ,
{ "name" : "NoVolumeZoneConflict" } ,
{ "name" : "PodToleratesNodeTaints" } ,
{ "name" : "CheckNodeMemoryPressure" } ,
{ "name" : "CheckNodeDiskPressure" } ,
{ "name" : "MaxEBSVolumeCount" } ,
{ "name" : "MaxGCEPDVolumeCount" } ,
{ "name" : "MatchInterPodAffinity" } ,
{ "name" : "GeneralPredicates" } ,
{ "name" : "TestServiceAffinity" , "argument" : { "serviceAffinity" : { "labels" : [ "region" ] } } } ,
{ "name" : "TestLabelsPresence" , "argument" : { "labelsPresence" : { "labels" : [ "foo" ] , "presence" : true } } }
] , "priorities" : [
{ "name" : "EqualPriority" , "weight" : 2 } ,
{ "name" : "ImageLocalityPriority" , "weight" : 2 } ,
{ "name" : "LeastRequestedPriority" , "weight" : 2 } ,
{ "name" : "BalancedResourceAllocation" , "weight" : 2 } ,
{ "name" : "SelectorSpreadPriority" , "weight" : 2 } ,
{ "name" : "NodePreferAvoidPodsPriority" , "weight" : 2 } ,
{ "name" : "NodeAffinityPriority" , "weight" : 2 } ,
{ "name" : "TaintTolerationPriority" , "weight" : 2 } ,
{ "name" : "InterPodAffinityPriority" , "weight" : 2 } ,
{ "name" : "MostRequestedPriority" , "weight" : 2 }
]
} ` ,
ExpectedPolicy : schedulerapi . Policy {
Predicates : [ ] schedulerapi . PredicatePolicy {
{ Name : "MatchNodeSelector" } ,
{ Name : "PodFitsResources" } ,
{ Name : "PodFitsHostPorts" } ,
{ Name : "HostName" } ,
{ Name : "NoDiskConflict" } ,
{ Name : "NoVolumeZoneConflict" } ,
{ Name : "PodToleratesNodeTaints" } ,
{ Name : "CheckNodeMemoryPressure" } ,
{ Name : "CheckNodeDiskPressure" } ,
{ Name : "MaxEBSVolumeCount" } ,
{ Name : "MaxGCEPDVolumeCount" } ,
{ Name : "MatchInterPodAffinity" } ,
{ Name : "GeneralPredicates" } ,
{ Name : "TestServiceAffinity" , Argument : & schedulerapi . PredicateArgument { ServiceAffinity : & schedulerapi . ServiceAffinity { Labels : [ ] string { "region" } } } } ,
{ Name : "TestLabelsPresence" , Argument : & schedulerapi . PredicateArgument { LabelsPresence : & schedulerapi . LabelsPresence { Labels : [ ] string { "foo" } , Presence : true } } } ,
} ,
Priorities : [ ] schedulerapi . PriorityPolicy {
{ Name : "EqualPriority" , Weight : 2 } ,
{ Name : "ImageLocalityPriority" , Weight : 2 } ,
{ Name : "LeastRequestedPriority" , Weight : 2 } ,
{ Name : "BalancedResourceAllocation" , Weight : 2 } ,
{ Name : "SelectorSpreadPriority" , Weight : 2 } ,
{ Name : "NodePreferAvoidPodsPriority" , Weight : 2 } ,
{ Name : "NodeAffinityPriority" , Weight : 2 } ,
{ Name : "TaintTolerationPriority" , Weight : 2 } ,
{ Name : "InterPodAffinityPriority" , Weight : 2 } ,
2016-09-22 10:34:08 -04:00
{ Name : "MostRequestedPriority" , Weight : 2 } ,
} ,
} ,
} ,
// Do not change this JSON after the corresponding release has been tagged.
// A failure indicates backwards compatibility with the specified release was broken.
"1.5" : {
JSON : ` {
"kind" : "Policy" ,
"apiVersion" : "v1" ,
"predicates" : [
{ "name" : "MatchNodeSelector" } ,
{ "name" : "PodFitsResources" } ,
{ "name" : "PodFitsHostPorts" } ,
{ "name" : "HostName" } ,
{ "name" : "NoDiskConflict" } ,
{ "name" : "NoVolumeZoneConflict" } ,
{ "name" : "PodToleratesNodeTaints" } ,
{ "name" : "CheckNodeMemoryPressure" } ,
{ "name" : "CheckNodeDiskPressure" } ,
{ "name" : "CheckNodeInodePressure" } ,
{ "name" : "MaxEBSVolumeCount" } ,
{ "name" : "MaxGCEPDVolumeCount" } ,
{ "name" : "MatchInterPodAffinity" } ,
{ "name" : "GeneralPredicates" } ,
{ "name" : "TestServiceAffinity" , "argument" : { "serviceAffinity" : { "labels" : [ "region" ] } } } ,
{ "name" : "TestLabelsPresence" , "argument" : { "labelsPresence" : { "labels" : [ "foo" ] , "presence" : true } } }
] , "priorities" : [
{ "name" : "EqualPriority" , "weight" : 2 } ,
{ "name" : "ImageLocalityPriority" , "weight" : 2 } ,
{ "name" : "LeastRequestedPriority" , "weight" : 2 } ,
{ "name" : "BalancedResourceAllocation" , "weight" : 2 } ,
{ "name" : "SelectorSpreadPriority" , "weight" : 2 } ,
{ "name" : "NodePreferAvoidPodsPriority" , "weight" : 2 } ,
{ "name" : "NodeAffinityPriority" , "weight" : 2 } ,
{ "name" : "TaintTolerationPriority" , "weight" : 2 } ,
{ "name" : "InterPodAffinityPriority" , "weight" : 2 } ,
{ "name" : "MostRequestedPriority" , "weight" : 2 }
]
} ` ,
ExpectedPolicy : schedulerapi . Policy {
Predicates : [ ] schedulerapi . PredicatePolicy {
{ Name : "MatchNodeSelector" } ,
{ Name : "PodFitsResources" } ,
{ Name : "PodFitsHostPorts" } ,
{ Name : "HostName" } ,
{ Name : "NoDiskConflict" } ,
{ Name : "NoVolumeZoneConflict" } ,
{ Name : "PodToleratesNodeTaints" } ,
{ Name : "CheckNodeMemoryPressure" } ,
{ Name : "CheckNodeDiskPressure" } ,
{ Name : "CheckNodeInodePressure" } ,
{ Name : "MaxEBSVolumeCount" } ,
{ Name : "MaxGCEPDVolumeCount" } ,
{ Name : "MatchInterPodAffinity" } ,
{ Name : "GeneralPredicates" } ,
{ Name : "TestServiceAffinity" , Argument : & schedulerapi . PredicateArgument { ServiceAffinity : & schedulerapi . ServiceAffinity { Labels : [ ] string { "region" } } } } ,
{ Name : "TestLabelsPresence" , Argument : & schedulerapi . PredicateArgument { LabelsPresence : & schedulerapi . LabelsPresence { Labels : [ ] string { "foo" } , Presence : true } } } ,
} ,
Priorities : [ ] schedulerapi . PriorityPolicy {
{ Name : "EqualPriority" , Weight : 2 } ,
{ Name : "ImageLocalityPriority" , Weight : 2 } ,
{ Name : "LeastRequestedPriority" , Weight : 2 } ,
{ Name : "BalancedResourceAllocation" , Weight : 2 } ,
{ Name : "SelectorSpreadPriority" , Weight : 2 } ,
{ Name : "NodePreferAvoidPodsPriority" , Weight : 2 } ,
{ Name : "NodeAffinityPriority" , Weight : 2 } ,
{ Name : "TaintTolerationPriority" , Weight : 2 } ,
{ Name : "InterPodAffinityPriority" , Weight : 2 } ,
2016-08-18 02:07:26 -04:00
{ Name : "MostRequestedPriority" , Weight : 2 } ,
2015-08-11 15:03:35 -04:00
} ,
} ,
} ,
}
2016-08-18 02:07:26 -04:00
registeredPredicates := sets . NewString ( factory . ListRegisteredFitPredicates ( ) ... )
registeredPriorities := sets . NewString ( factory . ListRegisteredPriorityFunctions ( ) ... )
seenPredicates := sets . NewString ( )
seenPriorities := sets . NewString ( )
2015-08-11 15:03:35 -04:00
for v , tc := range schedulerFiles {
2016-08-18 02:07:26 -04:00
fmt . Printf ( "%s: Testing scheduler config\n" , v )
2015-08-11 15:03:35 -04:00
policy := schedulerapi . Policy { }
2016-01-22 00:06:52 -05:00
if err := runtime . DecodeInto ( latestschedulerapi . Codec , [ ] byte ( tc . JSON ) , & policy ) ; err != nil {
2015-08-11 15:03:35 -04:00
t . Errorf ( "%s: Error decoding: %v" , v , err )
continue
}
2016-08-18 02:07:26 -04:00
for _ , predicate := range policy . Predicates {
seenPredicates . Insert ( predicate . Name )
}
for _ , priority := range policy . Priorities {
seenPriorities . Insert ( priority . Name )
}
2015-08-11 15:03:35 -04:00
if ! reflect . DeepEqual ( policy , tc . ExpectedPolicy ) {
t . Errorf ( "%s: Expected:\n\t%#v\nGot:\n\t%#v" , v , tc . ExpectedPolicy , policy )
}
2016-02-15 11:13:38 -05:00
handler := utiltesting . FakeHandler {
StatusCode : 500 ,
ResponseBody : "" ,
T : t ,
}
server := httptest . NewServer ( & handler )
2016-04-21 07:50:55 -04:00
defer server . Close ( )
2016-10-05 04:40:39 -04:00
client := clientset . NewForConfigOrDie ( & restclient . Config { Host : server . URL , ContentConfig : restclient . ContentConfig { GroupVersion : & registered . GroupOrDie ( api . GroupName ) . GroupVersion } } )
2016-02-15 11:13:38 -05:00
2016-05-04 02:50:31 -04:00
if _ , err := factory . NewConfigFactory ( client , "some-scheduler-name" , api . DefaultHardPodAffinitySymmetricWeight , api . DefaultFailureDomains ) . CreateFromConfig ( policy ) ; err != nil {
2015-08-11 15:03:35 -04:00
t . Errorf ( "%s: Error constructing: %v" , v , err )
continue
}
}
2016-08-18 02:07:26 -04:00
if ! seenPredicates . HasAll ( registeredPredicates . List ( ) ... ) {
t . Errorf ( "Registered predicates are missing from compatibility test (add to test stanza for version currently in development): %#v" , registeredPredicates . Difference ( seenPredicates ) . List ( ) )
}
if ! seenPriorities . HasAll ( registeredPriorities . List ( ) ... ) {
t . Errorf ( "Registered priorities are missing from compatibility test (add to test stanza for version currently in development): %#v" , registeredPriorities . Difference ( seenPriorities ) . List ( ) )
}
2015-08-11 15:03:35 -04:00
}