mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
setup daemonset tests to allow configurable name, label and selector
This commit is contained in:
@@ -25,8 +25,8 @@ func TestConfigIsDisabled(t *testing.T) {
|
||||
|
||||
func TestConfigTracker_ConfigMaps(t *testing.T) {
|
||||
t.Run("deployment", func(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
configMap := newDeploymentControllerTestConfigMap()
|
||||
configMapProjected := newDeploymentControllerTestConfigProjected()
|
||||
|
||||
@@ -90,7 +90,8 @@ func TestConfigTracker_ConfigMaps(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("daemonset", func(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
configMap := newDaemonSetControllerTestConfigMap()
|
||||
configMapProjected := newDaemonSetControllerTestConfigProjected()
|
||||
|
||||
@@ -157,8 +158,8 @@ func TestConfigTracker_ConfigMaps(t *testing.T) {
|
||||
|
||||
func TestConfigTracker_Secrets(t *testing.T) {
|
||||
t.Run("deployment", func(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
secret := newDeploymentControllerTestSecret()
|
||||
secretProjected := newDeploymentControllerTestSecretProjected()
|
||||
|
||||
@@ -222,7 +223,8 @@ func TestConfigTracker_Secrets(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("daemonset", func(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
secret := newDaemonSetControllerTestSecret()
|
||||
secretProjected := newDaemonSetControllerTestSecretProjected()
|
||||
|
||||
|
||||
@@ -15,21 +15,23 @@ import (
|
||||
)
|
||||
|
||||
func TestDaemonSetController_Sync(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
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{})
|
||||
require.NoError(t, err)
|
||||
|
||||
dae := newDaemonSetControllerTestPodInfo()
|
||||
dae := newDaemonSetControllerTestPodInfo(dc)
|
||||
primaryImage := daePrimary.Spec.Template.Spec.Containers[0].Image
|
||||
sourceImage := dae.Spec.Template.Spec.Containers[0].Image
|
||||
assert.Equal(t, primaryImage, sourceImage)
|
||||
}
|
||||
|
||||
func TestDaemonSetController_Promote(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -58,7 +60,8 @@ func TestDaemonSetController_Promote(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDaemonSetController_NoConfigTracking(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
mocks.controller.configTracker = &NopTracker{}
|
||||
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
@@ -75,7 +78,8 @@ func TestDaemonSetController_NoConfigTracking(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDaemonSetController_HasTargetChanged(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -163,7 +167,8 @@ func TestDaemonSetController_HasTargetChanged(t *testing.T) {
|
||||
|
||||
func TestDaemonSetController_Scale(t *testing.T) {
|
||||
t.Run("ScaleToZero", func(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -179,7 +184,8 @@ func TestDaemonSetController_Scale(t *testing.T) {
|
||||
}
|
||||
})
|
||||
t.Run("ScaleFromZeo", func(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -197,7 +203,8 @@ func TestDaemonSetController_Scale(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDaemonSetController_Finalize(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
@@ -23,14 +23,20 @@ type daemonSetControllerFixture struct {
|
||||
logger *zap.SugaredLogger
|
||||
}
|
||||
|
||||
func newDaemonSetFixture() daemonSetControllerFixture {
|
||||
type daemonsetConfigs struct {
|
||||
name string
|
||||
labelValue string
|
||||
label string
|
||||
}
|
||||
|
||||
func newDaemonSetFixture(dc daemonsetConfigs) daemonSetControllerFixture {
|
||||
// init canary
|
||||
canary := newDaemonSetControllerTestCanary()
|
||||
flaggerClient := fakeFlagger.NewSimpleClientset(canary)
|
||||
|
||||
// init kube clientset and register mock objects
|
||||
kubeClient := fake.NewSimpleClientset(
|
||||
newDaemonSetControllerTestPodInfo(),
|
||||
newDaemonSetControllerTestPodInfo(dc),
|
||||
newDaemonSetControllerTestConfigMap(),
|
||||
newDaemonSetControllerTestConfigMapEnv(),
|
||||
newDaemonSetControllerTestConfigMapVol(),
|
||||
@@ -282,23 +288,23 @@ func newDaemonSetControllerTestCanary() *flaggerv1.Canary {
|
||||
return cd
|
||||
}
|
||||
|
||||
func newDaemonSetControllerTestPodInfo() *appsv1.DaemonSet {
|
||||
func newDaemonSetControllerTestPodInfo(dc daemonsetConfigs) *appsv1.DaemonSet {
|
||||
d := &appsv1.DaemonSet{
|
||||
TypeMeta: metav1.TypeMeta{APIVersion: appsv1.SchemeGroupVersion.String()},
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Namespace: "default",
|
||||
Name: "podinfo",
|
||||
Name: dc.name,
|
||||
},
|
||||
Spec: appsv1.DaemonSetSpec{
|
||||
Selector: &metav1.LabelSelector{
|
||||
MatchLabels: map[string]string{
|
||||
"name": "podinfo",
|
||||
dc.label: dc.labelValue,
|
||||
},
|
||||
},
|
||||
Template: corev1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"name": "podinfo",
|
||||
dc.label: dc.labelValue,
|
||||
},
|
||||
},
|
||||
Spec: corev1.PodSpec{
|
||||
|
||||
@@ -12,7 +12,8 @@ import (
|
||||
)
|
||||
|
||||
func TestDaemonSetController_IsReady(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -24,7 +25,8 @@ func TestDaemonSetController_IsReady(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDaemonSetController_isDaemonSetReady(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
cd := &flaggerv1.Canary{}
|
||||
|
||||
// observed generation is less than desired generation
|
||||
|
||||
@@ -12,7 +12,8 @@ import (
|
||||
)
|
||||
|
||||
func TestDaemonSetController_SyncStatus(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -36,7 +37,8 @@ func TestDaemonSetController_SyncStatus(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDaemonSetController_SetFailedChecks(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -49,7 +51,8 @@ func TestDaemonSetController_SetFailedChecks(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDaemonSetController_SetState(t *testing.T) {
|
||||
mocks := newDaemonSetFixture()
|
||||
dc := daemonsetConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDaemonSetFixture(dc)
|
||||
err := mocks.controller.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
||||
@@ -15,14 +15,14 @@ import (
|
||||
)
|
||||
|
||||
func TestDeploymentController_Sync(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
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{})
|
||||
require.NoError(t, err)
|
||||
|
||||
dep := newDeploymentControllerTest(depConfig)
|
||||
dep := newDeploymentControllerTest(dc)
|
||||
primaryImage := depPrimary.Spec.Template.Spec.Containers[0].Image
|
||||
sourceImage := dep.Spec.Template.Spec.Containers[0].Image
|
||||
assert.Equal(t, sourceImage, primaryImage)
|
||||
@@ -33,8 +33,8 @@ func TestDeploymentController_Sync(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_Promote(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
dep2 := newDeploymentControllerTestV2()
|
||||
@@ -74,8 +74,8 @@ func TestDeploymentController_Promote(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_ScaleToZero(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
err := mocks.controller.ScaleToZero(mocks.canary)
|
||||
@@ -87,8 +87,8 @@ func TestDeploymentController_ScaleToZero(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_NoConfigTracking(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.controller.configTracker = &NopTracker{}
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
@@ -103,8 +103,8 @@ func TestDeploymentController_NoConfigTracking(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_HasTargetChanged(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
// save last applied hash
|
||||
@@ -190,8 +190,8 @@ func TestDeploymentController_HasTargetChanged(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_Finalize(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
|
||||
for _, tc := range []struct {
|
||||
mocks deploymentControllerFixture
|
||||
|
||||
@@ -12,8 +12,8 @@ import (
|
||||
)
|
||||
|
||||
func TestDeploymentController_IsReady(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.controller.Initialize(mocks.canary)
|
||||
|
||||
err := mocks.controller.IsPrimaryReady(mocks.canary)
|
||||
@@ -24,8 +24,8 @@ func TestDeploymentController_IsReady(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_isDeploymentReady(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
|
||||
// observed generation is less than desired generation
|
||||
dp := &appsv1.Deployment{Status: appsv1.DeploymentStatus{ObservedGeneration: -1}}
|
||||
|
||||
@@ -12,8 +12,8 @@ import (
|
||||
)
|
||||
|
||||
func TestDeploymentController_SyncStatus(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
status := flaggerv1.CanaryStatus{
|
||||
@@ -36,8 +36,8 @@ func TestDeploymentController_SyncStatus(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_SetFailedChecks(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
err := mocks.controller.SetStatusFailedChecks(mocks.canary, 1)
|
||||
@@ -49,8 +49,8 @@ func TestDeploymentController_SetFailedChecks(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestDeploymentController_SetState(t *testing.T) {
|
||||
depConfig := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(depConfig)
|
||||
dc := deploymentConfigs{name: "podinfo", label: "name", labelValue: "podinfo"}
|
||||
mocks := newDeploymentFixture(dc)
|
||||
mocks.initializeCanary(t)
|
||||
|
||||
err := mocks.controller.SetStatusPhase(mocks.canary, flaggerv1.CanaryPhaseProgressing)
|
||||
|
||||
Reference in New Issue
Block a user