Skip to content

Commit

Permalink
[testutils] Add helper to create scheme
Browse files Browse the repository at this point in the history
  • Loading branch information
davidor committed Jul 27, 2022
1 parent 86164f0 commit 71b9033
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 55 deletions.
18 changes: 2 additions & 16 deletions controllers/datadogagent/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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{
Expand Down
42 changes: 3 additions & 39 deletions controllers/datadogagent/feature/test/testsuite.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down
47 changes: 47 additions & 0 deletions controllers/datadogagent/testutils/client_utils.go
Original file line number Diff line number Diff line change
@@ -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
}

0 comments on commit 71b9033

Please sign in to comment.