From e371b27e6cbfce37359f3b1eba2727c628375983 Mon Sep 17 00:00:00 2001 From: Hidehito Yabuuchi Date: Sat, 19 Jun 2021 18:07:31 +0900 Subject: [PATCH] Fix frameworkImpl.extenders being not set --- pkg/scheduler/factory.go | 1 + pkg/scheduler/scheduler_test.go | 56 ++++++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/pkg/scheduler/factory.go b/pkg/scheduler/factory.go index d737025c958..4f01a0699f2 100644 --- a/pkg/scheduler/factory.go +++ b/pkg/scheduler/factory.go @@ -160,6 +160,7 @@ func (c *Configurator) create() (*Scheduler, error) { frameworkruntime.WithCaptureProfile(frameworkruntime.CaptureProfile(c.frameworkCapturer)), frameworkruntime.WithClusterEventMap(c.clusterEventMap), frameworkruntime.WithParallelism(int(c.parallellism)), + frameworkruntime.WithExtenders(extenders), ) if err != nil { return nil, fmt.Errorf("initializing profiles: %v", err) diff --git a/pkg/scheduler/scheduler_test.go b/pkg/scheduler/scheduler_test.go index 2600929a0a0..0c457e6a817 100644 --- a/pkg/scheduler/scheduler_test.go +++ b/pkg/scheduler/scheduler_test.go @@ -126,10 +126,11 @@ func TestSchedulerCreation(t *testing.T) { "Foo": defaultbinder.New, } cases := []struct { - name string - opts []Option - wantErr string - wantProfiles []string + name string + opts []Option + wantErr string + wantProfiles []string + wantExtenders []string }{ { name: "valid out-of-tree registry", @@ -211,6 +212,27 @@ func TestSchedulerCreation(t *testing.T) { )}, wantErr: "duplicate profile with scheduler name \"foo\"", }, + { + name: "With extenders", + opts: []Option{ + WithProfiles( + schedulerapi.KubeSchedulerProfile{ + SchedulerName: "default-scheduler", + Plugins: &schedulerapi.Plugins{ + QueueSort: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "PrioritySort"}}}, + Bind: schedulerapi.PluginSet{Enabled: []schedulerapi.Plugin{{Name: "DefaultBinder"}}}, + }, + }, + ), + WithExtenders( + schedulerapi.Extender{ + URLPrefix: "http://extender.kube-system/", + }, + ), + }, + wantProfiles: []string{"default-scheduler"}, + wantExtenders: []string{"http://extender.kube-system/"}, + }, } for _, tc := range cases { @@ -230,6 +252,7 @@ func TestSchedulerCreation(t *testing.T) { tc.opts..., ) + // Errors if len(tc.wantErr) != 0 { if err == nil || !strings.Contains(err.Error(), tc.wantErr) { t.Errorf("got error %q, want %q", err, tc.wantErr) @@ -239,6 +262,8 @@ func TestSchedulerCreation(t *testing.T) { if err != nil { t.Fatalf("Failed to create scheduler: %v", err) } + + // Profiles profiles := make([]string, 0, len(s.Profiles)) for name := range s.Profiles { profiles = append(profiles, name) @@ -247,6 +272,29 @@ func TestSchedulerCreation(t *testing.T) { if diff := cmp.Diff(tc.wantProfiles, profiles); diff != "" { t.Errorf("unexpected profiles (-want, +got):\n%s", diff) } + + // Extenders + if len(tc.wantExtenders) != 0 { + // Scheduler.Extenders + extenders := make([]string, 0, len(s.Extenders)) + for _, e := range s.Extenders { + extenders = append(extenders, e.Name()) + } + if diff := cmp.Diff(tc.wantExtenders, extenders); diff != "" { + t.Errorf("unexpected extenders (-want, +got):\n%s", diff) + } + + // framework.Handle.Extenders() + for _, p := range s.Profiles { + extenders := make([]string, 0, len(p.Extenders())) + for _, e := range p.Extenders() { + extenders = append(extenders, e.Name()) + } + if diff := cmp.Diff(tc.wantExtenders, extenders); diff != "" { + t.Errorf("unexpected extenders (-want, +got):\n%s", diff) + } + } + } }) } }