From 71b9033ea684d42e201df1ef9af38c57051f2aa0 Mon Sep 17 00:00:00 2001 From: David Ortiz Date: Tue, 26 Jul 2022 14:06:32 +0200 Subject: [PATCH] [testutils] Add helper to create scheme --- controllers/datadogagent/controller_test.go | 18 +------ .../datadogagent/feature/test/testsuite.go | 42 ++--------------- .../datadogagent/testutils/client_utils.go | 47 +++++++++++++++++++ 3 files changed, 52 insertions(+), 55 deletions(-) create mode 100644 controllers/datadogagent/testutils/client_utils.go diff --git a/controllers/datadogagent/controller_test.go b/controllers/datadogagent/controller_test.go index c3a5d0f28..cd34dc173 100644 --- a/controllers/datadogagent/controller_test.go +++ b/controllers/datadogagent/controller_test.go @@ -13,6 +13,7 @@ import ( "testing" "time" + testutils "github.com/DataDog/datadog-operator/controllers/datadogagent/testutils" "github.com/pkg/errors" assert "github.com/stretchr/testify/require" @@ -141,22 +142,7 @@ func TestReconcileDatadogAgent_Reconcile(t *testing.T) { logf.SetLogger(zap.New(zap.UseDevMode(true))) // Register operator types with the runtime scheme. - s := scheme.Scheme - s.AddKnownTypes(datadoghqv1alpha1.GroupVersion, &datadoghqv1alpha1.DatadogAgent{}) - s.AddKnownTypes(edsdatadoghqv1alpha1.GroupVersion, &edsdatadoghqv1alpha1.ExtendedDaemonSet{}) - s.AddKnownTypes(appsv1.SchemeGroupVersion, &appsv1.DaemonSet{}) - s.AddKnownTypes(appsv1.SchemeGroupVersion, &appsv1.Deployment{}) - s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.Secret{}) - s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.ServiceAccount{}) - s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.ConfigMap{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.ClusterRoleBinding{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.ClusterRole{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.Role{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.RoleBinding{}) - s.AddKnownTypes(policyv1.SchemeGroupVersion, &policyv1.PodDisruptionBudget{}) - s.AddKnownTypes(apiregistrationv1.SchemeGroupVersion, &apiregistrationv1.APIServiceList{}) - s.AddKnownTypes(apiregistrationv1.SchemeGroupVersion, &apiregistrationv1.APIService{}) - s.AddKnownTypes(networkingv1.SchemeGroupVersion, &networkingv1.NetworkPolicy{}) + s := testutils.TestScheme(false) defaultRequeueDuration := 15 * time.Second affinity := &corev1.Affinity{ diff --git a/controllers/datadogagent/feature/test/testsuite.go b/controllers/datadogagent/feature/test/testsuite.go index 7f6272a44..48e51a438 100644 --- a/controllers/datadogagent/feature/test/testsuite.go +++ b/controllers/datadogagent/feature/test/testsuite.go @@ -4,24 +4,15 @@ import ( "testing" "github.com/DataDog/datadog-operator/controllers/datadogagent/feature/fake" + testutils "github.com/DataDog/datadog-operator/controllers/datadogagent/testutils" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/log/zap" - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - networkingv1 "k8s.io/api/networking/v1" - policyv1 "k8s.io/api/policy/v1beta1" - rbacv1 "k8s.io/api/rbac/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - - edsdatadoghqv1alpha1 "github.com/DataDog/extendeddaemonset/api/v1alpha1" - apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1" - "github.com/DataDog/datadog-operator/apis/datadoghq/v1alpha1" "github.com/DataDog/datadog-operator/apis/datadoghq/v2alpha1" "github.com/DataDog/datadog-operator/controllers/datadogagent/dependencies" "github.com/DataDog/datadog-operator/controllers/datadogagent/feature" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // FeatureTestSuite use define several tests on a Feature @@ -90,33 +81,6 @@ func (suite FeatureTestSuite) Run(t *testing.T, buildFunc feature.BuildFunc) { } } -// testScheme return a runtime.Scheme for testing purpose -func testScheme(isV2 bool) *runtime.Scheme { - s := runtime.NewScheme() - s.AddKnownTypes(edsdatadoghqv1alpha1.GroupVersion, &edsdatadoghqv1alpha1.ExtendedDaemonSet{}) - s.AddKnownTypes(appsv1.SchemeGroupVersion, &appsv1.DaemonSet{}) - s.AddKnownTypes(appsv1.SchemeGroupVersion, &appsv1.Deployment{}) - s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.Secret{}) - s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.ServiceAccount{}) - s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.ConfigMap{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.ClusterRoleBinding{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.ClusterRole{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.Role{}) - s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.RoleBinding{}) - s.AddKnownTypes(policyv1.SchemeGroupVersion, &policyv1.PodDisruptionBudget{}) - s.AddKnownTypes(apiregistrationv1.SchemeGroupVersion, &apiregistrationv1.APIServiceList{}) - s.AddKnownTypes(apiregistrationv1.SchemeGroupVersion, &apiregistrationv1.APIService{}) - s.AddKnownTypes(networkingv1.SchemeGroupVersion, &networkingv1.NetworkPolicy{}) - - if isV2 { - s.AddKnownTypes(v2alpha1.GroupVersion, &v2alpha1.DatadogAgent{}) - } else { - s.AddKnownTypes(v1alpha1.GroupVersion, &v1alpha1.DatadogAgent{}) - } - - return s -} - func runTest(t *testing.T, tt FeatureTest, buildFunc feature.BuildFunc) { logf.SetLogger(zap.New(zap.UseDevMode(true))) logger := logf.Log.WithName(tt.Name) @@ -155,7 +119,7 @@ func runTest(t *testing.T, tt FeatureTest, buildFunc feature.BuildFunc) { } } if tt.StoreOption.Scheme == nil { - tt.StoreOption.Scheme = testScheme(isV2) + tt.StoreOption.Scheme = testutils.TestScheme(isV2) } // dependencies diff --git a/controllers/datadogagent/testutils/client_utils.go b/controllers/datadogagent/testutils/client_utils.go new file mode 100644 index 000000000..9f118b620 --- /dev/null +++ b/controllers/datadogagent/testutils/client_utils.go @@ -0,0 +1,47 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package testutils_test + +import ( + "github.com/DataDog/datadog-operator/apis/datadoghq/v1alpha1" + "github.com/DataDog/datadog-operator/apis/datadoghq/v2alpha1" + edsdatadoghqv1alpha1 "github.com/DataDog/extendeddaemonset/api/v1alpha1" + appsv1 "k8s.io/api/apps/v1" + corev1 "k8s.io/api/core/v1" + networkingv1 "k8s.io/api/networking/v1" + policyv1 "k8s.io/api/policy/v1beta1" + rbacv1 "k8s.io/api/rbac/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/scheme" + apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1" +) + +// TestScheme return a runtime.Scheme for testing purposes +func TestScheme(isV2 bool) *runtime.Scheme { + s := scheme.Scheme + s.AddKnownTypes(edsdatadoghqv1alpha1.GroupVersion, &edsdatadoghqv1alpha1.ExtendedDaemonSet{}) + s.AddKnownTypes(appsv1.SchemeGroupVersion, &appsv1.DaemonSet{}) + s.AddKnownTypes(appsv1.SchemeGroupVersion, &appsv1.Deployment{}) + s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.Secret{}) + s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.ServiceAccount{}) + s.AddKnownTypes(corev1.SchemeGroupVersion, &corev1.ConfigMap{}) + s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.ClusterRoleBinding{}) + s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.ClusterRole{}) + s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.Role{}) + s.AddKnownTypes(rbacv1.SchemeGroupVersion, &rbacv1.RoleBinding{}) + s.AddKnownTypes(policyv1.SchemeGroupVersion, &policyv1.PodDisruptionBudget{}) + s.AddKnownTypes(apiregistrationv1.SchemeGroupVersion, &apiregistrationv1.APIServiceList{}) + s.AddKnownTypes(apiregistrationv1.SchemeGroupVersion, &apiregistrationv1.APIService{}) + s.AddKnownTypes(networkingv1.SchemeGroupVersion, &networkingv1.NetworkPolicy{}) + + if isV2 { + s.AddKnownTypes(v2alpha1.GroupVersion, &v2alpha1.DatadogAgent{}) + } else { + s.AddKnownTypes(v1alpha1.GroupVersion, &v1alpha1.DatadogAgent{}) + } + + return s +}