From 79e288744834da28f7ff70881c10980526b36b80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Vila=C3=A7a?= Date: Wed, 6 Nov 2024 17:32:27 +0000 Subject: [PATCH] Fix flaky test fire VMStorageClassWarning when rxbounce is disabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: João Vilaça --- tests/monitoring_test.go | 32 +++++++++++++++++++------------- tests/tests_common_test.go | 4 ++-- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/tests/monitoring_test.go b/tests/monitoring_test.go index 949137699..b464bd8f1 100644 --- a/tests/monitoring_test.go +++ b/tests/monitoring_test.go @@ -11,6 +11,8 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + "gomodules.xyz/jsonpatch/v2" + routev1 "github.com/openshift/api/route/v1" templatev1 "github.com/openshift/api/template/v1" promApi "github.com/prometheus/client_golang/api" @@ -247,6 +249,16 @@ var _ = Describe("Prometheus Alerts", func() { var createResources = func(createDataVolume bool, rxbounceEnabled bool) string { vmName := fmt.Sprintf("testvmi-%v", rand.String(10)) + vmi := NewMinimalVMIWithNS(strategy.GetNamespace(), vmName) + vm = NewVirtualMachine(vmi) + vm.Spec.RunStrategy = ptr.To(kubevirtv1.RunStrategyAlways) + vm.Spec.Template.ObjectMeta.Annotations = map[string]string{ + "vm.kubevirt.io/os": "windows-10", + } + + eventuallyCreateVm(vm) + waitForSeriesToBeDetected(fmt.Sprintf("kubevirt_vmi_info{name='%s', os='windows-10'} == 1", vmi.Name)) + var volumes []kubevirtv1.Volume if createDataVolume { @@ -261,13 +273,10 @@ var _ = Describe("Prometheus Alerts", func() { }) } - vmi := NewMinimalVMIWithNS(strategy.GetNamespace(), vmName) - vmi.Spec = kubevirtv1.VirtualMachineInstanceSpec{ - Volumes: volumes, - } - vm = NewVirtualMachine(vmi) - vm.Spec.Running = ptr.To(false) - eventuallyCreateVm(vm) + operation := jsonpatch.NewOperation("add", "/spec/template/spec/volumes", volumes) + patch := encodePatch([]jsonpatch.Operation{operation}) + err := apiClient.Patch(ctx, vm, patch) + Expect(err).NotTo(HaveOccurred()) return vmName } @@ -278,10 +287,7 @@ var _ = Describe("Prometheus Alerts", func() { alertShouldNotBeActive("VMStorageClassWarning") }) - // This test is flaky and fails too often. - // - // TODO: GitHub issue: https://github.com/kubevirt/ssp-operator/issues/889 - PIt("[test_id:10549] Should fire VMStorageClassWarning when rxbounce is disabled", func() { + It("[test_id:10549] Should fire VMStorageClassWarning when rxbounce is disabled", func() { vmName := createResources(true, false) waitForSeriesToBeDetected(fmt.Sprintf("kubevirt_ssp_vm_rbd_block_volume_without_rxbounce{name='%s'} == 1", vmName)) waitForAlertToActivate("VMStorageClassWarning") @@ -290,8 +296,8 @@ var _ = Describe("Prometheus Alerts", func() { Expect(err).ToNot(HaveOccurred()) Eventually(func(g Gomega) error { - return apiClient.Get(ctx, types.NamespacedName{Name: vmName, Namespace: strategy.GetNamespace()}, vm) - }, 10*time.Second, time.Second).Should(MatchError(k8serrors.IsNotFound, "IsNotFound")) + return apiClient.Get(ctx, types.NamespacedName{Name: vm.Name, Namespace: vm.Namespace}, vm) + }, 1*time.Minute, 5*time.Second).Should(MatchError(k8serrors.IsNotFound, "IsNotFound")) waitForSeriesToBeDetected(fmt.Sprintf("kubevirt_ssp_vm_rbd_block_volume_without_rxbounce{name='%s'} == 0", vmName)) alertShouldNotBeActive("VMStorageClassWarning") diff --git a/tests/tests_common_test.go b/tests/tests_common_test.go index 0c1570c96..2730220a5 100644 --- a/tests/tests_common_test.go +++ b/tests/tests_common_test.go @@ -18,6 +18,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/rand" + "k8s.io/utils/ptr" kubevirtv1 "kubevirt.io/api/core/v1" "kubevirt.io/controller-lifecycle-operator-sdk/api" "sigs.k8s.io/controller-runtime/pkg/client" @@ -362,7 +363,6 @@ func NewMinimalVMIWithNS(namespace, name string) *kubevirtv1.VirtualMachineInsta } func NewVirtualMachine(vmi *kubevirtv1.VirtualMachineInstance) *kubevirtv1.VirtualMachine { - running := false name := vmi.Name namespace := vmi.Namespace vm := &kubevirtv1.VirtualMachine{ @@ -371,7 +371,7 @@ func NewVirtualMachine(vmi *kubevirtv1.VirtualMachineInstance) *kubevirtv1.Virtu Namespace: namespace, }, Spec: kubevirtv1.VirtualMachineSpec{ - Running: &running, + RunStrategy: ptr.To(kubevirtv1.RunStrategyHalted), Template: &kubevirtv1.VirtualMachineInstanceTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{"kubevirt.io/vm": name},