setup daemonset tests to allow configurable name, label and selector

This commit is contained in:
Forrest Thomas
2020-09-02 12:46:02 -07:00
parent b378b3eb5d
commit 364fd0db65
8 changed files with 68 additions and 48 deletions
+8 -6
View File
@@ -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 -8
View File
@@ -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)
+12 -6
View File
@@ -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{
+4 -2
View File
@@ -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
+6 -3
View File
@@ -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)
+13 -13
View File
@@ -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
+4 -4
View File
@@ -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}}
+6 -6
View File
@@ -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)