diff --git a/pkg/canary/daemonset_controller_test.go b/pkg/canary/daemonset_controller_test.go index 581d4c3f..85bd2c2c 100644 --- a/pkg/canary/daemonset_controller_test.go +++ b/pkg/canary/daemonset_controller_test.go @@ -2,6 +2,7 @@ package canary import ( "context" + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -14,19 +15,42 @@ import ( flaggerv1 "github.com/weaveworks/flagger/pkg/apis/flagger/v1beta1" ) -func TestDaemonSetController_Sync(t *testing.T) { +func TestDaemonSetController_Sync_ConsistentNaming(t *testing.T) { dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"} mocks := newDaemonSetFixture(dc) err := mocks.controller.Initialize(mocks.canary) require.NoError(t, err) - daePrimary, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{}) + daePrimary, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), fmt.Sprintf("%s-primary", dc.name), metav1.GetOptions{}) require.NoError(t, err) dae := newDaemonSetControllerTestPodInfo(dc) primaryImage := daePrimary.Spec.Template.Spec.Containers[0].Image sourceImage := dae.Spec.Template.Spec.Containers[0].Image assert.Equal(t, primaryImage, sourceImage) + + primarySelectorValue := daePrimary.Spec.Selector.MatchLabels[dc.label] + sourceSelectorValue := dae.Spec.Selector.MatchLabels[dc.label] + assert.Equal(t, primarySelectorValue, fmt.Sprintf("%s-primary", sourceSelectorValue)) +} + +func TestDaemonSetController_Sync_InconsistentNaming(t *testing.T) { + dc := daemonsetConfigs{name: "podinfo-service", label: "name", labelValue: "podinfo"} + mocks := newDaemonSetFixture(dc) + err := mocks.controller.Initialize(mocks.canary) + require.NoError(t, err) + + daePrimary, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), fmt.Sprintf("%s-primary", dc.name), metav1.GetOptions{}) + require.NoError(t, err) + + dae := newDaemonSetControllerTestPodInfo(dc) + primaryImage := daePrimary.Spec.Template.Spec.Containers[0].Image + sourceImage := dae.Spec.Template.Spec.Containers[0].Image + assert.Equal(t, primaryImage, sourceImage) + + primarySelectorValue := daePrimary.Spec.Selector.MatchLabels[dc.label] + sourceSelectorValue := dae.Spec.Selector.MatchLabels[dc.label] + assert.Equal(t, primarySelectorValue, fmt.Sprintf("%s-primary", sourceSelectorValue)) } func TestDaemonSetController_Promote(t *testing.T) { diff --git a/pkg/canary/daemonset_fixture_test.go b/pkg/canary/daemonset_fixture_test.go index db474126..a844c6ca 100644 --- a/pkg/canary/daemonset_fixture_test.go +++ b/pkg/canary/daemonset_fixture_test.go @@ -31,7 +31,7 @@ type daemonsetConfigs struct { func newDaemonSetFixture(dc daemonsetConfigs) daemonSetControllerFixture { // init canary - canary := newDaemonSetControllerTestCanary() + canary := newDaemonSetControllerTestCanary(dc) flaggerClient := fakeFlagger.NewSimpleClientset(canary) // init kube clientset and register mock objects @@ -270,7 +270,7 @@ func newDaemonSetControllerTestSecretTrackerDisabled() *corev1.Secret { } } -func newDaemonSetControllerTestCanary() *flaggerv1.Canary { +func newDaemonSetControllerTestCanary(dc daemonsetConfigs) *flaggerv1.Canary { cd := &flaggerv1.Canary{ TypeMeta: metav1.TypeMeta{APIVersion: flaggerv1.SchemeGroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{ @@ -279,7 +279,7 @@ func newDaemonSetControllerTestCanary() *flaggerv1.Canary { }, Spec: flaggerv1.CanarySpec{ TargetRef: flaggerv1.CrossNamespaceObjectReference{ - Name: "podinfo", + Name: dc.name, APIVersion: "apps/v1", Kind: "DaemonSet", },