mirror of
https://github.com/fluxcd/flagger.git
synced 2026-03-02 17:51:00 +00:00
make deployment tests aligned with daemonset
This commit is contained in:
@@ -102,7 +102,7 @@ func (c *DaemonSetController) Promote(cd *flaggerv1.Canary) error {
|
||||
|
||||
canary, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("damonset %s.%s get query error %v", targetName, cd.Namespace, err)
|
||||
return fmt.Errorf("damonset %s.%s get query error: %v", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
label, err := c.getSelectorLabel(canary)
|
||||
@@ -112,7 +112,7 @@ func (c *DaemonSetController) Promote(cd *flaggerv1.Canary) error {
|
||||
|
||||
primary, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(primaryName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("daemonset %s.%s get query error %w", primaryName, cd.Namespace, err)
|
||||
return fmt.Errorf("daemonset %s.%s get query error: %w", primaryName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
// promote secrets and config maps
|
||||
@@ -160,7 +160,7 @@ func (c *DaemonSetController) HasTargetChanged(cd *flaggerv1.Canary) (bool, erro
|
||||
targetName := cd.Spec.TargetRef.Name
|
||||
canary, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("daemonset %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return false, fmt.Errorf("daemonset %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
// ignore `daemonSetScaleDownNodeSelector` node selector
|
||||
@@ -182,7 +182,7 @@ func (c *DaemonSetController) GetMetadata(cd *flaggerv1.Canary) (string, map[str
|
||||
|
||||
canaryDae, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("daemonset %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return "", nil, fmt.Errorf("daemonset %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
label, err := c.getSelectorLabel(canaryDae)
|
||||
@@ -203,7 +203,7 @@ func (c *DaemonSetController) createPrimaryDaemonSet(cd *flaggerv1.Canary) error
|
||||
|
||||
canaryDae, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("daemonset %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return fmt.Errorf("daemonset %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
if canaryDae.Spec.UpdateStrategy.Type != "" &&
|
||||
|
||||
@@ -16,7 +16,7 @@ func (c *DaemonSetController) IsPrimaryReady(cd *flaggerv1.Canary) error {
|
||||
primaryName := fmt.Sprintf("%s-primary", cd.Spec.TargetRef.Name)
|
||||
primary, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(primaryName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("daemonset %s.%s get query error %w", primaryName, cd.Namespace, err)
|
||||
return fmt.Errorf("daemonset %s.%s get query error: %w", primaryName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
_, err = c.isDaemonSetReady(cd, primary)
|
||||
@@ -32,7 +32,7 @@ func (c *DaemonSetController) IsCanaryReady(cd *flaggerv1.Canary) (bool, error)
|
||||
targetName := cd.Spec.TargetRef.Name
|
||||
canary, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return true, fmt.Errorf("daemonset %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return true, fmt.Errorf("daemonset %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
retriable, err := c.isDaemonSetReady(cd, canary)
|
||||
|
||||
@@ -70,7 +70,7 @@ func (c *DeploymentController) Promote(cd *flaggerv1.Canary) error {
|
||||
|
||||
canary, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("deployment %s.%s query error %v", targetName, cd.Namespace, err)
|
||||
return fmt.Errorf("deployment %s.%s query error: %v", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
label, err := c.getSelectorLabel(canary)
|
||||
@@ -80,7 +80,7 @@ func (c *DeploymentController) Promote(cd *flaggerv1.Canary) error {
|
||||
|
||||
primary, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(primaryName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("deployment %s.%s query error %v", primaryName, cd.Namespace, err)
|
||||
return fmt.Errorf("deployment %s.%s query error: %v", primaryName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
// promote secrets and config maps
|
||||
@@ -188,7 +188,7 @@ func (c *DeploymentController) GetMetadata(cd *flaggerv1.Canary) (string, map[st
|
||||
|
||||
canaryDep, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("deployment %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return "", nil, fmt.Errorf("deployment %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
label, err := c.getSelectorLabel(canaryDep)
|
||||
@@ -209,7 +209,7 @@ func (c *DeploymentController) createPrimaryDeployment(cd *flaggerv1.Canary) err
|
||||
|
||||
canaryDep, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("deplyoment %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return fmt.Errorf("deplyoment %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
label, err := c.getSelectorLabel(canaryDep)
|
||||
|
||||
@@ -72,68 +72,6 @@ func TestDeploymentController_Promote(t *testing.T) {
|
||||
assert.Equal(t, int32(2), hpaPrimary.Spec.MaxReplicas)
|
||||
}
|
||||
|
||||
func TestDeploymentController_IsReady(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err, "Expected primary readiness check to fail")
|
||||
|
||||
err = mocks.controller.IsPrimaryReady(mocks.canary)
|
||||
require.Error(t, err)
|
||||
|
||||
_, err = mocks.controller.IsCanaryReady(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestDeploymentController_SetFailedChecks(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = mocks.controller.SetStatusFailedChecks(mocks.canary, 1)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 1, res.Status.FailedChecks)
|
||||
}
|
||||
|
||||
func TestDeploymentController_SetState(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = mocks.controller.SetStatusPhase(mocks.canary, flaggerv1.CanaryPhaseProgressing)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseProgressing, res.Status.Phase)
|
||||
}
|
||||
|
||||
func TestDeploymentController_SyncStatus(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
status := flaggerv1.CanaryStatus{
|
||||
Phase: flaggerv1.CanaryPhaseProgressing,
|
||||
FailedChecks: 2,
|
||||
}
|
||||
err = mocks.controller.SyncStatus(mocks.canary, status)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, status.Phase, res.Status.Phase)
|
||||
assert.Equal(t, status.FailedChecks, res.Status.FailedChecks)
|
||||
|
||||
require.NotNil(t, res.Status.TrackedConfigs)
|
||||
configs := *res.Status.TrackedConfigs
|
||||
secret := newDeploymentControllerTestSecret()
|
||||
_, exists := configs["secret/"+secret.GetName()]
|
||||
assert.True(t, exists, "Secret %s not found in status", secret.GetName())
|
||||
}
|
||||
|
||||
func TestDeploymentController_ScaleToZero(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
|
||||
@@ -17,7 +17,7 @@ func (c *DeploymentController) IsPrimaryReady(cd *flaggerv1.Canary) error {
|
||||
primaryName := fmt.Sprintf("%s-primary", cd.Spec.TargetRef.Name)
|
||||
primary, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(primaryName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("deployment %s.%s get query error %w", primaryName, cd.Namespace, err)
|
||||
return fmt.Errorf("deployment %s.%s get query error: %w", primaryName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
_, err = c.isDeploymentReady(primary, cd.GetProgressDeadlineSeconds())
|
||||
|
||||
19
pkg/canary/deployment_ready_test.go
Normal file
19
pkg/canary/deployment_ready_test.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package canary
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestDeploymentController_IsReady(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err, "Expected primary readiness check to fail")
|
||||
|
||||
err = mocks.controller.IsPrimaryReady(mocks.canary)
|
||||
require.Error(t, err)
|
||||
|
||||
_, err = mocks.controller.IsCanaryReady(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
61
pkg/canary/deployment_status_test.go
Normal file
61
pkg/canary/deployment_status_test.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package canary
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
flaggerv1 "github.com/weaveworks/flagger/pkg/apis/flagger/v1beta1"
|
||||
)
|
||||
|
||||
func TestDeploymentController_SyncStatus(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
status := flaggerv1.CanaryStatus{
|
||||
Phase: flaggerv1.CanaryPhaseProgressing,
|
||||
FailedChecks: 2,
|
||||
}
|
||||
err = mocks.controller.SyncStatus(mocks.canary, status)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, status.Phase, res.Status.Phase)
|
||||
assert.Equal(t, status.FailedChecks, res.Status.FailedChecks)
|
||||
|
||||
require.NotNil(t, res.Status.TrackedConfigs)
|
||||
configs := *res.Status.TrackedConfigs
|
||||
secret := newDeploymentControllerTestSecret()
|
||||
_, exists := configs["secret/"+secret.GetName()]
|
||||
assert.True(t, exists, "Secret %s not found in status", secret.GetName())
|
||||
}
|
||||
|
||||
func TestDeploymentController_SetFailedChecks(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = mocks.controller.SetStatusFailedChecks(mocks.canary, 1)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 1, res.Status.FailedChecks)
|
||||
}
|
||||
|
||||
func TestDeploymentController_SetState(t *testing.T) {
|
||||
mocks := newDeploymentFixture()
|
||||
err := mocks.controller.Initialize(mocks.canary, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = mocks.controller.SetStatusPhase(mocks.canary, flaggerv1.CanaryPhaseProgressing)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseProgressing, res.Status.Phase)
|
||||
}
|
||||
@@ -156,12 +156,12 @@ func (c *ServiceController) Promote(cd *flaggerv1.Canary) error {
|
||||
|
||||
canary, err := c.kubeClient.CoreV1().Services(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("service %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return fmt.Errorf("service %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
primary, err := c.kubeClient.CoreV1().Services(cd.Namespace).Get(primaryName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("service %s.%s get query error %w", primaryName, cd.Namespace, err)
|
||||
return fmt.Errorf("service %s.%s get query error: %w", primaryName, cd.Namespace, err)
|
||||
}
|
||||
|
||||
primaryCopy := canary.DeepCopy()
|
||||
@@ -187,7 +187,7 @@ func (c *ServiceController) HasTargetChanged(cd *flaggerv1.Canary) (bool, error)
|
||||
targetName := cd.Spec.TargetRef.Name
|
||||
canary, err := c.kubeClient.CoreV1().Services(cd.Namespace).Get(targetName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("service %s.%s get query error %w", targetName, cd.Namespace, err)
|
||||
return false, fmt.Errorf("service %s.%s get query error: %w", targetName, cd.Namespace, err)
|
||||
}
|
||||
return hasSpecChanged(cd, canary.Spec)
|
||||
}
|
||||
@@ -204,7 +204,7 @@ func (c *ServiceController) ScaleFromZero(_ *flaggerv1.Canary) error {
|
||||
func (c *ServiceController) SyncStatus(cd *flaggerv1.Canary, status flaggerv1.CanaryStatus) error {
|
||||
dep, err := c.kubeClient.CoreV1().Services(cd.Namespace).Get(cd.Spec.TargetRef.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("service %s.%s get query error %w", cd.Spec.TargetRef.Name, cd.Namespace, err)
|
||||
return fmt.Errorf("service %s.%s get query error: %w", cd.Spec.TargetRef.Name, cd.Namespace, err)
|
||||
}
|
||||
|
||||
return syncCanaryStatus(c.flaggerClient, cd, status, dep.Spec, func(cdCopy *flaggerv1.Canary) {})
|
||||
|
||||
Reference in New Issue
Block a user