From faa24b2b382cc97580d5bbd248066770b466cc70 Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Sat, 25 May 2019 22:27:52 +0200 Subject: [PATCH] apiextensions: move conversion tests into own package --- .../test/integration/conversion/BUILD | 60 +++++++++++++++++++ .../{ => conversion}/conversion_test.go | 21 ++++--- .../{convert => conversion}/webhook.go | 2 +- 3 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/BUILD rename staging/src/k8s.io/apiextensions-apiserver/test/integration/{ => conversion}/conversion_test.go (97%) rename staging/src/k8s.io/apiextensions-apiserver/test/integration/{convert => conversion}/webhook.go (99%) diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/BUILD b/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/BUILD new file mode 100644 index 00000000000..2dff89b680f --- /dev/null +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/BUILD @@ -0,0 +1,60 @@ +package(default_visibility = ["//visibility:public"]) + +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_test( + name = "go_default_test", + srcs = ["conversion_test.go"], + embed = [":go_default_library"], + tags = ["integration"], + deps = [ + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/options:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures:go_default_library", + "//staging/src/k8s.io/apiextensions-apiserver/test/integration/storage:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/storage/etcd3:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", + "//staging/src/k8s.io/client-go/dynamic:go_default_library", + "//staging/src/k8s.io/component-base/featuregate/testing:go_default_library", + "//vendor/github.com/google/go-cmp/cmp:go_default_library", + ], +) + +go_library( + name = "go_default_library", + srcs = ["webhook.go"], + importmap = "k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/test/integration/conversion", + importpath = "k8s.io/apiextensions-apiserver/test/integration/conversion", + visibility = ["//visibility:public"], + deps = [ + "//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion_test.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/conversion_test.go similarity index 97% rename from staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion_test.go rename to staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/conversion_test.go index c631d89eebf..90cf41d0037 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/conversion_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package integration +package conversion import ( "encoding/json" @@ -47,7 +47,6 @@ import ( featuregatetesting "k8s.io/component-base/featuregate/testing" apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - "k8s.io/apiextensions-apiserver/test/integration/convert" "k8s.io/apiextensions-apiserver/test/integration/fixtures" "k8s.io/apiextensions-apiserver/test/integration/storage" ) @@ -66,22 +65,22 @@ func TestWebhookConverter(t *testing.T) { }{ { group: "noop-converter", - handler: convert.NewObjectConverterWebhookHandler(t, noopConverter), + handler: NewObjectConverterWebhookHandler(t, noopConverter), checks: checks(validateStorageVersion, validateServed, validateMixedStorageVersions("v1alpha1", "v1beta1")), // no v1beta2 as the schema differs }, { group: "nontrivial-converter", - handler: convert.NewObjectConverterWebhookHandler(t, nontrivialConverter), + handler: NewObjectConverterWebhookHandler(t, nontrivialConverter), checks: checks(validateStorageVersion, validateServed, validateMixedStorageVersions("v1alpha1", "v1beta1", "v1beta2"), validateNonTrivialConverted, validateNonTrivialConvertedList), }, { group: "empty-response", - handler: convert.NewReviewWebhookHandler(t, emptyResponseConverter), + handler: NewReviewWebhookHandler(t, emptyResponseConverter), checks: checks(expectConversionFailureMessage("empty-response", "expected 1 converted objects")), }, { group: "failure-message", - handler: convert.NewReviewWebhookHandler(t, failureResponseConverter("custom webhook conversion error")), + handler: NewReviewWebhookHandler(t, failureResponseConverter("custom webhook conversion error")), checks: checks(expectConversionFailureMessage("failure-message", "custom webhook conversion error")), }, } @@ -137,7 +136,7 @@ func TestWebhookConverter(t *testing.T) { for _, test := range tests { t.Run(test.group, func(t *testing.T) { upCh, handler := closeOnCall(test.handler) - tearDown, webhookClientConfig, err := convert.StartConversionWebhookServer(handler) + tearDown, webhookClientConfig, err := StartConversionWebhookServer(handler) if err != nil { t.Fatal(err) } @@ -467,13 +466,17 @@ type conversionTestContext struct { } func (c *conversionTestContext) versionedClient(ns string, version string) dynamic.ResourceInterface { - return newNamespacedCustomResourceVersionedClient(ns, c.dynamicClient, c.crd, version) + gvr := schema.GroupVersionResource{Group: c.crd.Spec.Group, Version: version, Resource: c.crd.Spec.Names.Plural} + if c.crd.Spec.Scope != apiextensionsv1beta1.ClusterScoped { + return c.dynamicClient.Resource(gvr).Namespace(ns) + } + return c.dynamicClient.Resource(gvr) } func (c *conversionTestContext) versionedClients(ns string) map[string]dynamic.ResourceInterface { ret := map[string]dynamic.ResourceInterface{} for _, v := range c.crd.Spec.Versions { - ret[v.Name] = newNamespacedCustomResourceVersionedClient(ns, c.dynamicClient, c.crd, v.Name) + ret[v.Name] = c.versionedClient(ns, v.Name) } return ret } diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/convert/webhook.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/webhook.go similarity index 99% rename from staging/src/k8s.io/apiextensions-apiserver/test/integration/convert/webhook.go rename to staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/webhook.go index 3a119f0ab1f..e1dcfb84a33 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/convert/webhook.go +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/conversion/webhook.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package convert +package conversion import ( "crypto/tls"