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 18, 2020
1 parent f518206 commit c3b1ee6
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 6 deletions.
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,7 @@ release-set: fmt version-set helm-package

release-notes:
cd /tmp && GH_REL_URL="https://github.com/buchanae/github-release-notes/releases/download/0.2.0/github-release-notes-linux-amd64-0.2.0.tar.gz" && \
curl -sSL $${GH_REL_URL} | tar xz && sudo mv github-release-notes /usr/local/bin/ && \
github-release-notes -org weaveworks -repo flagger -since-latest-release
curl -sSL $${GH_REL_URL} | tar xz && sudo mv github-release-notes /usr/local/bin/

reset-test:
kubectl delete -f ./artifacts/namespaces
Expand Down
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 c3b1ee6

Please sign in to comment.