grafana/pkg/services/apiserver/aggregator/aggregator_test.go

72 lines
2.8 KiB
Go

package aggregator_test
import (
"sort"
"testing"
"time"
"github.com/stretchr/testify/require"
openapinamer "k8s.io/apiserver/pkg/endpoints/openapi"
genericapiserver "k8s.io/apiserver/pkg/server"
"k8s.io/apiserver/pkg/storage/storagebackend"
utilversion "k8s.io/apiserver/pkg/util/version"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
clientrest "k8s.io/client-go/rest"
"k8s.io/kube-aggregator/pkg/apiserver"
aggregatorscheme "k8s.io/kube-aggregator/pkg/apiserver/scheme"
aggregatoropenapi "k8s.io/kube-aggregator/pkg/generated/openapi"
"github.com/grafana/grafana/pkg/storage/unified/apistore"
)
// TestAggregatorPostStartHooks tests that the kube-aggregator server has the expected default post start hooks enabled.
func TestAggregatorPostStartHooks(t *testing.T) {
cfg := apiserver.Config{
GenericConfig: genericapiserver.NewRecommendedConfig(aggregatorscheme.Codecs),
ExtraConfig: apiserver.ExtraConfig{},
}
cfg.GenericConfig.ExternalAddress = "127.0.0.1:6443"
cfg.GenericConfig.EffectiveVersion = utilversion.DefaultBuildEffectiveVersion()
cfg.GenericConfig.LoopbackClientConfig = &clientrest.Config{}
cfg.GenericConfig.MergedResourceConfig = apiserver.DefaultAPIResourceConfigSource()
// Add OpenAPI config, which depends on builders
namer := openapinamer.NewDefinitionNamer(aggregatorscheme.Scheme)
cfg.GenericConfig.OpenAPIV3Config = genericapiserver.DefaultOpenAPIV3Config(aggregatoropenapi.GetOpenAPIDefinitions, namer)
cfg.GenericConfig.OpenAPIV3Config.Info.Title = "Kubernetes"
cfg.GenericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(aggregatoropenapi.GetOpenAPIDefinitions, namer)
cfg.GenericConfig.OpenAPIConfig.Info.Title = "Kubernetes"
cfg.GenericConfig.SkipOpenAPIInstallation = true
cfg.GenericConfig.SharedInformerFactory = informers.NewSharedInformerFactory(fake.NewSimpleClientset(), 10*time.Minute)
// override the RESTOptionsGetter to use the in memory storage options
restOptionsGetter, err := apistore.NewRESTOptionsGetterMemory(*storagebackend.NewDefaultConfig("memory", nil))
require.NoError(t, err)
cfg.GenericConfig.RESTOptionsGetter = restOptionsGetter
complete := cfg.Complete()
server, err := complete.NewWithDelegate(genericapiserver.NewEmptyDelegate())
require.NoError(t, err)
actual := make([]string, 0, len(server.GenericAPIServer.PostStartHooks()))
for k := range server.GenericAPIServer.PostStartHooks() {
actual = append(actual, k)
}
sort.Strings(actual)
expected := []string{
"apiservice-discovery-controller",
"generic-apiserver-start-informers",
"max-in-flight-filter",
"storage-object-count-tracker-hook",
"start-kube-aggregator-informers",
"apiservice-status-local-available-controller",
"apiservice-status-remote-available-controller",
"apiservice-registration-controller",
}
sort.Strings(expected)
require.Equal(t, expected, actual)
}