From 5904348ba5de6d23474669435e73c3d860454089 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Sat, 26 Jan 2019 00:39:33 +0200 Subject: [PATCH] Refactor tests - consolidate fake clients and mock objects --- pkg/controller/controller_test.go | 60 +++++++++++-------- pkg/controller/deployer_test.go | 96 ++++++++++++++----------------- pkg/controller/router_test.go | 82 +++++--------------------- pkg/controller/scheduler_test.go | 90 ++++++++++++++--------------- 4 files changed, 137 insertions(+), 191 deletions(-) diff --git a/pkg/controller/controller_test.go b/pkg/controller/controller_test.go index 6f6077a6..1129955f 100644 --- a/pkg/controller/controller_test.go +++ b/pkg/controller/controller_test.go @@ -27,18 +27,20 @@ var ( noResyncPeriodFunc = func() time.Duration { return 0 } ) -func SetupTest() ( - canary *v1alpha3.Canary, - kubeClient kubernetes.Interface, - istioClient istioclientset.Interface, - flaggerClient clientset.Interface, - deployer CanaryDeployer, - router CanaryRouter, - observer CanaryObserver, - controller *Controller, - logger *zap.SugaredLogger, -) { - canary = newTestCanary() +type Mocks struct { + canary *v1alpha3.Canary + kubeClient kubernetes.Interface + istioClient istioclientset.Interface + flaggerClient clientset.Interface + deployer CanaryDeployer + router CanaryRouter + observer CanaryObserver + ctrl *Controller + logger *zap.SugaredLogger +} + +func SetupMocks() Mocks { + canary := newTestCanary() configMap := NewTestConfigMap() configMapEnv := NewTestConfigMapEnv() configMapVol := NewTestConfigMapVol() @@ -48,19 +50,19 @@ func SetupTest() ( dep := newTestDeployment() hpa := newTestHPA() - kubeClient = fake.NewSimpleClientset(secret, secretEnv, secretVol, configMap, configMapEnv, configMapVol, dep, hpa) + kubeClient := fake.NewSimpleClientset(secret, secretEnv, secretVol, configMap, configMapEnv, configMapVol, dep, hpa) - istioClient = fakeIstio.NewSimpleClientset() + istioClient := fakeIstio.NewSimpleClientset() - flaggerClient = fakeFlagger.NewSimpleClientset(canary) + flaggerClient := fakeFlagger.NewSimpleClientset(canary) - logger, _ = logging.NewLogger("debug") + logger, _ := logging.NewLogger("debug") - observer = CanaryObserver{ + observer := CanaryObserver{ metricsServer: "fake", } - deployer = CanaryDeployer{ + deployer := CanaryDeployer{ flaggerClient: flaggerClient, kubeClient: kubeClient, logger: logger, @@ -71,16 +73,26 @@ func SetupTest() ( }, } - router = CanaryRouter{ + router := CanaryRouter{ flaggerClient: flaggerClient, kubeClient: kubeClient, istioClient: istioClient, logger: logger, } - controller = newTestController(kubeClient, istioClient, flaggerClient, logger, deployer, router, observer) + controller := newTestController(kubeClient, istioClient, flaggerClient, logger, deployer, router, observer) - return + return Mocks{ + canary: canary, + observer: observer, + router: router, + deployer: deployer, + logger: logger, + flaggerClient: flaggerClient, + istioClient: istioClient, + kubeClient: kubeClient, + ctrl: controller, + } } func newTestController( @@ -129,7 +141,7 @@ func NewTestConfigMap() *corev1.ConfigMap { } } -func NewTestConfigMapUpdated() *corev1.ConfigMap { +func NewTestConfigMapV2() *corev1.ConfigMap { return &corev1.ConfigMap{ TypeMeta: metav1.TypeMeta{APIVersion: corev1.SchemeGroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{ @@ -183,7 +195,7 @@ func NewTestSecret() *corev1.Secret { } } -func NewTestSecretUpdated() *corev1.Secret { +func NewTestSecretV2() *corev1.Secret { return &corev1.Secret{ TypeMeta: metav1.TypeMeta{APIVersion: corev1.SchemeGroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{ @@ -385,7 +397,7 @@ func newTestDeployment() *appsv1.Deployment { return d } -func newTestDeploymentUpdated() *appsv1.Deployment { +func newTestDeploymentV2() *appsv1.Deployment { d := &appsv1.Deployment{ TypeMeta: metav1.TypeMeta{APIVersion: appsv1.SchemeGroupVersion.String()}, ObjectMeta: metav1.ObjectMeta{ diff --git a/pkg/controller/deployer_test.go b/pkg/controller/deployer_test.go index 62984762..08a62833 100644 --- a/pkg/controller/deployer_test.go +++ b/pkg/controller/deployer_test.go @@ -8,14 +8,13 @@ import ( ) func TestCanaryDeployer_Sync(t *testing.T) { - canary, kubeClient, _, _, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - depPrimary, err := kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) + depPrimary, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -30,7 +29,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { t.Errorf("Got image %s wanted %s", primaryImage, sourceImage) } - hpaPrimary, err := kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers("default").Get("podinfo-primary", metav1.GetOptions{}) + hpaPrimary, err := mocks.kubeClient.AutoscalingV2beta1().HorizontalPodAutoscalers("default").Get("podinfo-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -39,7 +38,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { t.Errorf("Got HPA target %s wanted %s", hpaPrimary.Spec.ScaleTargetRef.Name, depPrimary.Name) } - configPrimary, err := kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{}) + configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -48,7 +47,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { t.Errorf("Got ConfigMap color %s wanted %s", configPrimary.Data["color"], configMap.Data["color"]) } - configPrimaryEnv, err := kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-all-env-primary", metav1.GetOptions{}) + configPrimaryEnv, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-all-env-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -57,7 +56,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { t.Errorf("Got ConfigMap %s wanted %s", configPrimaryEnv.Data["a"], configMap.Data["color"]) } - configPrimaryVol, err := kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-vol-primary", metav1.GetOptions{}) + configPrimaryVol, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-vol-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -66,7 +65,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { t.Errorf("Got ConfigMap color %s wanted %s", configPrimary.Data["color"], configMap.Data["color"]) } - secretPrimary, err := kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{}) + secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -75,7 +74,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { t.Errorf("Got primary secret %s wanted %s", secretPrimary.Data["apiKey"], secret.Data["apiKey"]) } - secretPrimaryEnv, err := kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-all-env-primary", metav1.GetOptions{}) + secretPrimaryEnv, err := mocks.kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-all-env-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -84,7 +83,7 @@ func TestCanaryDeployer_Sync(t *testing.T) { t.Errorf("Got primary secret %s wanted %s", secretPrimary.Data["apiKey"], secret.Data["apiKey"]) } - secretPrimaryVol, err := kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-vol-primary", metav1.GetOptions{}) + secretPrimaryVol, err := mocks.kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-vol-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -95,20 +94,19 @@ func TestCanaryDeployer_Sync(t *testing.T) { } func TestCanaryDeployer_IsNewSpec(t *testing.T) { - canary, kubeClient, _, _, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - dep2 := newTestDeploymentUpdated() - _, err = kubeClient.AppsV1().Deployments("default").Update(dep2) + dep2 := newTestDeploymentV2() + _, err = mocks.kubeClient.AppsV1().Deployments("default").Update(dep2) if err != nil { t.Fatal(err.Error()) } - isNew, err := deployer.IsNewSpec(canary) + isNew, err := mocks.deployer.IsNewSpec(mocks.canary) if err != nil { t.Fatal(err.Error()) } @@ -119,31 +117,30 @@ func TestCanaryDeployer_IsNewSpec(t *testing.T) { } func TestCanaryDeployer_Promote(t *testing.T) { - canary, kubeClient, _, _, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - dep2 := newTestDeploymentUpdated() - _, err = kubeClient.AppsV1().Deployments("default").Update(dep2) + dep2 := newTestDeploymentV2() + _, err = mocks.kubeClient.AppsV1().Deployments("default").Update(dep2) if err != nil { t.Fatal(err.Error()) } - config2 := NewTestConfigMapUpdated() - _, err = kubeClient.CoreV1().ConfigMaps("default").Update(config2) + config2 := NewTestConfigMapV2() + _, err = mocks.kubeClient.CoreV1().ConfigMaps("default").Update(config2) if err != nil { t.Fatal(err.Error()) } - err = deployer.Promote(canary) + err = mocks.deployer.Promote(mocks.canary) if err != nil { t.Fatal(err.Error()) } - depPrimary, err := kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) + depPrimary, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -154,7 +151,7 @@ func TestCanaryDeployer_Promote(t *testing.T) { t.Errorf("Got image %s wanted %s", primaryImage, sourceImage) } - configPrimary, err := kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{}) + configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -165,38 +162,36 @@ func TestCanaryDeployer_Promote(t *testing.T) { } func TestCanaryDeployer_IsReady(t *testing.T) { - canary, _, _, _, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - _, err = deployer.IsPrimaryReady(canary) + _, err = mocks.deployer.IsPrimaryReady(mocks.canary) if err != nil { t.Fatal(err.Error()) } - _, err = deployer.IsCanaryReady(canary) + _, err = mocks.deployer.IsCanaryReady(mocks.canary) if err != nil { t.Fatal(err.Error()) } } func TestCanaryDeployer_SetFailedChecks(t *testing.T) { - canary, _, _, flaggerClient, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - err = deployer.SetStatusFailedChecks(canary, 1) + err = mocks.deployer.SetStatusFailedChecks(mocks.canary, 1) if err != nil { t.Fatal(err.Error()) } - res, err := flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) + res, err := mocks.flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -207,19 +202,18 @@ func TestCanaryDeployer_SetFailedChecks(t *testing.T) { } func TestCanaryDeployer_SetState(t *testing.T) { - canary, _, _, flaggerClient, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - err = deployer.SetStatusPhase(canary, v1alpha3.CanaryProgressing) + err = mocks.deployer.SetStatusPhase(mocks.canary, v1alpha3.CanaryProgressing) if err != nil { t.Fatal(err.Error()) } - res, err := flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) + res, err := mocks.flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -230,9 +224,8 @@ func TestCanaryDeployer_SetState(t *testing.T) { } func TestCanaryDeployer_SyncStatus(t *testing.T) { - canary, _, _, flaggerClient, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } @@ -241,12 +234,12 @@ func TestCanaryDeployer_SyncStatus(t *testing.T) { Phase: v1alpha3.CanaryProgressing, FailedChecks: 2, } - err = deployer.SyncStatus(canary, status) + err = mocks.deployer.SyncStatus(mocks.canary, status) if err != nil { t.Fatal(err.Error()) } - res, err := flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) + res, err := mocks.flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -261,16 +254,15 @@ func TestCanaryDeployer_SyncStatus(t *testing.T) { } func TestCanaryDeployer_Scale(t *testing.T) { - canary, kubeClient, _, _, deployer, _, _, _, _ := SetupTest() - - err := deployer.Sync(canary) + mocks := SetupMocks() + err := mocks.deployer.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - err = deployer.Scale(canary, 2) + err = mocks.deployer.Scale(mocks.canary, 2) - c, err := kubeClient.AppsV1().Deployments("default").Get("podinfo", metav1.GetOptions{}) + c, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } diff --git a/pkg/controller/router_test.go b/pkg/controller/router_test.go index 4c7f898b..e9b7c9a9 100644 --- a/pkg/controller/router_test.go +++ b/pkg/controller/router_test.go @@ -5,37 +5,17 @@ import ( "testing" istiov1alpha3 "github.com/knative/pkg/apis/istio/v1alpha3" - fakeIstio "github.com/knative/pkg/client/clientset/versioned/fake" - fakeFlagger "github.com/stefanprodan/flagger/pkg/client/clientset/versioned/fake" - "github.com/stefanprodan/flagger/pkg/logging" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes/fake" ) func TestCanaryRouter_Sync(t *testing.T) { - canary := newTestCanary() - dep := newTestDeployment() - hpa := newTestHPA() - - flaggerClient := fakeFlagger.NewSimpleClientset(canary) - kubeClient := fake.NewSimpleClientset(dep, hpa) - istioClient := fakeIstio.NewSimpleClientset() - - logger, _ := logging.NewLogger("debug") - - router := &CanaryRouter{ - flaggerClient: flaggerClient, - kubeClient: kubeClient, - istioClient: istioClient, - logger: logger, - } - - err := router.Sync(canary) + mocks := SetupMocks() + err := mocks.router.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - canarySvc, err := kubeClient.CoreV1().Services("default").Get("podinfo", metav1.GetOptions{}) + canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -48,7 +28,7 @@ func TestCanaryRouter_Sync(t *testing.T) { t.Errorf("Got svc port %v wanted %v", canarySvc.Spec.Ports[0].Port, 9898) } - primarySvc, err := kubeClient.CoreV1().Services("default").Get("podinfo-primary", metav1.GetOptions{}) + primarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -61,7 +41,7 @@ func TestCanaryRouter_Sync(t *testing.T) { t.Errorf("Got primary svc port %v wanted %v", primarySvc.Spec.Ports[0].Port, 9898) } - vs, err := istioClient.NetworkingV1alpha3().VirtualServices("default").Get("podinfo", metav1.GetOptions{}) + vs, err := mocks.istioClient.NetworkingV1alpha3().VirtualServices("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -76,29 +56,13 @@ func TestCanaryRouter_Sync(t *testing.T) { } func TestCanaryRouter_GetRoutes(t *testing.T) { - canary := newTestCanary() - dep := newTestDeployment() - hpa := newTestHPA() - - flaggerClient := fakeFlagger.NewSimpleClientset(canary) - kubeClient := fake.NewSimpleClientset(dep, hpa) - istioClient := fakeIstio.NewSimpleClientset() - - logger, _ := logging.NewLogger("debug") - - router := &CanaryRouter{ - flaggerClient: flaggerClient, - kubeClient: kubeClient, - istioClient: istioClient, - logger: logger, - } - - err := router.Sync(canary) + mocks := SetupMocks() + err := mocks.router.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - p, c, err := router.GetRoutes(canary) + p, c, err := mocks.router.GetRoutes(mocks.canary) if err != nil { t.Fatal(err.Error()) } @@ -113,29 +77,13 @@ func TestCanaryRouter_GetRoutes(t *testing.T) { } func TestCanaryRouter_SetRoutes(t *testing.T) { - canary := newTestCanary() - dep := newTestDeployment() - hpa := newTestHPA() - - flaggerClient := fakeFlagger.NewSimpleClientset(canary) - kubeClient := fake.NewSimpleClientset(dep, hpa) - istioClient := fakeIstio.NewSimpleClientset() - - logger, _ := logging.NewLogger("debug") - - router := &CanaryRouter{ - flaggerClient: flaggerClient, - kubeClient: kubeClient, - istioClient: istioClient, - logger: logger, - } - - err := router.Sync(canary) + mocks := SetupMocks() + err := mocks.router.Sync(mocks.canary) if err != nil { t.Fatal(err.Error()) } - p, c, err := router.GetRoutes(canary) + p, c, err := mocks.router.GetRoutes(mocks.canary) if err != nil { t.Fatal(err.Error()) } @@ -143,12 +91,12 @@ func TestCanaryRouter_SetRoutes(t *testing.T) { p.Weight = 50 c.Weight = 50 - err = router.SetRoutes(canary, p, c) + err = mocks.router.SetRoutes(mocks.canary, p, c) if err != nil { t.Fatal(err.Error()) } - vs, err := istioClient.NetworkingV1alpha3().VirtualServices("default").Get("podinfo", metav1.GetOptions{}) + vs, err := mocks.istioClient.NetworkingV1alpha3().VirtualServices("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -158,10 +106,10 @@ func TestCanaryRouter_SetRoutes(t *testing.T) { for _, http := range vs.Spec.Http { for _, route := range http.Route { - if route.Destination.Host == fmt.Sprintf("%s-primary", canary.Spec.TargetRef.Name) { + if route.Destination.Host == fmt.Sprintf("%s-primary", mocks.canary.Spec.TargetRef.Name) { pRoute = route } - if route.Destination.Host == canary.Spec.TargetRef.Name { + if route.Destination.Host == mocks.canary.Spec.TargetRef.Name { cRoute = route } } diff --git a/pkg/controller/scheduler_test.go b/pkg/controller/scheduler_test.go index bb27e891..e93b7e1e 100644 --- a/pkg/controller/scheduler_test.go +++ b/pkg/controller/scheduler_test.go @@ -7,33 +7,30 @@ import ( ) func TestScheduler_Init(t *testing.T) { - _, kubeClient, _, _, _, _, _, ctrl, _ := SetupTest() + mocks := SetupMocks() + mocks.ctrl.advanceCanary("podinfo", "default", false) - ctrl.advanceCanary("podinfo", "default", false) - - _, err := kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) + _, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } } func TestScheduler_NewRevision(t *testing.T) { - _, kubeClient, _, _, _, _, _, ctrl, _ := SetupTest() - - // init - ctrl.advanceCanary("podinfo", "default", false) + mocks := SetupMocks() + mocks.ctrl.advanceCanary("podinfo", "default", false) // update - dep2 := newTestDeploymentUpdated() - _, err := kubeClient.AppsV1().Deployments("default").Update(dep2) + dep2 := newTestDeploymentV2() + _, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2) if err != nil { t.Fatal(err.Error()) } // detect changes - ctrl.advanceCanary("podinfo", "default", false) + mocks.ctrl.advanceCanary("podinfo", "default", false) - c, err := kubeClient.AppsV1().Deployments("default").Get("podinfo", metav1.GetOptions{}) + c, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -44,21 +41,20 @@ func TestScheduler_NewRevision(t *testing.T) { } func TestScheduler_Rollback(t *testing.T) { - canary, _, _, flaggerClient, deployer, _, _, ctrl, _ := SetupTest() - + mocks := SetupMocks() // init - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) // update failed checks to max - err := deployer.SyncStatus(canary, v1alpha3.CanaryStatus{Phase: v1alpha3.CanaryProgressing, FailedChecks: 11}) + err := mocks.deployer.SyncStatus(mocks.canary, v1alpha3.CanaryStatus{Phase: v1alpha3.CanaryProgressing, FailedChecks: 11}) if err != nil { t.Fatal(err.Error()) } // detect changes - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) - c, err := flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) + c, err := mocks.flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -69,24 +65,23 @@ func TestScheduler_Rollback(t *testing.T) { } func TestScheduler_NewRevisionReset(t *testing.T) { - canary, kubeClient, _, _, _, router, _, ctrl, _ := SetupTest() - + mocks := SetupMocks() // init - ctrl.advanceCanary("podinfo", "default", false) + mocks.ctrl.advanceCanary("podinfo", "default", false) // first update - dep2 := newTestDeploymentUpdated() - _, err := kubeClient.AppsV1().Deployments("default").Update(dep2) + dep2 := newTestDeploymentV2() + _, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2) if err != nil { t.Fatal(err.Error()) } // detect changes - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) // advance - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) - primaryRoute, canaryRoute, err := router.GetRoutes(canary) + primaryRoute, canaryRoute, err := mocks.router.GetRoutes(mocks.canary) if err != nil { t.Fatal(err.Error()) } @@ -101,15 +96,15 @@ func TestScheduler_NewRevisionReset(t *testing.T) { // second update dep2.Spec.Template.Spec.ServiceAccountName = "test" - _, err = kubeClient.AppsV1().Deployments("default").Update(dep2) + _, err = mocks.kubeClient.AppsV1().Deployments("default").Update(dep2) if err != nil { t.Fatal(err.Error()) } // detect changes - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) - primaryRoute, canaryRoute, err = router.GetRoutes(canary) + primaryRoute, canaryRoute, err = mocks.router.GetRoutes(mocks.canary) if err != nil { t.Fatal(err.Error()) } @@ -124,52 +119,51 @@ func TestScheduler_NewRevisionReset(t *testing.T) { } func TestScheduler_Promotion(t *testing.T) { - canary, kubeClient, _, flaggerClient, _, router, _, ctrl, _ := SetupTest() - + mocks := SetupMocks() // init - ctrl.advanceCanary("podinfo", "default", false) + mocks.ctrl.advanceCanary("podinfo", "default", false) // update - dep2 := newTestDeploymentUpdated() - _, err := kubeClient.AppsV1().Deployments("default").Update(dep2) + dep2 := newTestDeploymentV2() + _, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2) if err != nil { t.Fatal(err.Error()) } // detect changes - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) - primaryRoute, canaryRoute, err := router.GetRoutes(canary) + primaryRoute, canaryRoute, err := mocks.router.GetRoutes(mocks.canary) if err != nil { t.Fatal(err.Error()) } primaryRoute.Weight = 60 canaryRoute.Weight = 40 - err = ctrl.router.SetRoutes(canary, primaryRoute, canaryRoute) + err = mocks.ctrl.router.SetRoutes(mocks.canary, primaryRoute, canaryRoute) if err != nil { t.Fatal(err.Error()) } - config2 := NewTestConfigMapUpdated() - _, err = kubeClient.CoreV1().ConfigMaps("default").Update(config2) + config2 := NewTestConfigMapV2() + _, err = mocks.kubeClient.CoreV1().ConfigMaps("default").Update(config2) if err != nil { t.Fatal(err.Error()) } - secret2 := NewTestSecretUpdated() - _, err = kubeClient.CoreV1().Secrets("default").Update(secret2) + secret2 := NewTestSecretV2() + _, err = mocks.kubeClient.CoreV1().Secrets("default").Update(secret2) if err != nil { t.Fatal(err.Error()) } // advance - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) // promote - ctrl.advanceCanary("podinfo", "default", true) + mocks.ctrl.advanceCanary("podinfo", "default", true) - primaryRoute, canaryRoute, err = router.GetRoutes(canary) + primaryRoute, canaryRoute, err = mocks.router.GetRoutes(mocks.canary) if err != nil { t.Fatal(err.Error()) } @@ -182,7 +176,7 @@ func TestScheduler_Promotion(t *testing.T) { t.Errorf("Got canary route %v wanted %v", canaryRoute.Weight, 0) } - primaryDep, err := kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) + primaryDep, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -193,7 +187,7 @@ func TestScheduler_Promotion(t *testing.T) { t.Errorf("Got primary image %v wanted %v", primaryImage, canaryImage) } - configPrimary, err := kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{}) + configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -202,7 +196,7 @@ func TestScheduler_Promotion(t *testing.T) { t.Errorf("Got primary ConfigMap color %s wanted %s", configPrimary.Data["color"], config2.Data["color"]) } - secretPrimary, err := kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{}) + secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) } @@ -211,7 +205,7 @@ func TestScheduler_Promotion(t *testing.T) { t.Errorf("Got primary secret %s wanted %s", secretPrimary.Data["apiKey"], secret2.Data["apiKey"]) } - c, err := flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) + c, err := mocks.flaggerClient.FlaggerV1alpha3().Canaries("default").Get("podinfo", metav1.GetOptions{}) if err != nil { t.Fatal(err.Error()) }