pkg/controller/testutils/testutils.go (76 lines of code) (raw):

package testutils import ( "path/filepath" "testing" approutingv1alpha1 "github.com/Azure/aks-app-routing-operator/api/v1alpha1" "github.com/Azure/aks-app-routing-operator/pkg/controller/controllername" "github.com/Azure/aks-app-routing-operator/pkg/controller/metrics" cfgv1alpha2 "github.com/openservicemesh/osm/pkg/apis/config/v1alpha2" policyv1alpha1 "github.com/openservicemesh/osm/pkg/apis/policy/v1alpha1" promDTO "github.com/prometheus/client_model/go" "github.com/stretchr/testify/require" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/envtest" gatewayv1 "sigs.k8s.io/gateway-api/apis/v1" secv1 "sigs.k8s.io/secrets-store-csi-driver/apis/v1" ) func GetErrMetricCount(t *testing.T, controllerName controllername.ControllerNamer) float64 { errMetric, err := metrics.AppRoutingReconcileErrors.GetMetricWithLabelValues(controllerName.MetricsName()) require.NoError(t, err) metricProto := &promDTO.Metric{} err = errMetric.Write(metricProto) require.NoError(t, err) beforeCount := metricProto.GetCounter().GetValue() return beforeCount } func GetReconcileMetricCount(t *testing.T, controllerName controllername.ControllerNamer, label string) float64 { errMetric, err := metrics.AppRoutingReconcileTotal.GetMetricWithLabelValues(controllerName.MetricsName(), label) require.NoError(t, err) metricProto := &promDTO.Metric{} err = errMetric.Write(metricProto) require.NoError(t, err) beforeCount := metricProto.GetCounter().GetValue() return beforeCount } func StartTestingEnv() (*rest.Config, *envtest.Environment, error) { env := &envtest.Environment{} restConfig, err := env.Start() if err != nil { return nil, nil, err } return restConfig, env, nil } func CleanupTestingEnv(env *envtest.Environment) error { return env.Stop() } func RegisterSchemes(t *testing.T, builder *fake.ClientBuilder, regFuncs ...func(s *runtime.Scheme) error) *fake.ClientBuilder { scheme := runtime.NewScheme() for _, regFunc := range regFuncs { require.NoError(t, regFunc(scheme)) } return builder.WithScheme(scheme) } func NewTestScheme() *runtime.Scheme { s := runtime.NewScheme() utilruntime.Must(clientgoscheme.AddToScheme(s)) utilruntime.Must(secv1.Install(s)) utilruntime.Must(cfgv1alpha2.AddToScheme(s)) utilruntime.Must(policyv1alpha1.AddToScheme(s)) utilruntime.Must(approutingv1alpha1.AddToScheme(s)) utilruntime.Must(apiextensionsv1.AddToScheme(s)) utilruntime.Must(gatewayv1.Install(s)) return s } func NewTestEnvironment() *envtest.Environment { return &envtest.Environment{ CRDDirectoryPaths: []string{ filepath.Join("..", "..", "config", "crd", "bases"), filepath.Join("..", "..", "config", "gatewaycrd"), }, } }