From 581174c3a0003794185cd477cc58a30d6b4b7c8a Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 16 Dec 2025 11:55:16 +0300 Subject: [PATCH 1/8] add unit test Signed-off-by: Valeriy Khorunzhin --- .../internal/defaulter/core_fraction_test.go | 238 ++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go new file mode 100644 index 0000000000..2eb733cbff --- /dev/null +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -0,0 +1,238 @@ +/* +Copyright 2025 Flant JSC + +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 defaulter_test + +import ( + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + + "github.com/deckhouse/virtualization-controller/pkg/common/testutil" + "github.com/deckhouse/virtualization-controller/pkg/controller/vm/internal/defaulter" + "github.com/deckhouse/virtualization/api/core/v1alpha2" + "github.com/deckhouse/virtualization/api/core/v1alpha3" +) + +var _ = Describe("CoreFractionDefaulter", func() { + var ( + ctx = testutil.ContextBackgroundWithNoOpLogger() + coreDefaulter *defaulter.CoreFractionDefaulter + setupCoreDefaulter func(objs ...client.Object) + newVM func(name, className string, cores int, coreFraction string) *v1alpha2.VirtualMachine + newVMClass func(name string, sizingPolicies []v1alpha3.SizingPolicy) *v1alpha3.VirtualMachineClass + ) + + BeforeEach(func() { + setupCoreDefaulter = func(objs ...client.Object) { + GinkgoHelper() + fakeClient, err := testutil.NewFakeClientWithObjects(objs...) + Expect(err).Should(BeNil()) + coreDefaulter = defaulter.NewCoreFractionDefaulter(fakeClient) + } + + newVM = func(name, className string, cores int, coreFraction string) *v1alpha2.VirtualMachine { + return &v1alpha2.VirtualMachine{ + TypeMeta: metav1.TypeMeta{ + Kind: v1alpha2.VirtualMachineKind, + APIVersion: v1alpha2.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: name, + }, + Spec: v1alpha2.VirtualMachineSpec{ + VirtualMachineClassName: className, + CPU: v1alpha2.CPUSpec{ + Cores: cores, + CoreFraction: coreFraction, + }, + }, + } + } + + newVMClass = func(name string, sizingPolicies []v1alpha3.SizingPolicy) *v1alpha3.VirtualMachineClass { + return &v1alpha3.VirtualMachineClass{ + TypeMeta: metav1.TypeMeta{ + Kind: v1alpha3.VirtualMachineClassKind, + APIVersion: v1alpha3.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Name: name, + }, + Spec: v1alpha3.VirtualMachineClassSpec{ + SizingPolicies: sizingPolicies, + }, + } + } + }) + + AfterEach(func() { + coreDefaulter = nil + }) + + Context("when coreFraction is already set", func() { + It("should not change coreFraction and should not require VMClass", func() { + setupCoreDefaulter() + + vm := newVM("vm-with-core-fraction", "any-class", 2, "25%") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).Should(BeNil()) + Expect(vm.Spec.CPU.CoreFraction).Should(Equal("25%")) + }) + }) + + Context("when virtualMachineClassName is empty", func() { + It("should keep coreFraction empty", func() { + setupCoreDefaulter() + + vm := newVM("vm-without-class", "", 2, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).Should(BeNil()) + Expect(vm.Spec.CPU.CoreFraction).Should(BeEmpty()) + }) + }) + + Context("when VMClass cannot be found", func() { + It("should return an error", func() { + setupCoreDefaulter() + + vm := newVM("vm-with-missing-class", "non-existing-class", 2, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).ShouldNot(BeNil()) + }) + }) + + Context("when VMClass has sizing policies", func() { + It("should set coreFraction from matching sizing policy defaultCoreFraction", func() { + defaultCF := v1alpha3.CoreFractionValue("50%") + vmClass := newVMClass("balanced", []v1alpha3.SizingPolicy{ + { + Cores: &v1alpha3.SizingPolicyCores{ + Min: 1, + Max: 4, + }, + DefaultCoreFraction: &defaultCF, + }, + }) + + setupCoreDefaulter(vmClass) + + vm := newVM("vm-balanced", vmClass.Name, 2, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).Should(BeNil()) + Expect(vm.Spec.CPU.CoreFraction).Should(Equal("50%")) + }) + + It("should set default 100% when matching policy has no defaultCoreFraction", func() { + vmClass := newVMClass("no-default-fraction", []v1alpha3.SizingPolicy{ + { + Cores: &v1alpha3.SizingPolicyCores{ + Min: 5, + Max: 8, + }, + }, + }) + + setupCoreDefaulter(vmClass) + + vm := newVM("vm-no-default", vmClass.Name, 6, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).Should(BeNil()) + Expect(vm.Spec.CPU.CoreFraction).Should(Equal("100%")) + }) + + It("should return error when no policy matches VM cores", func() { + defaultCF := v1alpha3.CoreFractionValue("50%") + vmClass := newVMClass("non-matching", []v1alpha3.SizingPolicy{ + { + Cores: &v1alpha3.SizingPolicyCores{ + Min: 5, + Max: 8, + }, + DefaultCoreFraction: &defaultCF, + }, + }) + + setupCoreDefaulter(vmClass) + + vm := newVM("vm-non-matching", vmClass.Name, 2, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).ShouldNot(BeNil()) + Expect(err.Error()).Should(ContainSubstring("not among the sizing policies")) + }) + + It("should set default 100% when coreFractions includes 100%", func() { + vmClass := newVMClass("with-100-percent", []v1alpha3.SizingPolicy{ + { + Cores: &v1alpha3.SizingPolicyCores{ + Min: 1, + Max: 4, + }, + CoreFractions: []v1alpha3.CoreFractionValue{"50%", "100%"}, + }, + }) + + setupCoreDefaulter(vmClass) + + vm := newVM("vm-with-100", vmClass.Name, 2, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).Should(BeNil()) + Expect(vm.Spec.CPU.CoreFraction).Should(Equal("100%")) + }) + + It("should return error when coreFractions doesn't include 100% and no defaultCoreFraction", func() { + vmClass := newVMClass("without-100-percent", []v1alpha3.SizingPolicy{ + { + Cores: &v1alpha3.SizingPolicyCores{ + Min: 1, + Max: 4, + }, + CoreFractions: []v1alpha3.CoreFractionValue{"25%", "50%"}, + }, + }) + + setupCoreDefaulter(vmClass) + + vm := newVM("vm-without-100", vmClass.Name, 2, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).ShouldNot(BeNil()) + Expect(err.Error()).Should(ContainSubstring("default value for core fraction is not defined")) + }) + }) + + Context("when VMClass has no sizing policies", func() { + It("should set default 100%", func() { + vmClass := newVMClass("no-policies", nil) + + setupCoreDefaulter(vmClass) + + vm := newVM("vm-no-policies", vmClass.Name, 2, "") + + err := coreDefaulter.Default(ctx, vm) + Expect(err).Should(BeNil()) + Expect(vm.Spec.CPU.CoreFraction).Should(Equal("100%")) + }) + }) +}) From 27a83ad0afe8ed68c0cc9ff842e96dd55ca18c50 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 18 Dec 2025 11:45:22 +0300 Subject: [PATCH 2/8] Update images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go Co-authored-by: Roman Sysoev <36233932+hardcoretime@users.noreply.github.com> Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vm/internal/defaulter/core_fraction_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go index 2eb733cbff..14befc4b77 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -224,7 +224,7 @@ var _ = Describe("CoreFractionDefaulter", func() { Context("when VMClass has no sizing policies", func() { It("should set default 100%", func() { - vmClass := newVMClass("no-policies", nil) + vmClass := newVMClass("no-sizing-policies", nil) setupCoreDefaulter(vmClass) From 33da0cd270b7ae3ce900327a79454ab2080abf65 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 18 Dec 2025 11:49:43 +0300 Subject: [PATCH 3/8] Update images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go Co-authored-by: Roman Sysoev <36233932+hardcoretime@users.noreply.github.com> Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vm/internal/defaulter/core_fraction_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go index 14befc4b77..7312e63772 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -142,7 +142,7 @@ var _ = Describe("CoreFractionDefaulter", func() { }) It("should set default 100% when matching policy has no defaultCoreFraction", func() { - vmClass := newVMClass("no-default-fraction", []v1alpha3.SizingPolicy{ + vmClass := newVMClass("no-default-core-fraction", []v1alpha3.SizingPolicy{ { Cores: &v1alpha3.SizingPolicyCores{ Min: 5, From fc152a43284e1ceb0adc7431e52138781403f464 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 18 Dec 2025 11:49:53 +0300 Subject: [PATCH 4/8] Update images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go Co-authored-by: Roman Sysoev <36233932+hardcoretime@users.noreply.github.com> Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vm/internal/defaulter/core_fraction_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go index 7312e63772..339e25c78d 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -91,7 +91,7 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM("vm-with-core-fraction", "any-class", 2, "25%") err := coreDefaulter.Default(ctx, vm) - Expect(err).Should(BeNil()) + Expect(err).ShouldNot(HaveOccurred()) Expect(vm.Spec.CPU.CoreFraction).Should(Equal("25%")) }) }) From f6350bf5bf999dc61627d5e2a4ce39b08bb12da6 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 18 Dec 2025 12:19:03 +0300 Subject: [PATCH 5/8] remove names) Signed-off-by: Valeriy Khorunzhin --- .../internal/defaulter/core_fraction_test.go | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go index 339e25c78d..39538a2874 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -33,8 +33,8 @@ var _ = Describe("CoreFractionDefaulter", func() { ctx = testutil.ContextBackgroundWithNoOpLogger() coreDefaulter *defaulter.CoreFractionDefaulter setupCoreDefaulter func(objs ...client.Object) - newVM func(name, className string, cores int, coreFraction string) *v1alpha2.VirtualMachine - newVMClass func(name string, sizingPolicies []v1alpha3.SizingPolicy) *v1alpha3.VirtualMachineClass + newVM func(className string, cores int, coreFraction string) *v1alpha2.VirtualMachine + newVMClass func(sizingPolicies []v1alpha3.SizingPolicy) *v1alpha3.VirtualMachineClass ) BeforeEach(func() { @@ -45,14 +45,14 @@ var _ = Describe("CoreFractionDefaulter", func() { coreDefaulter = defaulter.NewCoreFractionDefaulter(fakeClient) } - newVM = func(name, className string, cores int, coreFraction string) *v1alpha2.VirtualMachine { + newVM = func(className string, cores int, coreFraction string) *v1alpha2.VirtualMachine { return &v1alpha2.VirtualMachine{ TypeMeta: metav1.TypeMeta{ Kind: v1alpha2.VirtualMachineKind, APIVersion: v1alpha2.SchemeGroupVersion.String(), }, ObjectMeta: metav1.ObjectMeta{ - Name: name, + Name: "vm", }, Spec: v1alpha2.VirtualMachineSpec{ VirtualMachineClassName: className, @@ -64,14 +64,14 @@ var _ = Describe("CoreFractionDefaulter", func() { } } - newVMClass = func(name string, sizingPolicies []v1alpha3.SizingPolicy) *v1alpha3.VirtualMachineClass { + newVMClass = func(sizingPolicies []v1alpha3.SizingPolicy) *v1alpha3.VirtualMachineClass { return &v1alpha3.VirtualMachineClass{ TypeMeta: metav1.TypeMeta{ Kind: v1alpha3.VirtualMachineClassKind, APIVersion: v1alpha3.SchemeGroupVersion.String(), }, ObjectMeta: metav1.ObjectMeta{ - Name: name, + Name: "vmc", }, Spec: v1alpha3.VirtualMachineClassSpec{ SizingPolicies: sizingPolicies, @@ -88,7 +88,7 @@ var _ = Describe("CoreFractionDefaulter", func() { It("should not change coreFraction and should not require VMClass", func() { setupCoreDefaulter() - vm := newVM("vm-with-core-fraction", "any-class", 2, "25%") + vm := newVM("any-class", 2, "25%") err := coreDefaulter.Default(ctx, vm) Expect(err).ShouldNot(HaveOccurred()) @@ -100,7 +100,7 @@ var _ = Describe("CoreFractionDefaulter", func() { It("should keep coreFraction empty", func() { setupCoreDefaulter() - vm := newVM("vm-without-class", "", 2, "") + vm := newVM("", 2, "") err := coreDefaulter.Default(ctx, vm) Expect(err).Should(BeNil()) @@ -112,7 +112,7 @@ var _ = Describe("CoreFractionDefaulter", func() { It("should return an error", func() { setupCoreDefaulter() - vm := newVM("vm-with-missing-class", "non-existing-class", 2, "") + vm := newVM("non-existing-class", 2, "") err := coreDefaulter.Default(ctx, vm) Expect(err).ShouldNot(BeNil()) @@ -122,7 +122,7 @@ var _ = Describe("CoreFractionDefaulter", func() { Context("when VMClass has sizing policies", func() { It("should set coreFraction from matching sizing policy defaultCoreFraction", func() { defaultCF := v1alpha3.CoreFractionValue("50%") - vmClass := newVMClass("balanced", []v1alpha3.SizingPolicy{ + vmClass := newVMClass([]v1alpha3.SizingPolicy{ { Cores: &v1alpha3.SizingPolicyCores{ Min: 1, @@ -134,7 +134,7 @@ var _ = Describe("CoreFractionDefaulter", func() { setupCoreDefaulter(vmClass) - vm := newVM("vm-balanced", vmClass.Name, 2, "") + vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) Expect(err).Should(BeNil()) @@ -142,7 +142,7 @@ var _ = Describe("CoreFractionDefaulter", func() { }) It("should set default 100% when matching policy has no defaultCoreFraction", func() { - vmClass := newVMClass("no-default-core-fraction", []v1alpha3.SizingPolicy{ + vmClass := newVMClass([]v1alpha3.SizingPolicy{ { Cores: &v1alpha3.SizingPolicyCores{ Min: 5, @@ -153,7 +153,7 @@ var _ = Describe("CoreFractionDefaulter", func() { setupCoreDefaulter(vmClass) - vm := newVM("vm-no-default", vmClass.Name, 6, "") + vm := newVM(vmClass.Name, 6, "") err := coreDefaulter.Default(ctx, vm) Expect(err).Should(BeNil()) @@ -162,7 +162,7 @@ var _ = Describe("CoreFractionDefaulter", func() { It("should return error when no policy matches VM cores", func() { defaultCF := v1alpha3.CoreFractionValue("50%") - vmClass := newVMClass("non-matching", []v1alpha3.SizingPolicy{ + vmClass := newVMClass([]v1alpha3.SizingPolicy{ { Cores: &v1alpha3.SizingPolicyCores{ Min: 5, @@ -174,7 +174,7 @@ var _ = Describe("CoreFractionDefaulter", func() { setupCoreDefaulter(vmClass) - vm := newVM("vm-non-matching", vmClass.Name, 2, "") + vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) Expect(err).ShouldNot(BeNil()) @@ -182,7 +182,7 @@ var _ = Describe("CoreFractionDefaulter", func() { }) It("should set default 100% when coreFractions includes 100%", func() { - vmClass := newVMClass("with-100-percent", []v1alpha3.SizingPolicy{ + vmClass := newVMClass([]v1alpha3.SizingPolicy{ { Cores: &v1alpha3.SizingPolicyCores{ Min: 1, @@ -194,7 +194,7 @@ var _ = Describe("CoreFractionDefaulter", func() { setupCoreDefaulter(vmClass) - vm := newVM("vm-with-100", vmClass.Name, 2, "") + vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) Expect(err).Should(BeNil()) @@ -202,7 +202,7 @@ var _ = Describe("CoreFractionDefaulter", func() { }) It("should return error when coreFractions doesn't include 100% and no defaultCoreFraction", func() { - vmClass := newVMClass("without-100-percent", []v1alpha3.SizingPolicy{ + vmClass := newVMClass([]v1alpha3.SizingPolicy{ { Cores: &v1alpha3.SizingPolicyCores{ Min: 1, @@ -214,7 +214,7 @@ var _ = Describe("CoreFractionDefaulter", func() { setupCoreDefaulter(vmClass) - vm := newVM("vm-without-100", vmClass.Name, 2, "") + vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) Expect(err).ShouldNot(BeNil()) @@ -224,11 +224,11 @@ var _ = Describe("CoreFractionDefaulter", func() { Context("when VMClass has no sizing policies", func() { It("should set default 100%", func() { - vmClass := newVMClass("no-sizing-policies", nil) + vmClass := newVMClass(nil) setupCoreDefaulter(vmClass) - vm := newVM("vm-no-policies", vmClass.Name, 2, "") + vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) Expect(err).Should(BeNil()) From eccf75f8286c5d9763f2e351ec0aca2a033f56fe Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 18 Dec 2025 12:31:34 +0300 Subject: [PATCH 6/8] match error Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vm/internal/defaulter/core_fraction_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go index 39538a2874..a1002e2722 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -178,7 +178,7 @@ var _ = Describe("CoreFractionDefaulter", func() { err := coreDefaulter.Default(ctx, vm) Expect(err).ShouldNot(BeNil()) - Expect(err.Error()).Should(ContainSubstring("not among the sizing policies")) + Expect(err).Should(MatchError(ContainSubstring("not among the sizing policies"))) }) It("should set default 100% when coreFractions includes 100%", func() { From 0f10378a3acb83301b8c01a5c8bfa4759cd29513 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 18 Dec 2025 15:24:13 +0300 Subject: [PATCH 7/8] match error Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vm/internal/defaulter/core_fraction_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go index a1002e2722..bacc199682 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -218,7 +218,7 @@ var _ = Describe("CoreFractionDefaulter", func() { err := coreDefaulter.Default(ctx, vm) Expect(err).ShouldNot(BeNil()) - Expect(err.Error()).Should(ContainSubstring("default value for core fraction is not defined")) + Expect(err).Should(MatchError(ContainSubstring("default value for core fraction is not defined"))) }) }) From 359ffeaed93dce4b4d7f1661829627b24d216fb7 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 18 Dec 2025 15:44:50 +0300 Subject: [PATCH 8/8] refactoring Signed-off-by: Valeriy Khorunzhin --- .../internal/defaulter/core_fraction_test.go | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go index bacc199682..227fb2b05d 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/defaulter/core_fraction_test.go @@ -41,7 +41,7 @@ var _ = Describe("CoreFractionDefaulter", func() { setupCoreDefaulter = func(objs ...client.Object) { GinkgoHelper() fakeClient, err := testutil.NewFakeClientWithObjects(objs...) - Expect(err).Should(BeNil()) + Expect(err).NotTo(HaveOccurred()) coreDefaulter = defaulter.NewCoreFractionDefaulter(fakeClient) } @@ -91,8 +91,8 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM("any-class", 2, "25%") err := coreDefaulter.Default(ctx, vm) - Expect(err).ShouldNot(HaveOccurred()) - Expect(vm.Spec.CPU.CoreFraction).Should(Equal("25%")) + Expect(err).NotTo(HaveOccurred()) + Expect(vm.Spec.CPU.CoreFraction).To(Equal("25%")) }) }) @@ -103,8 +103,8 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM("", 2, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).Should(BeNil()) - Expect(vm.Spec.CPU.CoreFraction).Should(BeEmpty()) + Expect(err).NotTo(HaveOccurred()) + Expect(vm.Spec.CPU.CoreFraction).To(BeEmpty()) }) }) @@ -115,7 +115,11 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM("non-existing-class", 2, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).ShouldNot(BeNil()) + Expect(err).To(SatisfyAll( + HaveOccurred(), + MatchError(ContainSubstring("failed to get")), + MatchError(ContainSubstring("not found")), + )) }) }) @@ -137,8 +141,8 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).Should(BeNil()) - Expect(vm.Spec.CPU.CoreFraction).Should(Equal("50%")) + Expect(err).NotTo(HaveOccurred()) + Expect(vm.Spec.CPU.CoreFraction).To(Equal("50%")) }) It("should set default 100% when matching policy has no defaultCoreFraction", func() { @@ -156,8 +160,8 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM(vmClass.Name, 6, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).Should(BeNil()) - Expect(vm.Spec.CPU.CoreFraction).Should(Equal("100%")) + Expect(err).NotTo(HaveOccurred()) + Expect(vm.Spec.CPU.CoreFraction).To(Equal("100%")) }) It("should return error when no policy matches VM cores", func() { @@ -177,8 +181,10 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).ShouldNot(BeNil()) - Expect(err).Should(MatchError(ContainSubstring("not among the sizing policies"))) + Expect(err).To(SatisfyAll( + HaveOccurred(), + MatchError(ContainSubstring("not among the sizing policies")), + )) }) It("should set default 100% when coreFractions includes 100%", func() { @@ -197,8 +203,8 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).Should(BeNil()) - Expect(vm.Spec.CPU.CoreFraction).Should(Equal("100%")) + Expect(err).NotTo(HaveOccurred()) + Expect(vm.Spec.CPU.CoreFraction).To(Equal("100%")) }) It("should return error when coreFractions doesn't include 100% and no defaultCoreFraction", func() { @@ -217,8 +223,10 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).ShouldNot(BeNil()) - Expect(err).Should(MatchError(ContainSubstring("default value for core fraction is not defined"))) + Expect(err).To(SatisfyAll( + HaveOccurred(), + MatchError(ContainSubstring("default value for core fraction is not defined")), + )) }) }) @@ -231,7 +239,7 @@ var _ = Describe("CoreFractionDefaulter", func() { vm := newVM(vmClass.Name, 2, "") err := coreDefaulter.Default(ctx, vm) - Expect(err).Should(BeNil()) + Expect(err).NotTo(HaveOccurred()) Expect(vm.Spec.CPU.CoreFraction).Should(Equal("100%")) }) })