Skip to content

Commit

Permalink
Merge pull request #8491 from k8s-infra-cherrypick-robot/cherry-pick-…
Browse files Browse the repository at this point in the history
…8484-to-release-1.4

[release-1.4] 🐛 machine-controller: fix phase tests race condition in tests on lastUpdated field
  • Loading branch information
k8s-ci-robot committed Apr 6, 2023
2 parents c00aa6a + 381c289 commit 906e144
Showing 1 changed file with 6 additions and 13 deletions.
19 changes: 6 additions & 13 deletions internal/controllers/machine/machine_controller_phases_test.go
Expand Up @@ -367,14 +367,13 @@ func TestReconcileMachinePhases(t *testing.T) {

g.Expect(env.Create(ctx, bootstrapConfig)).To(Succeed())
g.Expect(env.Create(ctx, infraMachine)).To(Succeed())
// We have to subtract 2 seconds, because .status.lastUpdated does not contain miliseconds.
preUpdate := time.Now().Add(-2 * time.Second)
g.Expect(env.Create(ctx, machine)).To(Succeed())

modifiedMachine := machine.DeepCopy()
// Set NodeRef.
machine.Status.NodeRef = &corev1.ObjectReference{Kind: "Node", Name: node.Name}
// Set the LastUpdated to be able to verify it is updated when the phase changes
lastUpdated := metav1.NewTime(time.Now().Add(-10 * time.Second))
machine.Status.LastUpdated = &lastUpdated
g.Expect(env.Status().Patch(ctx, modifiedMachine, client.MergeFrom(machine))).To(Succeed())

// Set bootstrap ready.
Expand All @@ -397,7 +396,7 @@ func TestReconcileMachinePhases(t *testing.T) {
g.Expect(machine.Status.Addresses).To(HaveLen(0))
// Verify that the LastUpdated timestamp was updated
g.Expect(machine.Status.LastUpdated).NotTo(BeNil())
g.Expect(machine.Status.LastUpdated.After(lastUpdated.Time)).To(BeTrue())
g.Expect(machine.Status.LastUpdated.After(preUpdate)).To(BeTrue())
return true
}, 10*time.Second).Should(BeTrue())
})
Expand Down Expand Up @@ -506,16 +505,10 @@ func TestReconcileMachinePhases(t *testing.T) {

g.Expect(env.Create(ctx, bootstrapConfig)).To(Succeed())
g.Expect(env.Create(ctx, infraMachine)).To(Succeed())
// We have to subtract 2 seconds, because .status.lastUpdated does not contain miliseconds.
preUpdate := time.Now().Add(-2 * time.Second)
g.Expect(env.Create(ctx, machine)).To(Succeed())

modifiedMachine := machine.DeepCopy()
// Set NodeRef to nil.
machine.Status.NodeRef = nil
// Set the LastUpdated to be able to verify it is updated when the phase changes
lastUpdated := metav1.NewTime(time.Now().Add(-10 * time.Second))
machine.Status.LastUpdated = &lastUpdated
g.Expect(env.Status().Patch(ctx, modifiedMachine, client.MergeFrom(machine))).To(Succeed())

// Set bootstrap ready.
modifiedBootstrapConfig := bootstrapConfig.DeepCopy()
g.Expect(unstructured.SetNestedField(modifiedBootstrapConfig.Object, true, "status", "ready")).To(Succeed())
Expand All @@ -535,7 +528,7 @@ func TestReconcileMachinePhases(t *testing.T) {
g.Expect(machine.Status.GetTypedPhase()).To(Equal(clusterv1.MachinePhaseProvisioned))
// Verify that the LastUpdated timestamp was updated
g.Expect(machine.Status.LastUpdated).NotTo(BeNil())
g.Expect(machine.Status.LastUpdated.After(lastUpdated.Time)).To(BeTrue())
g.Expect(machine.Status.LastUpdated.After(preUpdate)).To(BeTrue())
return true
}, 10*time.Second).Should(BeTrue())
})
Expand Down

0 comments on commit 906e144

Please sign in to comment.