diff --git a/pkg/controller/v1alpha2/experiment/experiment_controller_test.go b/pkg/controller/v1alpha2/experiment/experiment_controller_test.go index 96741667a9b..0abe564f9bb 100644 --- a/pkg/controller/v1alpha2/experiment/experiment_controller_test.go +++ b/pkg/controller/v1alpha2/experiment/experiment_controller_test.go @@ -50,6 +50,7 @@ func TestCreateExperiment(t *testing.T) { mc := managerclientmock.NewMockManagerClient(mockCtrl) mc.EXPECT().CreateExperimentInDB(gomock.Any()).Return(nil).AnyTimes() mc.EXPECT().UpdateExperimentStatusInDB(gomock.Any()).Return(nil).AnyTimes() + mc.EXPECT().DeleteExperimentInDB(gomock.Any()).Return(nil).AnyTimes() mockCtrl2 := gomock.NewController(t) defer mockCtrl2.Finish() @@ -103,8 +104,10 @@ func TestCreateExperiment(t *testing.T) { } g.Expect(err).NotTo(gomega.HaveOccurred()) g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) + g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) g.Expect(c.Delete(context.TODO(), instance)).NotTo(gomega.HaveOccurred()) + g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) g.Eventually(func() bool { return errors.IsNotFound(c.Get(context.TODO(), expectedRequest.NamespacedName, instance)) @@ -120,6 +123,7 @@ func TestReconcileExperiment(t *testing.T) { mc := managerclientmock.NewMockManagerClient(mockCtrl) mc.EXPECT().CreateExperimentInDB(gomock.Any()).Return(nil).AnyTimes() mc.EXPECT().UpdateExperimentStatusInDB(gomock.Any()).Return(nil).AnyTimes() + mc.EXPECT().DeleteExperimentInDB(gomock.Any()).Return(nil).AnyTimes() mockCtrl2 := gomock.NewController(t) defer mockCtrl2.Finish() @@ -238,6 +242,10 @@ spec: return } g.Expect(err).NotTo(gomega.HaveOccurred()) + // We have 4 reconcile requests to finish the process. + g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) + g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) + g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) trials := &trialsv1alpha2.TrialList{} @@ -253,6 +261,7 @@ spec: Should(gomega.Equal(1)) g.Expect(c.Delete(context.TODO(), instance)).NotTo(gomega.HaveOccurred()) + g.Eventually(requests, timeout).Should(gomega.Receive(gomega.Equal(expectedRequest))) g.Eventually(func() bool { return errors.IsNotFound(c.Get(context.TODO(), expectedRequest.NamespacedName, instance)) diff --git a/pkg/controller/v1alpha2/experiment/experiment_util.go b/pkg/controller/v1alpha2/experiment/experiment_util.go index 3f6d1e5e5d4..820d98208f2 100644 --- a/pkg/controller/v1alpha2/experiment/experiment_util.go +++ b/pkg/controller/v1alpha2/experiment/experiment_util.go @@ -84,7 +84,7 @@ func (r *ReconcileExperiment) createTrialInstance(expInstance *experimentsv1alph func (r *ReconcileExperiment) updateFinalizers(instance *experimentsv1alpha2.Experiment, finalizers []string) (reconcile.Result, error) { logger := log.WithValues("Experiment", types.NamespacedName{Name: instance.Name, Namespace: instance.Namespace}) - if instance.GetDeletionTimestamp() != nil { + if !instance.ObjectMeta.DeletionTimestamp.IsZero() { if err := r.DeleteExperimentInDB(instance); err != nil { logger.Error(err, "Fail to delete data in DB") return reconcile.Result{}, err