From 485605e13350194174e3e0d8de38c50eea81c8ce Mon Sep 17 00:00:00 2001 From: Manjunath A Kumatagi Date: Sun, 7 Apr 2019 13:45:22 +0530 Subject: [PATCH 1/4] Fix the TestUpdate --- pkg/registry/storage/csidriver/storage/storage_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/registry/storage/csidriver/storage/storage_test.go b/pkg/registry/storage/csidriver/storage/storage_test.go index 2cc848f6dc6..ea0ae5636a2 100644 --- a/pkg/registry/storage/csidriver/storage/storage_test.go +++ b/pkg/registry/storage/csidriver/storage/storage_test.go @@ -101,6 +101,12 @@ func TestUpdate(t *testing.T) { test.TestUpdate( // valid validNewCSIDriver("foo"), + // updateFunc + func(obj runtime.Object) runtime.Object { + object := obj.(*storageapi.CSIDriver) + object.Labels = map[string]string{"a": "b"} + return object + }, //invalid update func(obj runtime.Object) runtime.Object { object := obj.(*storageapi.CSIDriver) From 6aa06adcfeb12004933b1acdc7384c6a16f35ea2 Mon Sep 17 00:00:00 2001 From: Manjunath A Kumatagi Date: Tue, 9 Apr 2019 10:48:44 -0400 Subject: [PATCH 2/4] Remove storageapi api check --- pkg/registry/storage/csidriver/storage/BUILD | 2 -- .../storage/csidriver/storage/storage_test.go | 32 ------------------- pkg/registry/storage/csinode/storage/BUILD | 2 -- .../storage/csinode/storage/storage_test.go | 32 ------------------- 4 files changed, 68 deletions(-) diff --git a/pkg/registry/storage/csidriver/storage/BUILD b/pkg/registry/storage/csidriver/storage/BUILD index bdbddb61343..ab66d6d8b1b 100644 --- a/pkg/registry/storage/csidriver/storage/BUILD +++ b/pkg/registry/storage/csidriver/storage/BUILD @@ -33,10 +33,8 @@ go_test( srcs = ["storage_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/registry/registrytest:go_default_library", - "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", diff --git a/pkg/registry/storage/csidriver/storage/storage_test.go b/pkg/registry/storage/csidriver/storage/storage_test.go index ea0ae5636a2..715b8063ca9 100644 --- a/pkg/registry/storage/csidriver/storage/storage_test.go +++ b/pkg/registry/storage/csidriver/storage/storage_test.go @@ -19,7 +19,6 @@ package storage import ( "testing" - storageapiv1beta1 "k8s.io/api/storage/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" @@ -27,7 +26,6 @@ import ( "k8s.io/apiserver/pkg/registry/generic" genericregistrytest "k8s.io/apiserver/pkg/registry/generic/testing" etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing" - "k8s.io/kubernetes/pkg/api/testapi" storageapi "k8s.io/kubernetes/pkg/apis/storage" "k8s.io/kubernetes/pkg/registry/registrytest" ) @@ -59,11 +57,6 @@ func validNewCSIDriver(name string) *storageapi.CSIDriver { } func TestCreate(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -87,11 +80,6 @@ func TestCreate(t *testing.T) { } func TestUpdate(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -117,11 +105,6 @@ func TestUpdate(t *testing.T) { } func TestDelete(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -130,11 +113,6 @@ func TestDelete(t *testing.T) { } func TestGet(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -143,11 +121,6 @@ func TestGet(t *testing.T) { } func TestList(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -156,11 +129,6 @@ func TestList(t *testing.T) { } func TestWatch(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() diff --git a/pkg/registry/storage/csinode/storage/BUILD b/pkg/registry/storage/csinode/storage/BUILD index a3daa50f0a2..b4e0663d103 100644 --- a/pkg/registry/storage/csinode/storage/BUILD +++ b/pkg/registry/storage/csinode/storage/BUILD @@ -33,10 +33,8 @@ go_test( srcs = ["storage_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/registry/registrytest:go_default_library", - "//staging/src/k8s.io/api/storage/v1beta1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", diff --git a/pkg/registry/storage/csinode/storage/storage_test.go b/pkg/registry/storage/csinode/storage/storage_test.go index 5cfb5756d4a..0fe43a8b3db 100644 --- a/pkg/registry/storage/csinode/storage/storage_test.go +++ b/pkg/registry/storage/csinode/storage/storage_test.go @@ -19,7 +19,6 @@ package storage import ( "testing" - storageapiv1beta1 "k8s.io/api/storage/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" @@ -27,7 +26,6 @@ import ( "k8s.io/apiserver/pkg/registry/generic" genericregistrytest "k8s.io/apiserver/pkg/registry/generic/testing" etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing" - "k8s.io/kubernetes/pkg/api/testapi" storageapi "k8s.io/kubernetes/pkg/apis/storage" "k8s.io/kubernetes/pkg/registry/registrytest" ) @@ -62,11 +60,6 @@ func validNewCSINode(name string) *storageapi.CSINode { } func TestCreate(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -93,11 +86,6 @@ func TestCreate(t *testing.T) { } func TestUpdate(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -122,11 +110,6 @@ func TestUpdate(t *testing.T) { } func TestDelete(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -135,11 +118,6 @@ func TestDelete(t *testing.T) { } func TestGet(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -148,11 +126,6 @@ func TestGet(t *testing.T) { } func TestList(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -161,11 +134,6 @@ func TestList(t *testing.T) { } func TestWatch(t *testing.T) { - if *testapi.Storage.GroupVersion() != storageapiv1beta1.SchemeGroupVersion { - // skip the test for all versions exception v1beta1 - return - } - storage, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() From 56f3f6eec7f4e9e8a1243bc05fc5a627b5f477cd Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 9 Apr 2019 12:36:49 -0400 Subject: [PATCH 3/4] Use kubeapiserver storage config for registry tests --- pkg/registry/registrytest/BUILD | 3 +++ pkg/registry/registrytest/etcd.go | 24 +++++++++++++++++++ .../storage/csidriver/storage/storage_test.go | 2 +- .../storage/csinode/storage/storage_test.go | 2 +- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/pkg/registry/registrytest/BUILD b/pkg/registry/registrytest/BUILD index 162385eb48e..67bb351204b 100644 --- a/pkg/registry/registrytest/BUILD +++ b/pkg/registry/registrytest/BUILD @@ -21,15 +21,18 @@ go_library( deps = [ "//pkg/api/testapi:go_default_library", "//pkg/apis/core:go_default_library", + "//pkg/kubeapiserver:go_default_library", "//pkg/util/slice:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion: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/runtime/schema:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", "//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library", "//staging/src/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library", "//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library", "//staging/src/k8s.io/apiserver/pkg/storage/etcd/testing:go_default_library", "//staging/src/k8s.io/apiserver/pkg/storage/storagebackend:go_default_library", ], diff --git a/pkg/registry/registrytest/etcd.go b/pkg/registry/registrytest/etcd.go index 061959d9d2a..85100105843 100644 --- a/pkg/registry/registrytest/etcd.go +++ b/pkg/registry/registrytest/etcd.go @@ -19,9 +19,12 @@ package registrytest import ( "testing" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apiserver/pkg/server/options" etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing" "k8s.io/apiserver/pkg/storage/storagebackend" "k8s.io/kubernetes/pkg/api/testapi" + "k8s.io/kubernetes/pkg/kubeapiserver" ) func NewEtcdStorage(t *testing.T, group string) (*storagebackend.Config, *etcdtesting.EtcdTestServer) { @@ -29,3 +32,24 @@ func NewEtcdStorage(t *testing.T, group string) (*storagebackend.Config, *etcdte config.Codec = testapi.Groups[group].StorageCodec() return config, server } + +func NewEtcdStorageForResource(t *testing.T, resource schema.GroupResource) (*storagebackend.Config, *etcdtesting.EtcdTestServer) { + t.Helper() + + server, config := etcdtesting.NewUnsecuredEtcd3TestClientServer(t) + + options := options.NewEtcdOptions(config) + completedConfig, err := kubeapiserver.NewStorageFactoryConfig().Complete(options) + if err != nil { + t.Fatal(err) + } + factory, err := completedConfig.New() + if err != nil { + t.Fatal(err) + } + resourceConfig, err := factory.NewConfig(resource) + if err != nil { + t.Fatal(err) + } + return resourceConfig, server +} diff --git a/pkg/registry/storage/csidriver/storage/storage_test.go b/pkg/registry/storage/csidriver/storage/storage_test.go index 715b8063ca9..9ebc53f43e4 100644 --- a/pkg/registry/storage/csidriver/storage/storage_test.go +++ b/pkg/registry/storage/csidriver/storage/storage_test.go @@ -31,7 +31,7 @@ import ( ) func newStorage(t *testing.T) (*REST, *etcdtesting.EtcdTestServer) { - etcdStorage, server := registrytest.NewEtcdStorage(t, storageapi.GroupName) + etcdStorage, server := registrytest.NewEtcdStorageForResource(t, storageapi.SchemeGroupVersion.WithResource("csidrivers").GroupResource()) restOptions := generic.RESTOptions{ StorageConfig: etcdStorage, Decorator: generic.UndecoratedStorage, diff --git a/pkg/registry/storage/csinode/storage/storage_test.go b/pkg/registry/storage/csinode/storage/storage_test.go index 0fe43a8b3db..362a38ff075 100644 --- a/pkg/registry/storage/csinode/storage/storage_test.go +++ b/pkg/registry/storage/csinode/storage/storage_test.go @@ -31,7 +31,7 @@ import ( ) func newStorage(t *testing.T) (*REST, *etcdtesting.EtcdTestServer) { - etcdStorage, server := registrytest.NewEtcdStorage(t, storageapi.GroupName) + etcdStorage, server := registrytest.NewEtcdStorageForResource(t, storageapi.SchemeGroupVersion.WithResource("csinodes").GroupResource()) restOptions := generic.RESTOptions{ StorageConfig: etcdStorage, Decorator: generic.UndecoratedStorage, From e377e9fed9229084b6bf3f530d3b7f07b82c2187 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Tue, 9 Apr 2019 13:01:30 -0400 Subject: [PATCH 4/4] Fix up cronjob and job registry tests to not use testapi --- pkg/registry/batch/cronjob/storage/BUILD | 2 - .../batch/cronjob/storage/storage_test.go | 47 +++++-------------- pkg/registry/batch/job/BUILD | 2 +- pkg/registry/batch/job/strategy_test.go | 4 +- 4 files changed, 15 insertions(+), 40 deletions(-) diff --git a/pkg/registry/batch/cronjob/storage/BUILD b/pkg/registry/batch/cronjob/storage/BUILD index 3f498f121d4..85ab4b28e4e 100644 --- a/pkg/registry/batch/cronjob/storage/BUILD +++ b/pkg/registry/batch/cronjob/storage/BUILD @@ -11,11 +11,9 @@ go_test( srcs = ["storage_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/apis/batch:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/registry/registrytest:go_default_library", - "//staging/src/k8s.io/api/batch/v2alpha1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", diff --git a/pkg/registry/batch/cronjob/storage/storage_test.go b/pkg/registry/batch/cronjob/storage/storage_test.go index 2a78b522ea4..318dfbbbe5c 100644 --- a/pkg/registry/batch/cronjob/storage/storage_test.go +++ b/pkg/registry/batch/cronjob/storage/storage_test.go @@ -19,7 +19,6 @@ package storage import ( "testing" - "k8s.io/api/batch/v2alpha1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" @@ -27,7 +26,6 @@ import ( "k8s.io/apiserver/pkg/registry/generic" genericregistrytest "k8s.io/apiserver/pkg/registry/generic/testing" etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing" - "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/apis/batch" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/registry/registrytest" @@ -35,8 +33,13 @@ import ( // TODO: allow for global factory override func newStorage(t *testing.T) (*REST, *StatusREST, *etcdtesting.EtcdTestServer) { - etcdStorage, server := registrytest.NewEtcdStorage(t, batch.GroupName) - restOptions := generic.RESTOptions{StorageConfig: etcdStorage, Decorator: generic.UndecoratedStorage, DeleteCollectionWorkers: 1} + etcdStorage, server := registrytest.NewEtcdStorageForResource(t, batch.SchemeGroupVersion.WithResource("cronjobs").GroupResource()) + restOptions := generic.RESTOptions{ + StorageConfig: etcdStorage, + Decorator: generic.UndecoratedStorage, + DeleteCollectionWorkers: 1, + ResourcePrefix: "cronjobs", + } storage, statusStorage := NewREST(restOptions) return storage, statusStorage, server } @@ -56,7 +59,11 @@ func validNewCronJob() *batch.CronJob { Spec: api.PodSpec{ RestartPolicy: api.RestartPolicyOnFailure, DNSPolicy: api.DNSClusterFirst, - Containers: []api.Container{{Name: "abc", Image: "image", ImagePullPolicy: api.PullIfNotPresent}}, + Containers: []api.Container{{ + Name: "abc", Image: "image", + ImagePullPolicy: api.PullIfNotPresent, + TerminationMessagePolicy: api.TerminationMessageReadFile, + }}, }, }, }, @@ -66,11 +73,6 @@ func validNewCronJob() *batch.CronJob { } func TestCreate(t *testing.T) { - // scheduled jobs should be tested only when batch/v2alpha1 is enabled - if *testapi.Batch.GroupVersion() != v2alpha1.SchemeGroupVersion { - return - } - storage, _, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -88,11 +90,6 @@ func TestCreate(t *testing.T) { } func TestUpdate(t *testing.T) { - // scheduled jobs should be tested only when batch/v2alpha1 is enabled - if *testapi.Batch.GroupVersion() != v2alpha1.SchemeGroupVersion { - return - } - storage, _, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -117,11 +114,6 @@ func TestUpdate(t *testing.T) { } func TestDelete(t *testing.T) { - // scheduled jobs should be tested only when batch/v2alpha1 is enabled - if *testapi.Batch.GroupVersion() != v2alpha1.SchemeGroupVersion { - return - } - storage, _, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -130,11 +122,6 @@ func TestDelete(t *testing.T) { } func TestGet(t *testing.T) { - // scheduled jobs should be tested only when batch/v2alpha1 is enabled - if *testapi.Batch.GroupVersion() != v2alpha1.SchemeGroupVersion { - return - } - storage, _, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -143,11 +130,6 @@ func TestGet(t *testing.T) { } func TestList(t *testing.T) { - // scheduled jobs should be tested only when batch/v2alpha1 is enabled - if *testapi.Batch.GroupVersion() != v2alpha1.SchemeGroupVersion { - return - } - storage, _, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() @@ -156,11 +138,6 @@ func TestList(t *testing.T) { } func TestWatch(t *testing.T) { - // scheduled jobs should be tested only when batch/v2alpha1 is enabled - if *testapi.Batch.GroupVersion() != v2alpha1.SchemeGroupVersion { - return - } - storage, _, server := newStorage(t) defer server.Terminate(t) defer storage.Store.DestroyFunc() diff --git a/pkg/registry/batch/job/BUILD b/pkg/registry/batch/job/BUILD index b70fed923a1..e2a4aa7465a 100644 --- a/pkg/registry/batch/job/BUILD +++ b/pkg/registry/batch/job/BUILD @@ -41,9 +41,9 @@ go_test( srcs = ["strategy_test.go"], embed = [":go_default_library"], deps = [ - "//pkg/api/testapi:go_default_library", "//pkg/api/testing:go_default_library", "//pkg/apis/batch:go_default_library", + "//pkg/apis/batch/install:go_default_library", "//pkg/apis/core:go_default_library", "//pkg/features:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", diff --git a/pkg/registry/batch/job/strategy_test.go b/pkg/registry/batch/job/strategy_test.go index ceac03fb675..7428ca80ce2 100644 --- a/pkg/registry/batch/job/strategy_test.go +++ b/pkg/registry/batch/job/strategy_test.go @@ -26,9 +26,9 @@ import ( "k8s.io/apiserver/pkg/registry/rest" utilfeature "k8s.io/apiserver/pkg/util/feature" utilfeaturetesting "k8s.io/apiserver/pkg/util/feature/testing" - "k8s.io/kubernetes/pkg/api/testapi" apitesting "k8s.io/kubernetes/pkg/api/testing" "k8s.io/kubernetes/pkg/apis/batch" + _ "k8s.io/kubernetes/pkg/apis/batch/install" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/features" ) @@ -281,7 +281,7 @@ func TestJobStatusStrategy(t *testing.T) { func TestSelectableFieldLabelConversions(t *testing.T) { apitesting.TestSelectableFieldLabelConversionsOfKind(t, - testapi.Batch.GroupVersion().String(), + "batch/v1", "Job", JobToSelectableFields(&batch.Job{}), nil,