Skip to content

Commit

Permalink
Add test for last promoted hash
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanprodan committed Feb 17, 2020
1 parent f518206 commit dc77d1c
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 4 deletions.
79 changes: 76 additions & 3 deletions pkg/canary/deployment_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,13 +259,22 @@ func TestCanaryDeployer_HasTargetChanged(t *testing.T) {
t.Fatal(err.Error())
}

// save last applied hash
canary, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
if err != nil {
t.Fatal(err.Error())
}
err = mocks.deployer.SyncStatus(canary, flaggerv1.CanaryStatus{Phase: flaggerv1.CanaryPhaseInitializing})
if err != nil {
t.Fatal(err.Error())
}

// save last applied spec hash
err = mocks.deployer.SyncStatus(canary, flaggerv1.CanaryStatus{Phase: flaggerv1.CanaryPhaseInitialized})
// save last promoted hash
canary, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
if err != nil {
t.Fatal(err.Error())
}
err = mocks.deployer.SetStatusPhase(canary, flaggerv1.CanaryPhaseInitialized)
if err != nil {
t.Fatal(err.Error())
}
Expand Down Expand Up @@ -293,12 +302,76 @@ func TestCanaryDeployer_HasTargetChanged(t *testing.T) {
t.Fatal(err.Error())
}

// detect change
// detect change in last applied spec
isNew, err := mocks.deployer.HasTargetChanged(canary)
if err != nil {
t.Fatal(err.Error())
}
if !isNew {
t.Errorf("Got %v wanted %v", isNew, true)
}

// save hash
err = mocks.deployer.SyncStatus(canary, flaggerv1.CanaryStatus{Phase: flaggerv1.CanaryPhaseProgressing})
if err != nil {
t.Fatal(err.Error())
}

dep, err = mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo", metav1.GetOptions{})
if err != nil {
t.Fatal(err.Error())
}

depClone = dep.DeepCopy()
depClone.Spec.Template.Spec.Containers[0].Resources = corev1.ResourceRequirements{
Requests: corev1.ResourceList{
corev1.ResourceCPU: *resource.NewQuantity(1000, resource.DecimalExponent),
},
}

// update pod spec
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(depClone)
if err != nil {
t.Fatal(err.Error())
}

canary, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
if err != nil {
t.Fatal(err.Error())
}

// ignore change as hash should be the same with last promoted
isNew, err = mocks.deployer.HasTargetChanged(canary)
if err != nil {
t.Fatal(err.Error())
}
if isNew {
t.Errorf("Got %v wanted %v", isNew, false)
}

depClone = dep.DeepCopy()
depClone.Spec.Template.Spec.Containers[0].Resources = corev1.ResourceRequirements{
Requests: corev1.ResourceList{
corev1.ResourceCPU: *resource.NewQuantity(600, resource.DecimalExponent),
},
}

// update pod spec
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(depClone)
if err != nil {
t.Fatal(err.Error())
}

canary, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
if err != nil {
t.Fatal(err.Error())
}

// detect change
isNew, err = mocks.deployer.HasTargetChanged(canary)
if err != nil {
t.Fatal(err.Error())
}
if !isNew {
t.Errorf("Got %v wanted %v", isNew, true)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/canary/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func syncCanaryStatus(flaggerClient clientset.Interface, cd *flaggerv1.Canary, s
cdCopy.Status.CanaryWeight = status.CanaryWeight
cdCopy.Status.FailedChecks = status.FailedChecks
cdCopy.Status.Iterations = status.Iterations
cdCopy.Status.LastAppliedSpec = fmt.Sprintf("%s", hash)
cdCopy.Status.LastAppliedSpec = hash
cdCopy.Status.LastTransitionTime = metav1.Now()
setAll(cdCopy)

Expand Down

0 comments on commit dc77d1c

Please sign in to comment.