Skip to content

Commit 07c4982

Browse files
Add unit and integration tests for multiple profiles support
Signed-off-by: Aldo Culquicondor <[email protected]>
1 parent b342818 commit 07c4982

File tree

7 files changed

+419
-60
lines changed

7 files changed

+419
-60
lines changed

cmd/kube-scheduler/app/options/options_test.go

Lines changed: 98 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,8 @@ users:
220220
}
221221

222222
// plugin config
223-
pluginconfigFile := filepath.Join(tmpDir, "plugin.yaml")
224-
if err := ioutil.WriteFile(pluginconfigFile, []byte(fmt.Sprintf(`
223+
pluginConfigFile := filepath.Join(tmpDir, "plugin.yaml")
224+
if err := ioutil.WriteFile(pluginConfigFile, []byte(fmt.Sprintf(`
225225
apiVersion: kubescheduler.config.k8s.io/v1alpha2
226226
kind: KubeSchedulerConfiguration
227227
clientConnection:
@@ -244,6 +244,31 @@ profiles:
244244
`, configKubeconfig)), os.FileMode(0600)); err != nil {
245245
t.Fatal(err)
246246
}
247+
248+
// multiple profiles config
249+
multiProfilesConfig := filepath.Join(tmpDir, "multi-profiles.yaml")
250+
if err := ioutil.WriteFile(multiProfilesConfig, []byte(fmt.Sprintf(`
251+
apiVersion: kubescheduler.config.k8s.io/v1alpha2
252+
kind: KubeSchedulerConfiguration
253+
clientConnection:
254+
kubeconfig: "%s"
255+
profiles:
256+
- schedulerName: "foo-profile"
257+
plugins:
258+
reserve:
259+
enabled:
260+
- name: foo
261+
- schedulerName: "bar-profile"
262+
plugins:
263+
preBind:
264+
disabled:
265+
- name: baz
266+
pluginConfig:
267+
- name: foo
268+
`, configKubeconfig)), os.FileMode(0600)); err != nil {
269+
t.Fatal(err)
270+
}
271+
247272
// v1alpha1 postfilter plugin config
248273
postfilterPluginConfigFile := filepath.Join(tmpDir, "v1alpha1_postfilter_plugin.yaml")
249274
if err := ioutil.WriteFile(postfilterPluginConfigFile, []byte(fmt.Sprintf(`
@@ -516,7 +541,7 @@ plugins:
516541
{
517542
name: "plugin config",
518543
options: &Options{
519-
ConfigFile: pluginconfigFile,
544+
ConfigFile: pluginConfigFile,
520545
},
521546
expectedUsername: "config",
522547
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
@@ -554,29 +579,84 @@ plugins:
554579
Plugins: &kubeschedulerconfig.Plugins{
555580
Reserve: &kubeschedulerconfig.PluginSet{
556581
Enabled: []kubeschedulerconfig.Plugin{
557-
{
558-
Name: "foo",
559-
},
560-
{
561-
Name: "bar",
562-
},
582+
{Name: "foo"},
583+
{Name: "bar"},
563584
},
564585
Disabled: []kubeschedulerconfig.Plugin{
565-
{
566-
Name: "baz",
567-
},
586+
{Name: "baz"},
568587
},
569588
},
570589
PreBind: &kubeschedulerconfig.PluginSet{
571590
Enabled: []kubeschedulerconfig.Plugin{
572-
{
573-
Name: "foo",
574-
},
591+
{Name: "foo"},
575592
},
576593
Disabled: []kubeschedulerconfig.Plugin{
577-
{
578-
Name: "baz",
579-
},
594+
{Name: "baz"},
595+
},
596+
},
597+
},
598+
PluginConfig: []kubeschedulerconfig.PluginConfig{
599+
{
600+
Name: "foo",
601+
Args: runtime.Unknown{},
602+
},
603+
},
604+
},
605+
},
606+
},
607+
},
608+
{
609+
name: "multiple profiles",
610+
options: &Options{
611+
ConfigFile: multiProfilesConfig,
612+
},
613+
expectedUsername: "config",
614+
expectedConfig: kubeschedulerconfig.KubeSchedulerConfiguration{
615+
AlgorithmSource: kubeschedulerconfig.SchedulerAlgorithmSource{Provider: &defaultSource},
616+
HealthzBindAddress: "0.0.0.0:10251",
617+
MetricsBindAddress: "0.0.0.0:10251",
618+
DebuggingConfiguration: componentbaseconfig.DebuggingConfiguration{
619+
EnableProfiling: true,
620+
EnableContentionProfiling: true,
621+
},
622+
LeaderElection: kubeschedulerconfig.KubeSchedulerLeaderElectionConfiguration{
623+
LeaderElectionConfiguration: componentbaseconfig.LeaderElectionConfiguration{
624+
LeaderElect: true,
625+
LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
626+
RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
627+
RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
628+
ResourceLock: "endpointsleases",
629+
ResourceNamespace: "kube-system",
630+
ResourceName: "kube-scheduler",
631+
},
632+
},
633+
ClientConnection: componentbaseconfig.ClientConnectionConfiguration{
634+
Kubeconfig: configKubeconfig,
635+
QPS: 50,
636+
Burst: 100,
637+
ContentType: "application/vnd.kubernetes.protobuf",
638+
},
639+
PercentageOfNodesToScore: defaultPercentageOfNodesToScore,
640+
BindTimeoutSeconds: defaultBindTimeoutSeconds,
641+
PodInitialBackoffSeconds: defaultPodInitialBackoffSeconds,
642+
PodMaxBackoffSeconds: defaultPodMaxBackoffSeconds,
643+
Profiles: []kubeschedulerconfig.KubeSchedulerProfile{
644+
{
645+
SchedulerName: "foo-profile",
646+
Plugins: &kubeschedulerconfig.Plugins{
647+
Reserve: &kubeschedulerconfig.PluginSet{
648+
Enabled: []kubeschedulerconfig.Plugin{
649+
{Name: "foo"},
650+
},
651+
},
652+
},
653+
},
654+
{
655+
SchedulerName: "bar-profile",
656+
Plugins: &kubeschedulerconfig.Plugins{
657+
PreBind: &kubeschedulerconfig.PluginSet{
658+
Disabled: []kubeschedulerconfig.Plugin{
659+
{Name: "baz"},
580660
},
581661
},
582662
},

0 commit comments

Comments
 (0)