From 9a9db0045121a7d11ed3390e640586ee35ee152c Mon Sep 17 00:00:00 2001 From: "Dc.Hannibal" Date: Mon, 25 Nov 2019 15:12:31 +0800 Subject: [PATCH] handle registry merge error Handle registry merge error. Add test case Add a test case in TestSchedulerCreation Add test case comment Add test case comment, and modify error msg. gofmt gofmt import order replace NewDefaultRegistry with a fake registry update comment rename framework plugins nodeaffinity import remove nodeaffinity plugin import, get fake registry name from default registry randomly Add a space Add a space after // update comment, trans FrameWork to Framework --- pkg/scheduler/scheduler.go | 4 +++- pkg/scheduler/scheduler_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go index 4e1d522145c..c4865d1195f 100644 --- a/pkg/scheduler/scheduler.go +++ b/pkg/scheduler/scheduler.go @@ -303,7 +303,9 @@ func New(client clientset.Interface, VolumeBinder: volumeBinder, }) } - registry.Merge(options.frameworkOutOfTreeRegistry) + if err := registry.Merge(options.frameworkOutOfTreeRegistry); err != nil { + return nil, err + } snapshot := nodeinfosnapshot.NewEmptySnapshot() diff --git a/pkg/scheduler/scheduler_test.go b/pkg/scheduler/scheduler_test.go index d126204ada2..e3e1d017dc5 100644 --- a/pkg/scheduler/scheduler_test.go +++ b/pkg/scheduler/scheduler_test.go @@ -48,6 +48,7 @@ import ( "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities" schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config" "k8s.io/kubernetes/pkg/scheduler/core" + frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins" framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1" internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache" fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake" @@ -201,6 +202,32 @@ func TestSchedulerCreation(t *testing.T) { if err != nil { t.Fatalf("Failed to create scheduler: %v", err) } + + // Test case for when a plugin name in frameworkOutOfTreeRegistry already exist in defaultRegistry. + fakeFrameworkPluginName := "" + for name := range frameworkplugins.NewDefaultRegistry(&frameworkplugins.RegistryArgs{}) { + fakeFrameworkPluginName = name + break + } + registryFake := map[string]framework.PluginFactory{ + fakeFrameworkPluginName: func(_ *runtime.Unknown, fh framework.FrameworkHandle) (framework.Plugin, error) { + return nil, nil + }, + } + _, err = New(client, + informerFactory, + NewPodInformer(client, 0), + eventBroadcaster.NewRecorder(scheme.Scheme, "scheduler"), + stopCh, + WithAlgorithmSource(schedulerapi.SchedulerAlgorithmSource{Provider: &testSource}), + WithPodInitialBackoffSeconds(1), + WithPodMaxBackoffSeconds(10), + WithFrameworkOutOfTreeRegistry(registryFake), + ) + + if err == nil { + t.Fatalf("Create scheduler should fail") + } } func TestScheduler(t *testing.T) {