mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
add a small test for verifying the label selector is named as expected for deployments
This commit is contained in:
@@ -2,6 +2,7 @@ package canary
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -14,12 +15,12 @@ import (
|
||||
flaggerv1 "github.com/weaveworks/flagger/pkg/apis/flagger/v1beta1"
|
||||
)
|
||||
|
||||
func TestDeploymentController_Sync(t *testing.T) {
|
||||
func TestDeploymentController_Sync_ConsistentNaming(t *testing.T) {
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
depPrimary, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
depPrimary, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), fmt.Sprintf("%s-primary", dc.name), metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
dep := newDeploymentControllerTest(dc)
|
||||
@@ -27,6 +28,32 @@ func TestDeploymentController_Sync(t *testing.T) {
|
||||
sourceImage := dep.Spec.Template.Spec.Containers[0].Image
|
||||
assert.Equal(t, sourceImage, primaryImage)
|
||||
|
||||
primarySelectorValue := depPrimary.Spec.Selector.MatchLabels[dc.label]
|
||||
sourceSelectorValue := dep.Spec.Selector.MatchLabels[dc.label]
|
||||
assert.Equal(t, primarySelectorValue, fmt.Sprintf("%s-primary", sourceSelectorValue))
|
||||
|
||||
hpaPrimary, err := mocks.kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, depPrimary.Name, hpaPrimary.Spec.ScaleTargetRef.Name)
|
||||
}
|
||||
|
||||
func TestDeploymentController_Sync_InconsistentNaming(t *testing.T) {
|
||||
dc := deploymentConfigs{name: "podinfo-service", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
depPrimary, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), fmt.Sprintf("%s-primary", dc.name), metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
dep := newDeploymentControllerTest(dc)
|
||||
primaryImage := depPrimary.Spec.Template.Spec.Containers[0].Image
|
||||
sourceImage := dep.Spec.Template.Spec.Containers[0].Image
|
||||
assert.Equal(t, sourceImage, primaryImage)
|
||||
|
||||
primarySelectorValue := depPrimary.Spec.Selector.MatchLabels[dc.label]
|
||||
sourceSelectorValue := dep.Spec.Selector.MatchLabels[dc.label]
|
||||
assert.Equal(t, primarySelectorValue, fmt.Sprintf("%s-primary", sourceSelectorValue))
|
||||
|
||||
hpaPrimary, err := mocks.kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, depPrimary.Name, hpaPrimary.Spec.ScaleTargetRef.Name)
|
||||
|
||||
@@ -29,6 +29,10 @@ type deploymentControllerFixture struct {
|
||||
logger *zap.SugaredLogger
|
||||
}
|
||||
|
||||
type canaryConfigs struct {
|
||||
targetName string
|
||||
}
|
||||
|
||||
type deploymentConfigs struct {
|
||||
name string
|
||||
labelValue string
|
||||
@@ -59,7 +63,8 @@ func (d deploymentControllerFixture) initializeCanary(t *testing.T) {
|
||||
|
||||
func newDeploymentFixture(dc deploymentConfigs) deploymentControllerFixture {
|
||||
// init canary
|
||||
canary := newDeploymentControllerTestCanary()
|
||||
cc := canaryConfigs{targetName: dc.name}
|
||||
canary := newDeploymentControllerTestCanary(cc)
|
||||
flaggerClient := fakeFlagger.NewSimpleClientset(canary)
|
||||
|
||||
// init kube clientset and register mock objects
|
||||
@@ -299,7 +304,7 @@ func newDeploymentControllerTestSecretTrackerDisabled() *corev1.Secret {
|
||||
}
|
||||
}
|
||||
|
||||
func newDeploymentControllerTestCanary() *flaggerv1.Canary {
|
||||
func newDeploymentControllerTestCanary(cc canaryConfigs) *flaggerv1.Canary {
|
||||
cd := &flaggerv1.Canary{
|
||||
TypeMeta: metav1.TypeMeta{APIVersion: flaggerv1.SchemeGroupVersion.String()},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@@ -308,7 +313,7 @@ func newDeploymentControllerTestCanary() *flaggerv1.Canary {
|
||||
},
|
||||
Spec: flaggerv1.CanarySpec{
|
||||
TargetRef: flaggerv1.CrossNamespaceObjectReference{
|
||||
Name: "podinfo",
|
||||
Name: cc.targetName,
|
||||
APIVersion: "apps/v1",
|
||||
Kind: "Deployment",
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user