Merge pull request #31704 from timothysc/etcd3_v3client_leak_fix

Automatic merge from submit-queue

Etcd3 v3client + grpc client leak fix

This re-enables the client and plumbs through the destroyFunc to cleanup clients. 

Fix for https://github.com/kubernetes/kubernetes/issues/31262
pull/6/head
Kubernetes Submit Queue 2016-09-14 20:51:23 -07:00 committed by GitHub
commit 96d971fed3
70 changed files with 371 additions and 121 deletions

View File

@ -45,7 +45,7 @@ import (
// setUp is a convience function for setting up for (most) tests. // setUp is a convience function for setting up for (most) tests.
func setUp(t *testing.T) (GenericAPIServer, *etcdtesting.EtcdTestServer, Config, *assert.Assertions) { func setUp(t *testing.T) (GenericAPIServer, *etcdtesting.EtcdTestServer, Config, *assert.Assertions) {
etcdServer := etcdtesting.NewEtcdTestClientServer(t) etcdServer, _ := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
genericapiserver := GenericAPIServer{} genericapiserver := GenericAPIServer{}
config := Config{} config := Config{}

View File

@ -60,7 +60,6 @@ import (
"k8s.io/kubernetes/pkg/storage" "k8s.io/kubernetes/pkg/storage"
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest" "k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing" etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
"k8s.io/kubernetes/pkg/storage/storagebackend"
"k8s.io/kubernetes/pkg/util/intstr" "k8s.io/kubernetes/pkg/util/intstr"
utilnet "k8s.io/kubernetes/pkg/util/net" utilnet "k8s.io/kubernetes/pkg/util/net"
"k8s.io/kubernetes/pkg/util/sets" "k8s.io/kubernetes/pkg/util/sets"
@ -75,7 +74,7 @@ import (
// setUp is a convience function for setting up for (most) tests. // setUp is a convience function for setting up for (most) tests.
func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.Assertions) { func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.Assertions) {
server := etcdtesting.NewUnsecuredEtcdTestClientServer(t) server, storageConfig := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
master := &Master{ master := &Master{
GenericAPIServer: &genericapiserver.GenericAPIServer{}, GenericAPIServer: &genericapiserver.GenericAPIServer{},
@ -84,16 +83,6 @@ func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.
Config: &genericapiserver.Config{}, Config: &genericapiserver.Config{},
} }
storageConfig := storagebackend.Config{
Prefix: etcdtest.PathPrefix(),
CAFile: server.CAFile,
KeyFile: server.KeyFile,
CertFile: server.CertFile,
}
for _, url := range server.ClientURLs {
storageConfig.ServerList = append(storageConfig.ServerList, url.String())
}
resourceEncoding := genericapiserver.NewDefaultResourceEncodingConfig() resourceEncoding := genericapiserver.NewDefaultResourceEncodingConfig()
resourceEncoding.SetVersionEncoding(api.GroupName, *testapi.Default.GroupVersion(), unversioned.GroupVersion{Group: api.GroupName, Version: runtime.APIVersionInternal}) resourceEncoding.SetVersionEncoding(api.GroupName, *testapi.Default.GroupVersion(), unversioned.GroupVersion{Group: api.GroupName, Version: runtime.APIVersionInternal})
resourceEncoding.SetVersionEncoding(autoscaling.GroupName, *testapi.Autoscaling.GroupVersion(), unversioned.GroupVersion{Group: autoscaling.GroupName, Version: runtime.APIVersionInternal}) resourceEncoding.SetVersionEncoding(autoscaling.GroupName, *testapi.Autoscaling.GroupVersion(), unversioned.GroupVersion{Group: autoscaling.GroupName, Version: runtime.APIVersionInternal})
@ -102,7 +91,7 @@ func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.
resourceEncoding.SetVersionEncoding(extensions.GroupName, *testapi.Extensions.GroupVersion(), unversioned.GroupVersion{Group: extensions.GroupName, Version: runtime.APIVersionInternal}) resourceEncoding.SetVersionEncoding(extensions.GroupName, *testapi.Extensions.GroupVersion(), unversioned.GroupVersion{Group: extensions.GroupName, Version: runtime.APIVersionInternal})
resourceEncoding.SetVersionEncoding(rbac.GroupName, *testapi.Rbac.GroupVersion(), unversioned.GroupVersion{Group: rbac.GroupName, Version: runtime.APIVersionInternal}) resourceEncoding.SetVersionEncoding(rbac.GroupName, *testapi.Rbac.GroupVersion(), unversioned.GroupVersion{Group: rbac.GroupName, Version: runtime.APIVersionInternal})
resourceEncoding.SetVersionEncoding(certificates.GroupName, *testapi.Certificates.GroupVersion(), unversioned.GroupVersion{Group: certificates.GroupName, Version: runtime.APIVersionInternal}) resourceEncoding.SetVersionEncoding(certificates.GroupName, *testapi.Certificates.GroupVersion(), unversioned.GroupVersion{Group: certificates.GroupName, Version: runtime.APIVersionInternal})
storageFactory := genericapiserver.NewDefaultStorageFactory(storageConfig, testapi.StorageMediaType(), api.Codecs, resourceEncoding, DefaultAPIResourceConfigSource()) storageFactory := genericapiserver.NewDefaultStorageFactory(*storageConfig, testapi.StorageMediaType(), api.Codecs, resourceEncoding, DefaultAPIResourceConfigSource())
config.StorageFactory = storageFactory config.StorageFactory = storageFactory
config.APIResourceConfigSource = DefaultAPIResourceConfigSource() config.APIResourceConfigSource = DefaultAPIResourceConfigSource()

View File

@ -40,7 +40,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST, *ApprovalREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &certificates.CertificateSigningRequestList{} } newListFunc := func() runtime.Object { return &certificates.CertificateSigningRequestList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.CertificateSigningRequests), cachesize.GetWatchCacheSizeByResource(cachesize.CertificateSigningRequests),
&certificates.CertificateSigningRequest{}, &certificates.CertificateSigningRequest{},
@ -73,6 +73,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST, *ApprovalREST) {
DeleteStrategy: csrregistry.Strategy, DeleteStrategy: csrregistry.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
// Subresources use the same store and creation strategy, which only // Subresources use the same store and creation strategy, which only

View File

@ -37,7 +37,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &rbac.ClusterRoleList{} } newListFunc := func() runtime.Object { return &rbac.ClusterRoleList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.ClusterRoles), cachesize.GetWatchCacheSizeByResource(cachesize.ClusterRoles),
&rbac.ClusterRole{}, &rbac.ClusterRole{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: clusterrole.Strategy, DeleteStrategy: clusterrole.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}

View File

@ -37,7 +37,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &rbac.ClusterRoleBindingList{} } newListFunc := func() runtime.Object { return &rbac.ClusterRoleBindingList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.ClusterRoleBindings), cachesize.GetWatchCacheSizeByResource(cachesize.ClusterRoleBindings),
&rbac.ClusterRoleBinding{}, &rbac.ClusterRoleBinding{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: clusterrolebinding.Strategy, DeleteStrategy: clusterrolebinding.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}

View File

@ -36,7 +36,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.ConfigMapList{} } newListFunc := func() runtime.Object { return &api.ConfigMapList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.ConfigMaps), cachesize.GetWatchCacheSizeByResource(cachesize.ConfigMaps),
&api.ConfigMap{}, &api.ConfigMap{},
@ -82,6 +82,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: configmap.Strategy, DeleteStrategy: configmap.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -53,6 +53,7 @@ func validNewConfigMap() *api.ConfigMap {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
validConfigMap := validNewConfigMap() validConfigMap := validNewConfigMap()
@ -80,6 +81,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -102,6 +104,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewConfigMap()) test.TestDelete(validNewConfigMap())
} }
@ -109,6 +112,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewConfigMap()) test.TestGet(validNewConfigMap())
} }
@ -116,6 +120,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewConfigMap()) test.TestList(validNewConfigMap())
} }
@ -123,6 +128,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewConfigMap(), validNewConfigMap(),

View File

@ -62,7 +62,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.ReplicationControllerList{} } newListFunc := func() runtime.Object { return &api.ReplicationControllerList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Controllers), cachesize.GetWatchCacheSizeByResource(cachesize.Controllers),
&api.ReplicationController{}, &api.ReplicationController{},
@ -105,6 +105,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: controller.Strategy, DeleteStrategy: controller.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = controller.StatusStrategy statusStore.UpdateStrategy = controller.StatusStrategy

View File

@ -88,6 +88,7 @@ var validController = validNewController()
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
test := registrytest.New(t, storage.Controller.Store) test := registrytest.New(t, storage.Controller.Store)
controller := validNewController() controller := validNewController()
controller.ObjectMeta = api.ObjectMeta{} controller.ObjectMeta = api.ObjectMeta{}
@ -108,6 +109,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
test := registrytest.New(t, storage.Controller.Store) test := registrytest.New(t, storage.Controller.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -135,6 +137,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
test := registrytest.New(t, storage.Controller.Store) test := registrytest.New(t, storage.Controller.Store)
test.TestDelete(validNewController()) test.TestDelete(validNewController())
} }
@ -142,6 +145,7 @@ func TestDelete(t *testing.T) {
func TestGenerationNumber(t *testing.T) { func TestGenerationNumber(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
modifiedSno := *validNewController() modifiedSno := *validNewController()
modifiedSno.Generation = 100 modifiedSno.Generation = 100
modifiedSno.Status.ObservedGeneration = 10 modifiedSno.Status.ObservedGeneration = 10
@ -192,6 +196,7 @@ func TestGenerationNumber(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
test := registrytest.New(t, storage.Controller.Store) test := registrytest.New(t, storage.Controller.Store)
test.TestGet(validNewController()) test.TestGet(validNewController())
} }
@ -199,6 +204,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
test := registrytest.New(t, storage.Controller.Store) test := registrytest.New(t, storage.Controller.Store)
test.TestList(validNewController()) test.TestList(validNewController())
} }
@ -206,6 +212,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
test := registrytest.New(t, storage.Controller.Store) test := registrytest.New(t, storage.Controller.Store)
test.TestWatch( test.TestWatch(
validController, validController,
@ -240,6 +247,7 @@ func TestWatch(t *testing.T) {
func TestScaleGet(t *testing.T) { func TestScaleGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
ctx := api.WithNamespace(api.NewContext(), namespace) ctx := api.WithNamespace(api.NewContext(), namespace)
rc, err := createController(storage.Controller, *validController, t) rc, err := createController(storage.Controller, *validController, t)
@ -276,6 +284,7 @@ func TestScaleGet(t *testing.T) {
func TestScaleUpdate(t *testing.T) { func TestScaleUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Controller.Store.DestroyFunc()
ctx := api.WithNamespace(api.NewContext(), namespace) ctx := api.WithNamespace(api.NewContext(), namespace)
rc, err := createController(storage.Controller, *validController, t) rc, err := createController(storage.Controller, *validController, t)

View File

@ -38,7 +38,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &extensions.DaemonSetList{} } newListFunc := func() runtime.Object { return &extensions.DaemonSetList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Daemonsets), cachesize.GetWatchCacheSizeByResource(cachesize.Daemonsets),
&extensions.DaemonSet{}, &extensions.DaemonSet{},
@ -80,6 +80,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: daemonset.Strategy, DeleteStrategy: daemonset.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = daemonset.StatusStrategy statusStore.UpdateStrategy = daemonset.StatusStrategy

View File

@ -70,6 +70,7 @@ var validDaemonSet = newValidDaemonSet()
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
ds := newValidDaemonSet() ds := newValidDaemonSet()
ds.ObjectMeta = api.ObjectMeta{} ds.ObjectMeta = api.ObjectMeta{}
@ -96,6 +97,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -124,6 +126,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(newValidDaemonSet()) test.TestDelete(newValidDaemonSet())
} }
@ -131,6 +134,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(newValidDaemonSet()) test.TestGet(newValidDaemonSet())
} }
@ -138,6 +142,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(newValidDaemonSet()) test.TestList(newValidDaemonSet())
} }
@ -145,6 +150,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validDaemonSet, validDaemonSet,

View File

@ -62,7 +62,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST, *RollbackREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &extensions.DeploymentList{} } newListFunc := func() runtime.Object { return &extensions.DeploymentList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Deployments), cachesize.GetWatchCacheSizeByResource(cachesize.Deployments),
&extensions.Deployment{}, &extensions.Deployment{},
@ -103,6 +103,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST, *RollbackREST) {
DeleteStrategy: deployment.Strategy, DeleteStrategy: deployment.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = deployment.StatusStrategy statusStore.UpdateStrategy = deployment.StatusStrategy

View File

@ -93,6 +93,7 @@ var validDeployment = *validNewDeployment()
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
test := registrytest.New(t, storage.Deployment.Store) test := registrytest.New(t, storage.Deployment.Store)
deployment := validNewDeployment() deployment := validNewDeployment()
deployment.ObjectMeta = api.ObjectMeta{} deployment.ObjectMeta = api.ObjectMeta{}
@ -112,6 +113,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
test := registrytest.New(t, storage.Deployment.Store) test := registrytest.New(t, storage.Deployment.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -144,6 +146,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
test := registrytest.New(t, storage.Deployment.Store) test := registrytest.New(t, storage.Deployment.Store)
test.TestDelete(validNewDeployment()) test.TestDelete(validNewDeployment())
} }
@ -151,6 +154,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
test := registrytest.New(t, storage.Deployment.Store) test := registrytest.New(t, storage.Deployment.Store)
test.TestGet(validNewDeployment()) test.TestGet(validNewDeployment())
} }
@ -158,6 +162,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
test := registrytest.New(t, storage.Deployment.Store) test := registrytest.New(t, storage.Deployment.Store)
test.TestList(validNewDeployment()) test.TestList(validNewDeployment())
} }
@ -165,6 +170,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
test := registrytest.New(t, storage.Deployment.Store) test := registrytest.New(t, storage.Deployment.Store)
test.TestWatch( test.TestWatch(
validNewDeployment(), validNewDeployment(),
@ -190,7 +196,7 @@ func TestWatch(t *testing.T) {
func TestScaleGet(t *testing.T) { func TestScaleGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
var deployment extensions.Deployment var deployment extensions.Deployment
ctx := api.WithNamespace(api.NewContext(), namespace) ctx := api.WithNamespace(api.NewContext(), namespace)
key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name) key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name)
@ -227,7 +233,7 @@ func TestScaleGet(t *testing.T) {
func TestScaleUpdate(t *testing.T) { func TestScaleUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
var deployment extensions.Deployment var deployment extensions.Deployment
ctx := api.WithNamespace(api.NewContext(), namespace) ctx := api.WithNamespace(api.NewContext(), namespace)
key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name) key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name)
@ -265,7 +271,7 @@ func TestScaleUpdate(t *testing.T) {
func TestStatusUpdate(t *testing.T) { func TestStatusUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
ctx := api.WithNamespace(api.NewContext(), namespace) ctx := api.WithNamespace(api.NewContext(), namespace)
key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name) key := etcdtest.AddPrefix("/deployments/" + namespace + "/" + name)
if err := storage.Deployment.Storage.Create(ctx, key, &validDeployment, nil, 0); err != nil { if err := storage.Deployment.Storage.Create(ctx, key, &validDeployment, nil, 0); err != nil {
@ -348,6 +354,7 @@ func TestEtcdCreateDeploymentRollback(t *testing.T) {
t.Errorf("%s: expected: %v, got: %v", k, *d.(*extensions.Deployment).Spec.RollbackTo, test.rollback.RollbackTo) t.Errorf("%s: expected: %v, got: %v", k, *d.(*extensions.Deployment).Spec.RollbackTo, test.rollback.RollbackTo)
} }
} }
storage.Deployment.Store.DestroyFunc()
server.Terminate(t) server.Terminate(t)
} }
} }
@ -357,6 +364,7 @@ func TestEtcdCreateDeploymentRollback(t *testing.T) {
func TestEtcdCreateDeploymentRollbackNoDeployment(t *testing.T) { func TestEtcdCreateDeploymentRollbackNoDeployment(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Deployment.Store.DestroyFunc()
rollbackStorage := storage.Rollback rollbackStorage := storage.Rollback
ctx := api.WithNamespace(api.NewContext(), namespace) ctx := api.WithNamespace(api.NewContext(), namespace)

View File

@ -35,7 +35,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.EndpointsList{} } newListFunc := func() runtime.Object { return &api.EndpointsList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Endpoints), cachesize.GetWatchCacheSizeByResource(cachesize.Endpoints),
&api.Endpoints{}, &api.Endpoints{},
@ -66,6 +66,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: endpoint.Strategy, DeleteStrategy: endpoint.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -60,6 +60,7 @@ func validChangedEndpoints() *api.Endpoints {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
endpoints := validNewEndpoints() endpoints := validNewEndpoints()
endpoints.ObjectMeta = api.ObjectMeta{} endpoints.ObjectMeta = api.ObjectMeta{}
@ -76,6 +77,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).AllowCreateOnUpdate() test := registrytest.New(t, storage.Store).AllowCreateOnUpdate()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -95,6 +97,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewEndpoints()) test.TestDelete(validNewEndpoints())
} }
@ -102,6 +105,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewEndpoints()) test.TestGet(validNewEndpoints())
} }
@ -109,6 +113,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewEndpoints()) test.TestList(validNewEndpoints())
} }
@ -116,6 +121,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewEndpoints(), validNewEndpoints(),

View File

@ -34,7 +34,7 @@ func NewREST(opts generic.RESTOptions, ttl uint64) *REST {
// We explicitly do NOT do any decoration here - switching on Cacher // We explicitly do NOT do any decoration here - switching on Cacher
// for events will lead to too high memory consumption. // for events will lead to too high memory consumption.
storageInterface, _ := generic.NewRawStorage(opts.StorageConfig) storageInterface, dFunc := generic.NewRawStorage(opts.StorageConfig)
store := &registry.Store{ store := &registry.Store{
NewFunc: func() runtime.Object { return &api.Event{} }, NewFunc: func() runtime.Object { return &api.Event{} },
@ -60,6 +60,7 @@ func NewREST(opts generic.RESTOptions, ttl uint64) *REST {
DeleteStrategy: event.Strategy, DeleteStrategy: event.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -51,6 +51,7 @@ func validNewEvent(namespace string) *api.Event {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
event := validNewEvent(test.TestNamespace()) event := validNewEvent(test.TestNamespace())
event.ObjectMeta = api.ObjectMeta{} event.ObjectMeta = api.ObjectMeta{}
@ -65,6 +66,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).AllowCreateOnUpdate() test := registrytest.New(t, storage.Store).AllowCreateOnUpdate()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -87,6 +89,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewEvent(test.TestNamespace())) test.TestDelete(validNewEvent(test.TestNamespace()))
} }

View File

@ -90,6 +90,9 @@ type Store struct {
// Returns a matcher corresponding to the provided labels and fields. // Returns a matcher corresponding to the provided labels and fields.
PredicateFunc func(label labels.Selector, field fields.Selector) *generic.SelectionPredicate PredicateFunc func(label labels.Selector, field fields.Selector) *generic.SelectionPredicate
// Called to cleanup storage clients.
DestroyFunc func()
// DeleteCollectionWorkers is the maximum number of workers in a single // DeleteCollectionWorkers is the maximum number of workers in a single
// DeleteCollection call. // DeleteCollection call.
DeleteCollectionWorkers int DeleteCollectionWorkers int

View File

@ -40,7 +40,6 @@ import (
"k8s.io/kubernetes/pkg/selection" "k8s.io/kubernetes/pkg/selection"
"k8s.io/kubernetes/pkg/storage" "k8s.io/kubernetes/pkg/storage"
etcdstorage "k8s.io/kubernetes/pkg/storage/etcd" etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing" etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
"k8s.io/kubernetes/pkg/storage/storagebackend/factory" "k8s.io/kubernetes/pkg/storage/storagebackend/factory"
storagetesting "k8s.io/kubernetes/pkg/storage/testing" storagetesting "k8s.io/kubernetes/pkg/storage/testing"
@ -1197,12 +1196,16 @@ func TestStoreWatch(t *testing.T) {
func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.DestroyFunc, *Store) { func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.DestroyFunc, *Store) {
podPrefix := "/pods" podPrefix := "/pods"
server := etcdtesting.NewEtcdTestClientServer(t) server, sc := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
strategy := &testRESTStrategy{api.Scheme, api.SimpleNameGenerator, true, false, true} strategy := &testRESTStrategy{api.Scheme, api.SimpleNameGenerator, true, false, true}
codec := testapi.Default.StorageCodec() sc.Codec = testapi.Default.StorageCodec()
s := etcdstorage.NewEtcdStorage(server.Client, codec, etcdtest.PathPrefix(), false, etcdtest.DeserializationCacheSize) s, dFunc, err := factory.Create(*sc)
if err != nil {
t.Fatalf("Error creating storage: %v", err)
}
destroyFunc := func() { destroyFunc := func() {
dFunc()
server.Terminate(t) server.Terminate(t)
} }
if hasCacheEnabled { if hasCacheEnabled {
@ -1214,7 +1217,7 @@ func newTestGenericStoreRegistry(t *testing.T, hasCacheEnabled bool) (factory.De
ResourcePrefix: podPrefix, ResourcePrefix: podPrefix,
KeyFunc: func(obj runtime.Object) (string, error) { return storage.NoNamespaceKeyFunc(podPrefix, obj) }, KeyFunc: func(obj runtime.Object) (string, error) { return storage.NoNamespaceKeyFunc(podPrefix, obj) },
NewListFunc: func() runtime.Object { return &api.PodList{} }, NewListFunc: func() runtime.Object { return &api.PodList{} },
Codec: codec, Codec: sc.Codec,
} }
cacher := storage.NewCacherFromConfig(config) cacher := storage.NewCacherFromConfig(config)
d := destroyFunc d := destroyFunc

View File

@ -37,7 +37,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &autoscaling.HorizontalPodAutoscalerList{} } newListFunc := func() runtime.Object { return &autoscaling.HorizontalPodAutoscalerList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.HorizontalPodAutoscalers), cachesize.GetWatchCacheSizeByResource(cachesize.HorizontalPodAutoscalers),
&autoscaling.HorizontalPodAutoscaler{}, &autoscaling.HorizontalPodAutoscaler{},
@ -78,6 +78,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: horizontalpodautoscaler.Strategy, DeleteStrategy: horizontalpodautoscaler.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = horizontalpodautoscaler.StatusStrategy statusStore.UpdateStrategy = horizontalpodautoscaler.StatusStrategy

View File

@ -59,6 +59,7 @@ func validNewHorizontalPodAutoscaler(name string) *autoscaling.HorizontalPodAuto
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
autoscaler := validNewHorizontalPodAutoscaler("foo") autoscaler := validNewHorizontalPodAutoscaler("foo")
autoscaler.ObjectMeta = api.ObjectMeta{} autoscaler.ObjectMeta = api.ObjectMeta{}
@ -73,6 +74,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -89,6 +91,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewHorizontalPodAutoscaler("foo")) test.TestDelete(validNewHorizontalPodAutoscaler("foo"))
} }
@ -96,6 +99,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewHorizontalPodAutoscaler("foo")) test.TestGet(validNewHorizontalPodAutoscaler("foo"))
} }
@ -103,6 +107,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewHorizontalPodAutoscaler("foo")) test.TestList(validNewHorizontalPodAutoscaler("foo"))
} }
@ -110,6 +115,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewHorizontalPodAutoscaler("foo"), validNewHorizontalPodAutoscaler("foo"),

View File

@ -38,7 +38,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &extensions.IngressList{} } newListFunc := func() runtime.Object { return &extensions.IngressList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Ingress), cachesize.GetWatchCacheSizeByResource(cachesize.Ingress),
&extensions.Ingress{}, &extensions.Ingress{},
@ -80,6 +80,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: ingress.Strategy, DeleteStrategy: ingress.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = ingress.StatusStrategy statusStore.UpdateStrategy = ingress.StatusStrategy

View File

@ -115,6 +115,7 @@ func validIngress() *extensions.Ingress {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
ingress := validIngress() ingress := validIngress()
noDefaultBackendAndRules := validIngress() noDefaultBackendAndRules := validIngress()
@ -134,6 +135,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -169,6 +171,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validIngress()) test.TestDelete(validIngress())
} }
@ -176,6 +179,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validIngress()) test.TestGet(validIngress())
} }
@ -183,6 +187,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validIngress()) test.TestList(validIngress())
} }
@ -190,6 +195,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validIngress(), validIngress(),

View File

@ -38,7 +38,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &batch.JobList{} } newListFunc := func() runtime.Object { return &batch.JobList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Jobs), cachesize.GetWatchCacheSizeByResource(cachesize.Jobs),
&batch.Job{}, &batch.Job{},
@ -80,6 +80,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: job.Strategy, DeleteStrategy: job.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -76,6 +76,7 @@ func validNewJob() *batch.Job {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
validJob := validNewJob() validJob := validNewJob()
validJob.ObjectMeta = api.ObjectMeta{} validJob.ObjectMeta = api.ObjectMeta{}
@ -96,6 +97,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
two := int32(2) two := int32(2)
test.TestUpdate( test.TestUpdate(
@ -124,6 +126,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewJob()) test.TestDelete(validNewJob())
} }
@ -131,6 +134,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewJob()) test.TestGet(validNewJob())
} }
@ -138,6 +142,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewJob()) test.TestList(validNewJob())
} }
@ -145,6 +150,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewJob(), validNewJob(),

View File

@ -35,7 +35,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.LimitRangeList{} } newListFunc := func() runtime.Object { return &api.LimitRangeList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.LimitRanges), cachesize.GetWatchCacheSizeByResource(cachesize.LimitRanges),
&api.LimitRange{}, &api.LimitRange{},
@ -67,6 +67,7 @@ func NewREST(opts generic.RESTOptions) *REST {
ExportStrategy: limitrange.Strategy, ExportStrategy: limitrange.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -62,6 +62,7 @@ func validNewLimitRange() *api.LimitRange {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).GeneratesName() test := registrytest.New(t, storage.Store).GeneratesName()
validLimitRange := validNewLimitRange() validLimitRange := validNewLimitRange()
validLimitRange.ObjectMeta = api.ObjectMeta{} validLimitRange.ObjectMeta = api.ObjectMeta{}
@ -78,6 +79,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).AllowCreateOnUpdate() test := registrytest.New(t, storage.Store).AllowCreateOnUpdate()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -106,6 +108,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewLimitRange()) test.TestDelete(validNewLimitRange())
} }
@ -113,6 +116,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewLimitRange()) test.TestGet(validNewLimitRange())
} }
@ -120,6 +124,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewLimitRange()) test.TestList(validNewLimitRange())
} }
@ -127,6 +132,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewLimitRange(), validNewLimitRange(),

View File

@ -53,7 +53,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST, *FinalizeREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.NamespaceList{} } newListFunc := func() runtime.Object { return &api.NamespaceList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Namespaces), cachesize.GetWatchCacheSizeByResource(cachesize.Namespaces),
&api.Namespace{}, &api.Namespace{},
@ -85,6 +85,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST, *FinalizeREST) {
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -47,6 +47,7 @@ func validNewNamespace() *api.Namespace {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
namespace := validNewNamespace() namespace := validNewNamespace()
namespace.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} namespace.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
@ -63,6 +64,7 @@ func TestCreate(t *testing.T) {
func TestCreateSetsFields(t *testing.T) { func TestCreateSetsFields(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
namespace := validNewNamespace() namespace := validNewNamespace()
ctx := api.NewContext() ctx := api.NewContext()
_, err := storage.Create(ctx, namespace) _, err := storage.Create(ctx, namespace)
@ -89,6 +91,7 @@ func TestCreateSetsFields(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject() test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject()
test.TestDelete(validNewNamespace()) test.TestDelete(validNewNamespace())
} }
@ -96,6 +99,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestGet(validNewNamespace()) test.TestGet(validNewNamespace())
} }
@ -103,6 +107,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestList(validNewNamespace()) test.TestList(validNewNamespace())
} }
@ -110,6 +115,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestWatch( test.TestWatch(
validNewNamespace(), validNewNamespace(),
@ -134,6 +140,7 @@ func TestWatch(t *testing.T) {
func TestDeleteNamespaceWithIncompleteFinalizers(t *testing.T) { func TestDeleteNamespaceWithIncompleteFinalizers(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
key := etcdtest.AddPrefix("namespaces/foo") key := etcdtest.AddPrefix("namespaces/foo")
ctx := api.NewContext() ctx := api.NewContext()
now := unversioned.Now() now := unversioned.Now()
@ -158,6 +165,7 @@ func TestDeleteNamespaceWithIncompleteFinalizers(t *testing.T) {
func TestDeleteNamespaceWithCompleteFinalizers(t *testing.T) { func TestDeleteNamespaceWithCompleteFinalizers(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
key := etcdtest.AddPrefix("namespaces/foo") key := etcdtest.AddPrefix("namespaces/foo")
ctx := api.NewContext() ctx := api.NewContext()
now := unversioned.Now() now := unversioned.Now()

View File

@ -37,7 +37,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &extensionsapi.NetworkPolicyList{} } newListFunc := func() runtime.Object { return &extensionsapi.NetworkPolicyList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.NetworkPolicys), cachesize.GetWatchCacheSizeByResource(cachesize.NetworkPolicys),
&extensionsapi.NetworkPolicy{}, &extensionsapi.NetworkPolicy{},
@ -79,6 +79,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: networkpolicy.Strategy, DeleteStrategy: networkpolicy.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -81,6 +81,7 @@ var validNetworkPolicy = *validNewNetworkPolicy()
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
np := validNewNetworkPolicy() np := validNewNetworkPolicy()
np.ObjectMeta = api.ObjectMeta{} np.ObjectMeta = api.ObjectMeta{}
@ -102,6 +103,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -128,6 +130,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewNetworkPolicy()) test.TestDelete(validNewNetworkPolicy())
} }
@ -135,6 +138,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewNetworkPolicy()) test.TestGet(validNewNetworkPolicy())
} }
@ -142,6 +146,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewNetworkPolicy()) test.TestList(validNewNetworkPolicy())
} }
@ -149,6 +154,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewNetworkPolicy(), validNewNetworkPolicy(),

View File

@ -69,7 +69,7 @@ func NewStorage(opts generic.RESTOptions, connection client.ConnectionInfoGetter
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.NodeList{} } newListFunc := func() runtime.Object { return &api.NodeList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Nodes), cachesize.GetWatchCacheSizeByResource(cachesize.Nodes),
&api.Node{}, &api.Node{},
@ -100,6 +100,7 @@ func NewStorage(opts generic.RESTOptions, connection client.ConnectionInfoGetter
ExportStrategy: node.Strategy, ExportStrategy: node.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -67,6 +67,7 @@ func validNewNode() *api.Node {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
node := validNewNode() node := validNewNode()
node.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} node.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
@ -83,6 +84,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -99,6 +101,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestDelete(validNewNode()) test.TestDelete(validNewNode())
} }
@ -106,6 +109,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestGet(validNewNode()) test.TestGet(validNewNode())
} }
@ -113,6 +117,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestList(validNewNode()) test.TestList(validNewNode())
} }
@ -120,6 +125,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestWatch( test.TestWatch(
validNewNode(), validNewNode(),

View File

@ -36,7 +36,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.PersistentVolumeList{} } newListFunc := func() runtime.Object { return &api.PersistentVolumeList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.PersistentVolumes), cachesize.GetWatchCacheSizeByResource(cachesize.PersistentVolumes),
&api.PersistentVolume{}, &api.PersistentVolume{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -71,6 +71,7 @@ func validChangedPersistentVolume() *api.PersistentVolume {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
pv := validNewPersistentVolume("foo") pv := validNewPersistentVolume("foo")
pv.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} pv.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
@ -87,6 +88,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -105,6 +107,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject() test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject()
test.TestDelete(validNewPersistentVolume("foo")) test.TestDelete(validNewPersistentVolume("foo"))
} }
@ -112,6 +115,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestGet(validNewPersistentVolume("foo")) test.TestGet(validNewPersistentVolume("foo"))
} }
@ -119,6 +123,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestList(validNewPersistentVolume("foo")) test.TestList(validNewPersistentVolume("foo"))
} }
@ -126,6 +131,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestWatch( test.TestWatch(
validNewPersistentVolume("foo"), validNewPersistentVolume("foo"),
@ -150,6 +156,7 @@ func TestWatch(t *testing.T) {
func TestUpdateStatus(t *testing.T) { func TestUpdateStatus(t *testing.T) {
storage, statusStorage, server := newStorage(t) storage, statusStorage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewContext() ctx := api.NewContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")
key = etcdtest.AddPrefix(key) key = etcdtest.AddPrefix(key)

View File

@ -36,7 +36,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.PersistentVolumeClaimList{} } newListFunc := func() runtime.Object { return &api.PersistentVolumeClaimList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.PersistentVolumeClaims), cachesize.GetWatchCacheSizeByResource(cachesize.PersistentVolumeClaims),
&api.PersistentVolumeClaim{}, &api.PersistentVolumeClaim{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -63,6 +63,7 @@ func validNewPersistentVolumeClaim(name, ns string) *api.PersistentVolumeClaim {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
pv := validNewPersistentVolumeClaim("foo", api.NamespaceDefault) pv := validNewPersistentVolumeClaim("foo", api.NamespaceDefault)
pv.ObjectMeta = api.ObjectMeta{} pv.ObjectMeta = api.ObjectMeta{}
@ -79,6 +80,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -95,6 +97,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ReturnDeletedObject() test := registrytest.New(t, storage.Store).ReturnDeletedObject()
test.TestDelete(validNewPersistentVolumeClaim("foo", api.NamespaceDefault)) test.TestDelete(validNewPersistentVolumeClaim("foo", api.NamespaceDefault))
} }
@ -102,6 +105,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewPersistentVolumeClaim("foo", api.NamespaceDefault)) test.TestGet(validNewPersistentVolumeClaim("foo", api.NamespaceDefault))
} }
@ -109,6 +113,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewPersistentVolumeClaim("foo", api.NamespaceDefault)) test.TestList(validNewPersistentVolumeClaim("foo", api.NamespaceDefault))
} }
@ -116,6 +121,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewPersistentVolumeClaim("foo", api.NamespaceDefault), validNewPersistentVolumeClaim("foo", api.NamespaceDefault),
@ -140,6 +146,7 @@ func TestWatch(t *testing.T) {
func TestUpdateStatus(t *testing.T) { func TestUpdateStatus(t *testing.T) {
storage, statusStorage, server := newStorage(t) storage, statusStorage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")

View File

@ -38,7 +38,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &appsapi.PetSetList{} } newListFunc := func() runtime.Object { return &appsapi.PetSetList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.PetSet), cachesize.GetWatchCacheSizeByResource(cachesize.PetSet),
&appsapi.PetSet{}, &appsapi.PetSet{},
@ -80,6 +80,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: petset.Strategy, DeleteStrategy: petset.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = petset.StatusStrategy statusStore.UpdateStrategy = petset.StatusStrategy

View File

@ -83,6 +83,7 @@ func validNewPetSet() *apps.PetSet {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
ps := validNewPetSet() ps := validNewPetSet()
ps.ObjectMeta = api.ObjectMeta{} ps.ObjectMeta = api.ObjectMeta{}
@ -98,7 +99,7 @@ func TestCreate(t *testing.T) {
func TestStatusUpdate(t *testing.T) { func TestStatusUpdate(t *testing.T) {
storage, statusStorage, server := newStorage(t) storage, statusStorage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.WithNamespace(api.NewContext(), api.NamespaceDefault) ctx := api.WithNamespace(api.NewContext(), api.NamespaceDefault)
key := etcdtest.AddPrefix("/petsets/" + api.NamespaceDefault + "/foo") key := etcdtest.AddPrefix("/petsets/" + api.NamespaceDefault + "/foo")
validPetSet := validNewPetSet() validPetSet := validNewPetSet()
@ -135,6 +136,7 @@ func TestStatusUpdate(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewPetSet()) test.TestGet(validNewPetSet())
} }
@ -142,6 +144,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewPetSet()) test.TestList(validNewPetSet())
} }
@ -149,6 +152,7 @@ func TestList(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewPetSet()) test.TestDelete(validNewPetSet())
} }
@ -156,6 +160,7 @@ func TestDelete(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewPetSet(), validNewPetSet(),

View File

@ -63,7 +63,7 @@ func NewStorage(opts generic.RESTOptions, k client.ConnectionInfoGetter, proxyTr
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.PodList{} } newListFunc := func() runtime.Object { return &api.PodList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Pods), cachesize.GetWatchCacheSizeByResource(cachesize.Pods),
&api.Pod{}, &api.Pod{},
@ -95,6 +95,7 @@ func NewStorage(opts generic.RESTOptions, k client.ConnectionInfoGetter, proxyTr
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -82,6 +82,7 @@ func validChangedPod() *api.Pod {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
pod := validNewPod() pod := validNewPod()
pod.ObjectMeta = api.ObjectMeta{} pod.ObjectMeta = api.ObjectMeta{}
@ -108,6 +109,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -124,6 +126,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ReturnDeletedObject() test := registrytest.New(t, storage.Store).ReturnDeletedObject()
test.TestDelete(validNewPod()) test.TestDelete(validNewPod())
@ -156,6 +159,7 @@ func TestIgnoreDeleteNotFound(t *testing.T) {
called := false called := false
registry, server := newFailDeleteStorage(t, &called) registry, server := newFailDeleteStorage(t, &called)
defer server.Terminate(t) defer server.Terminate(t)
defer registry.Store.DestroyFunc()
// should fail if pod A is not created yet. // should fail if pod A is not created yet.
_, err := registry.Delete(testContext, pod.Name, nil) _, err := registry.Delete(testContext, pod.Name, nil)
@ -199,6 +203,7 @@ func TestIgnoreDeleteNotFound(t *testing.T) {
func TestCreateSetsFields(t *testing.T) { func TestCreateSetsFields(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
pod := validNewPod() pod := validNewPod()
_, err := storage.Create(api.NewDefaultContext(), pod) _, err := storage.Create(api.NewDefaultContext(), pod)
if err != nil { if err != nil {
@ -341,6 +346,7 @@ func TestResourceLocation(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewPod()) test.TestGet(validNewPod())
} }
@ -348,6 +354,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewPod()) test.TestList(validNewPod())
} }
@ -355,6 +362,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewPod(), validNewPod(),
@ -378,6 +386,7 @@ func TestWatch(t *testing.T) {
func TestEtcdCreate(t *testing.T) { func TestEtcdCreate(t *testing.T) {
storage, bindingStorage, _, server := newStorage(t) storage, bindingStorage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")
key = etcdtest.AddPrefix(key) key = etcdtest.AddPrefix(key)
@ -406,6 +415,7 @@ func TestEtcdCreate(t *testing.T) {
func TestEtcdCreateBindingNoPod(t *testing.T) { func TestEtcdCreateBindingNoPod(t *testing.T) {
storage, bindingStorage, _, server := newStorage(t) storage, bindingStorage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")
@ -437,6 +447,7 @@ func TestEtcdCreateBindingNoPod(t *testing.T) {
func TestEtcdCreateFailsWithoutNamespace(t *testing.T) { func TestEtcdCreateFailsWithoutNamespace(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
pod := validNewPod() pod := validNewPod()
pod.Namespace = "" pod.Namespace = ""
_, err := storage.Create(api.NewContext(), pod) _, err := storage.Create(api.NewContext(), pod)
@ -449,6 +460,7 @@ func TestEtcdCreateFailsWithoutNamespace(t *testing.T) {
func TestEtcdCreateWithContainersNotFound(t *testing.T) { func TestEtcdCreateWithContainersNotFound(t *testing.T) {
storage, bindingStorage, _, server := newStorage(t) storage, bindingStorage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")
key = etcdtest.AddPrefix(key) key = etcdtest.AddPrefix(key)
@ -484,6 +496,7 @@ func TestEtcdCreateWithContainersNotFound(t *testing.T) {
func TestEtcdCreateWithConflict(t *testing.T) { func TestEtcdCreateWithConflict(t *testing.T) {
storage, bindingStorage, _, server := newStorage(t) storage, bindingStorage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
_, err := storage.Create(ctx, validNewPod()) _, err := storage.Create(ctx, validNewPod())
@ -514,6 +527,7 @@ func TestEtcdCreateWithConflict(t *testing.T) {
func TestEtcdCreateWithExistingContainers(t *testing.T) { func TestEtcdCreateWithExistingContainers(t *testing.T) {
storage, bindingStorage, _, server := newStorage(t) storage, bindingStorage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")
key = etcdtest.AddPrefix(key) key = etcdtest.AddPrefix(key)
@ -592,6 +606,7 @@ func TestEtcdCreateBinding(t *testing.T) {
t.Errorf("%s: expected: %v, got: %v", k, pod.(*api.Pod).Spec.NodeName, test.binding.Target.Name) t.Errorf("%s: expected: %v, got: %v", k, pod.(*api.Pod).Spec.NodeName, test.binding.Target.Name)
} }
} }
storage.Store.DestroyFunc()
server.Terminate(t) server.Terminate(t)
} }
} }
@ -599,6 +614,7 @@ func TestEtcdCreateBinding(t *testing.T) {
func TestEtcdUpdateNotScheduled(t *testing.T) { func TestEtcdUpdateNotScheduled(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")
@ -626,6 +642,7 @@ func TestEtcdUpdateNotScheduled(t *testing.T) {
func TestEtcdUpdateScheduled(t *testing.T) { func TestEtcdUpdateScheduled(t *testing.T) {
storage, _, _, server := newStorage(t) storage, _, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")
@ -695,6 +712,7 @@ func TestEtcdUpdateScheduled(t *testing.T) {
func TestEtcdUpdateStatus(t *testing.T) { func TestEtcdUpdateStatus(t *testing.T) {
storage, _, statusStorage, server := newStorage(t) storage, _, statusStorage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")

View File

@ -38,7 +38,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &policyapi.PodDisruptionBudgetList{} } newListFunc := func() runtime.Object { return &policyapi.PodDisruptionBudgetList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.PodDisruptionBudget), cachesize.GetWatchCacheSizeByResource(cachesize.PodDisruptionBudget),
&policyapi.PodDisruptionBudget{}, &policyapi.PodDisruptionBudget{},
@ -80,6 +80,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: poddisruptionbudget.Strategy, DeleteStrategy: poddisruptionbudget.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = poddisruptionbudget.StatusStrategy statusStore.UpdateStrategy = poddisruptionbudget.StatusStrategy

View File

@ -68,6 +68,7 @@ func validNewPodDisruptionBudget() *policy.PodDisruptionBudget {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
pdb := validNewPodDisruptionBudget() pdb := validNewPodDisruptionBudget()
pdb.ObjectMeta = api.ObjectMeta{} pdb.ObjectMeta = api.ObjectMeta{}
@ -83,7 +84,7 @@ func TestCreate(t *testing.T) {
func TestStatusUpdate(t *testing.T) { func TestStatusUpdate(t *testing.T) {
storage, statusStorage, server := newStorage(t) storage, statusStorage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.WithNamespace(api.NewContext(), api.NamespaceDefault) ctx := api.WithNamespace(api.NewContext(), api.NamespaceDefault)
key := etcdtest.AddPrefix("/poddisruptionbudgets/" + api.NamespaceDefault + "/foo") key := etcdtest.AddPrefix("/poddisruptionbudgets/" + api.NamespaceDefault + "/foo")
validPodDisruptionBudget := validNewPodDisruptionBudget() validPodDisruptionBudget := validNewPodDisruptionBudget()
@ -120,6 +121,7 @@ func TestStatusUpdate(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewPodDisruptionBudget()) test.TestGet(validNewPodDisruptionBudget())
} }
@ -127,6 +129,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewPodDisruptionBudget()) test.TestList(validNewPodDisruptionBudget())
} }
@ -134,6 +137,7 @@ func TestList(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewPodDisruptionBudget()) test.TestDelete(validNewPodDisruptionBudget())
} }
@ -141,6 +145,7 @@ func TestDelete(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewPodDisruptionBudget(), validNewPodDisruptionBudget(),

View File

@ -37,7 +37,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &extensions.PodSecurityPolicyList{} } newListFunc := func() runtime.Object { return &extensions.PodSecurityPolicyList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.PodSecurityPolicies), cachesize.GetWatchCacheSizeByResource(cachesize.PodSecurityPolicies),
&extensions.PodSecurityPolicy{}, &extensions.PodSecurityPolicy{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: podsecuritypolicy.Strategy, DeleteStrategy: podsecuritypolicy.Strategy,
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -62,6 +62,7 @@ func validNewPodSecurityPolicy() *extensions.PodSecurityPolicy {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
psp := validNewPodSecurityPolicy() psp := validNewPodSecurityPolicy()
psp.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"} psp.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"}
@ -78,6 +79,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -94,6 +96,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject() test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject()
test.TestDelete(validNewPodSecurityPolicy()) test.TestDelete(validNewPodSecurityPolicy())
} }
@ -101,6 +104,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestGet(validNewPodSecurityPolicy()) test.TestGet(validNewPodSecurityPolicy())
} }
@ -108,6 +112,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestList(validNewPodSecurityPolicy()) test.TestList(validNewPodSecurityPolicy())
} }
@ -115,6 +120,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestWatch( test.TestWatch(
validNewPodSecurityPolicy(), validNewPodSecurityPolicy(),

View File

@ -35,7 +35,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.PodTemplateList{} } newListFunc := func() runtime.Object { return &api.PodTemplateList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.PodTemplates), cachesize.GetWatchCacheSizeByResource(cachesize.PodTemplates),
&api.PodTemplate{}, &api.PodTemplate{},
@ -69,6 +69,7 @@ func NewREST(opts generic.RESTOptions) *REST {
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -64,6 +64,7 @@ func validNewPodTemplate(name string) *api.PodTemplate {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
pod := validNewPodTemplate("foo") pod := validNewPodTemplate("foo")
pod.ObjectMeta = api.ObjectMeta{} pod.ObjectMeta = api.ObjectMeta{}
@ -80,6 +81,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
//valid //valid
@ -96,6 +98,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ReturnDeletedObject() test := registrytest.New(t, storage.Store).ReturnDeletedObject()
test.TestDelete(validNewPodTemplate("foo")) test.TestDelete(validNewPodTemplate("foo"))
} }
@ -103,6 +106,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewPodTemplate("foo")) test.TestGet(validNewPodTemplate("foo"))
} }
@ -110,6 +114,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewPodTemplate("foo")) test.TestList(validNewPodTemplate("foo"))
} }
@ -117,6 +122,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewPodTemplate("foo"), validNewPodTemplate("foo"),

View File

@ -30,21 +30,14 @@ import (
"k8s.io/kubernetes/pkg/registry/generic/registry" "k8s.io/kubernetes/pkg/registry/generic/registry"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
etcdstorage "k8s.io/kubernetes/pkg/storage/etcd" etcdstorage "k8s.io/kubernetes/pkg/storage/etcd"
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing" etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
"k8s.io/kubernetes/pkg/storage/storagebackend" "k8s.io/kubernetes/pkg/storage/storagebackend"
storagetesting "k8s.io/kubernetes/pkg/storage/testing" storagetesting "k8s.io/kubernetes/pkg/storage/testing"
) )
func NewEtcdStorage(t *testing.T, group string) (*storagebackend.Config, *etcdtesting.EtcdTestServer) { func NewEtcdStorage(t *testing.T, group string) (*storagebackend.Config, *etcdtesting.EtcdTestServer) {
server := etcdtesting.NewUnsecuredEtcdTestClientServer(t) server, config := etcdtesting.NewUnsecuredEtcd3TestClientServer(t)
config := &storagebackend.Config{ config.Codec = testapi.Groups[group].StorageCodec()
Type: "etcd2",
Prefix: etcdtest.PathPrefix(),
ServerList: server.Client.Endpoints(),
DeserializationCacheSize: etcdtest.DeserializationCacheSize,
Codec: testapi.Groups[group].StorageCodec(),
}
return config, server return config, server
} }

View File

@ -61,7 +61,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &extensions.ReplicaSetList{} } newListFunc := func() runtime.Object { return &extensions.ReplicaSetList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Replicasets), cachesize.GetWatchCacheSizeByResource(cachesize.Replicasets),
&extensions.ReplicaSet{}, &extensions.ReplicaSet{},
@ -103,6 +103,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: replicaset.Strategy, DeleteStrategy: replicaset.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = replicaset.StatusStrategy statusStore.UpdateStrategy = replicaset.StatusStrategy

View File

@ -91,6 +91,7 @@ var validReplicaSet = *validNewReplicaSet()
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
test := registrytest.New(t, storage.ReplicaSet.Store) test := registrytest.New(t, storage.ReplicaSet.Store)
rs := validNewReplicaSet() rs := validNewReplicaSet()
rs.ObjectMeta = api.ObjectMeta{} rs.ObjectMeta = api.ObjectMeta{}
@ -111,6 +112,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
test := registrytest.New(t, storage.ReplicaSet.Store) test := registrytest.New(t, storage.ReplicaSet.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -138,6 +140,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
test := registrytest.New(t, storage.ReplicaSet.Store) test := registrytest.New(t, storage.ReplicaSet.Store)
test.TestDelete(validNewReplicaSet()) test.TestDelete(validNewReplicaSet())
} }
@ -145,6 +148,7 @@ func TestDelete(t *testing.T) {
func TestGenerationNumber(t *testing.T) { func TestGenerationNumber(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
modifiedSno := *validNewReplicaSet() modifiedSno := *validNewReplicaSet()
modifiedSno.Generation = 100 modifiedSno.Generation = 100
modifiedSno.Status.ObservedGeneration = 10 modifiedSno.Status.ObservedGeneration = 10
@ -195,6 +199,7 @@ func TestGenerationNumber(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
test := registrytest.New(t, storage.ReplicaSet.Store) test := registrytest.New(t, storage.ReplicaSet.Store)
test.TestGet(validNewReplicaSet()) test.TestGet(validNewReplicaSet())
} }
@ -202,6 +207,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
test := registrytest.New(t, storage.ReplicaSet.Store) test := registrytest.New(t, storage.ReplicaSet.Store)
test.TestList(validNewReplicaSet()) test.TestList(validNewReplicaSet())
} }
@ -209,6 +215,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
test := registrytest.New(t, storage.ReplicaSet.Store) test := registrytest.New(t, storage.ReplicaSet.Store)
test.TestWatch( test.TestWatch(
validNewReplicaSet(), validNewReplicaSet(),
@ -241,6 +248,7 @@ func TestWatch(t *testing.T) {
func TestScaleGet(t *testing.T) { func TestScaleGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
name := "foo" name := "foo"
@ -280,6 +288,7 @@ func TestScaleGet(t *testing.T) {
func TestScaleUpdate(t *testing.T) { func TestScaleUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
name := "foo" name := "foo"
@ -324,6 +333,7 @@ func TestScaleUpdate(t *testing.T) {
func TestStatusUpdate(t *testing.T) { func TestStatusUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.ReplicaSet.Store.DestroyFunc()
ctx := api.WithNamespace(api.NewContext(), api.NamespaceDefault) ctx := api.WithNamespace(api.NewContext(), api.NamespaceDefault)
key := etcdtest.AddPrefix("/replicasets/" + api.NamespaceDefault + "/foo") key := etcdtest.AddPrefix("/replicasets/" + api.NamespaceDefault + "/foo")

View File

@ -36,7 +36,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.ResourceQuotaList{} } newListFunc := func() runtime.Object { return &api.ResourceQuotaList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.ResourceQuotas), cachesize.GetWatchCacheSizeByResource(cachesize.ResourceQuotas),
&api.ResourceQuota{}, &api.ResourceQuota{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -60,6 +60,7 @@ func validNewResourceQuota() *api.ResourceQuota {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
resourcequota := validNewResourceQuota() resourcequota := validNewResourceQuota()
resourcequota.ObjectMeta = api.ObjectMeta{} resourcequota.ObjectMeta = api.ObjectMeta{}
@ -76,6 +77,7 @@ func TestCreate(t *testing.T) {
func TestCreateSetsFields(t *testing.T) { func TestCreateSetsFields(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
resourcequota := validNewResourceQuota() resourcequota := validNewResourceQuota()
_, err := storage.Create(api.NewDefaultContext(), resourcequota) _, err := storage.Create(api.NewDefaultContext(), resourcequota)
@ -99,6 +101,7 @@ func TestCreateSetsFields(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ReturnDeletedObject() test := registrytest.New(t, storage.Store).ReturnDeletedObject()
test.TestDelete(validNewResourceQuota()) test.TestDelete(validNewResourceQuota())
} }
@ -106,6 +109,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewResourceQuota()) test.TestGet(validNewResourceQuota())
} }
@ -113,6 +117,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewResourceQuota()) test.TestList(validNewResourceQuota())
} }
@ -120,6 +125,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewResourceQuota(), validNewResourceQuota(),
@ -143,6 +149,7 @@ func TestWatch(t *testing.T) {
func TestUpdateStatus(t *testing.T) { func TestUpdateStatus(t *testing.T) {
storage, status, server := newStorage(t) storage, status, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
key, _ := storage.KeyFunc(ctx, "foo") key, _ := storage.KeyFunc(ctx, "foo")

View File

@ -37,7 +37,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &rbac.RoleList{} } newListFunc := func() runtime.Object { return &rbac.RoleList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Roles), cachesize.GetWatchCacheSizeByResource(cachesize.Roles),
&rbac.Role{}, &rbac.Role{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: role.Strategy, DeleteStrategy: role.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}

View File

@ -37,7 +37,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &rbac.RoleBindingList{} } newListFunc := func() runtime.Object { return &rbac.RoleBindingList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.RoleBindings), cachesize.GetWatchCacheSizeByResource(cachesize.RoleBindings),
&rbac.RoleBinding{}, &rbac.RoleBinding{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: rolebinding.Strategy, DeleteStrategy: rolebinding.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}

View File

@ -38,7 +38,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &batch.ScheduledJobList{} } newListFunc := func() runtime.Object { return &batch.ScheduledJobList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.ScheduledJobs), cachesize.GetWatchCacheSizeByResource(cachesize.ScheduledJobs),
&batch.ScheduledJob{}, &batch.ScheduledJob{},
@ -80,6 +80,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
DeleteStrategy: scheduledjob.Strategy, DeleteStrategy: scheduledjob.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store

View File

@ -70,6 +70,7 @@ func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
validScheduledJob := validNewScheduledJob() validScheduledJob := validNewScheduledJob()
validScheduledJob.ObjectMeta = api.ObjectMeta{} validScheduledJob.ObjectMeta = api.ObjectMeta{}
@ -91,6 +92,7 @@ func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
schedule := "1 1 1 1 ?" schedule := "1 1 1 1 ?"
test.TestUpdate( test.TestUpdate(
@ -119,6 +121,7 @@ func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewScheduledJob()) test.TestDelete(validNewScheduledJob())
} }
@ -131,6 +134,7 @@ func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewScheduledJob()) test.TestGet(validNewScheduledJob())
} }
@ -143,6 +147,7 @@ func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewScheduledJob()) test.TestList(validNewScheduledJob())
} }
@ -155,6 +160,7 @@ func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewScheduledJob(), validNewScheduledJob(),

View File

@ -35,7 +35,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.SecretList{} } newListFunc := func() runtime.Object { return &api.SecretList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Secrets), cachesize.GetWatchCacheSizeByResource(cachesize.Secrets),
&api.Secret{}, &api.Secret{},
@ -66,6 +66,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: secret.Strategy, DeleteStrategy: secret.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -49,6 +49,7 @@ func validNewSecret(name string) *api.Secret {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
secret := validNewSecret("foo") secret := validNewSecret("foo")
secret.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"} secret.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"}
@ -71,6 +72,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -87,6 +89,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewSecret("foo")) test.TestDelete(validNewSecret("foo"))
} }
@ -94,6 +97,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewSecret("foo")) test.TestGet(validNewSecret("foo"))
} }
@ -101,6 +105,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewSecret("foo")) test.TestList(validNewSecret("foo"))
} }
@ -108,6 +113,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewSecret("foo"), validNewSecret("foo"),

View File

@ -36,7 +36,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.ServiceList{} } newListFunc := func() runtime.Object { return &api.ServiceList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.Services), cachesize.GetWatchCacheSizeByResource(cachesize.Services),
&api.Service{}, &api.Service{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) (*REST, *StatusREST) {
ExportStrategy: service.Strategy, ExportStrategy: service.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
statusStore := *store statusStore := *store
statusStore.UpdateStrategy = service.StatusStrategy statusStore.UpdateStrategy = service.StatusStrategy

View File

@ -59,6 +59,7 @@ func validService() *api.Service {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
validService := validService() validService := validService()
validService.ObjectMeta = api.ObjectMeta{} validService.ObjectMeta = api.ObjectMeta{}
@ -89,6 +90,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).AllowCreateOnUpdate() test := registrytest.New(t, storage.Store).AllowCreateOnUpdate()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -114,6 +116,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).AllowCreateOnUpdate() test := registrytest.New(t, storage.Store).AllowCreateOnUpdate()
test.TestDelete(validService()) test.TestDelete(validService())
} }
@ -121,6 +124,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).AllowCreateOnUpdate() test := registrytest.New(t, storage.Store).AllowCreateOnUpdate()
test.TestGet(validService()) test.TestGet(validService())
} }
@ -128,6 +132,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).AllowCreateOnUpdate() test := registrytest.New(t, storage.Store).AllowCreateOnUpdate()
test.TestList(validService()) test.TestList(validService())
} }
@ -135,6 +140,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, _, server := newStorage(t) storage, _, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validService(), validService(),

View File

@ -35,7 +35,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &api.ServiceAccountList{} } newListFunc := func() runtime.Object { return &api.ServiceAccountList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.ServiceAccounts), cachesize.GetWatchCacheSizeByResource(cachesize.ServiceAccounts),
&api.ServiceAccount{}, &api.ServiceAccount{},
@ -67,6 +67,7 @@ func NewREST(opts generic.RESTOptions) *REST {
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}
} }

View File

@ -47,6 +47,7 @@ func validNewServiceAccount(name string) *api.ServiceAccount {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
serviceAccount := validNewServiceAccount("foo") serviceAccount := validNewServiceAccount("foo")
serviceAccount.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"} serviceAccount.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"}
@ -64,6 +65,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -80,6 +82,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ReturnDeletedObject() test := registrytest.New(t, storage.Store).ReturnDeletedObject()
test.TestDelete(validNewServiceAccount("foo")) test.TestDelete(validNewServiceAccount("foo"))
} }
@ -87,6 +90,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewServiceAccount("foo")) test.TestGet(validNewServiceAccount("foo"))
} }
@ -94,6 +98,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewServiceAccount("foo")) test.TestList(validNewServiceAccount("foo"))
} }
@ -101,6 +106,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewServiceAccount("foo"), validNewServiceAccount("foo"),

View File

@ -36,7 +36,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
newListFunc := func() runtime.Object { return &storageapi.StorageClassList{} } newListFunc := func() runtime.Object { return &storageapi.StorageClassList{} }
storageInterface, _ := opts.Decorator( storageInterface, dFunc := opts.Decorator(
opts.StorageConfig, opts.StorageConfig,
cachesize.GetWatchCacheSizeByResource(cachesize.StorageClasses), cachesize.GetWatchCacheSizeByResource(cachesize.StorageClasses),
&storageapi.StorageClass{}, &storageapi.StorageClass{},
@ -68,6 +68,7 @@ func NewREST(opts generic.RESTOptions) *REST {
ReturnDeletedObject: true, ReturnDeletedObject: true,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}

View File

@ -55,6 +55,7 @@ func validChangedStorageClass() *storageapi.StorageClass {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
storageClass := validNewStorageClass("foo") storageClass := validNewStorageClass("foo")
storageClass.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} storageClass.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
@ -71,6 +72,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -94,6 +96,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject() test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject()
test.TestDelete(validNewStorageClass("foo")) test.TestDelete(validNewStorageClass("foo"))
} }
@ -101,6 +104,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestGet(validNewStorageClass("foo")) test.TestGet(validNewStorageClass("foo"))
} }
@ -108,6 +112,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestList(validNewStorageClass("foo")) test.TestList(validNewStorageClass("foo"))
} }
@ -115,6 +120,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope() test := registrytest.New(t, storage.Store).ClusterScope()
test.TestWatch( test.TestWatch(
validNewStorageClass("foo"), validNewStorageClass("foo"),

View File

@ -35,7 +35,7 @@ func NewREST(opts generic.RESTOptions) *REST {
prefix := "/" + opts.ResourcePrefix prefix := "/" + opts.ResourcePrefix
// We explicitly do NOT do any decoration here yet. // We explicitly do NOT do any decoration here yet.
storageInterface, _ := generic.NewRawStorage(opts.StorageConfig) storageInterface, dFunc := generic.NewRawStorage(opts.StorageConfig)
store := &registry.Store{ store := &registry.Store{
NewFunc: func() runtime.Object { return &extensions.ThirdPartyResource{} }, NewFunc: func() runtime.Object { return &extensions.ThirdPartyResource{} },
@ -57,6 +57,7 @@ func NewREST(opts generic.RESTOptions) *REST {
DeleteStrategy: thirdpartyresource.Strategy, DeleteStrategy: thirdpartyresource.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{store} return &REST{store}

View File

@ -58,6 +58,7 @@ func namer(i int) string {
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer).GeneratesName() test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer).GeneratesName()
rsrc := validNewThirdPartyResource("kind.domain.tld") rsrc := validNewThirdPartyResource("kind.domain.tld")
test.TestCreate( test.TestCreate(
@ -75,6 +76,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer) test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -91,6 +93,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer) test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer)
test.TestDelete(validNewThirdPartyResource("kind.domain.tld")) test.TestDelete(validNewThirdPartyResource("kind.domain.tld"))
} }
@ -98,6 +101,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer) test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer)
test.TestGet(validNewThirdPartyResource("kind.domain.tld")) test.TestGet(validNewThirdPartyResource("kind.domain.tld"))
} }
@ -105,6 +109,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer) test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer)
test.TestList(validNewThirdPartyResource("kind.domain.tld")) test.TestList(validNewThirdPartyResource("kind.domain.tld"))
} }
@ -112,6 +117,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer) test := registrytest.New(t, storage.Store).ClusterScope().Namer(namer)
test.TestWatch( test.TestWatch(
validNewThirdPartyResource("kind.domain.tld"), validNewThirdPartyResource("kind.domain.tld"),

View File

@ -38,7 +38,7 @@ func NewREST(opts generic.RESTOptions, group, kind string) *REST {
prefix := "/ThirdPartyResourceData/" + group + "/" + strings.ToLower(kind) + "s" prefix := "/ThirdPartyResourceData/" + group + "/" + strings.ToLower(kind) + "s"
// We explicitly do NOT do any decoration here yet. // We explicitly do NOT do any decoration here yet.
storageInterface, _ := generic.NewRawStorage(opts.StorageConfig) storageInterface, dFunc := generic.NewRawStorage(opts.StorageConfig)
store := &registry.Store{ store := &registry.Store{
NewFunc: func() runtime.Object { return &extensions.ThirdPartyResourceData{} }, NewFunc: func() runtime.Object { return &extensions.ThirdPartyResourceData{} },
@ -60,6 +60,7 @@ func NewREST(opts generic.RESTOptions, group, kind string) *REST {
DeleteStrategy: thirdpartyresourcedata.Strategy, DeleteStrategy: thirdpartyresourcedata.Strategy,
Storage: storageInterface, Storage: storageInterface,
DestroyFunc: dFunc,
} }
return &REST{ return &REST{

View File

@ -50,6 +50,7 @@ func validNewThirdPartyResourceData(name string) *extensions.ThirdPartyResourceD
func TestCreate(t *testing.T) { func TestCreate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
rsrc := validNewThirdPartyResourceData("foo") rsrc := validNewThirdPartyResourceData("foo")
rsrc.ObjectMeta = api.ObjectMeta{} rsrc.ObjectMeta = api.ObjectMeta{}
@ -64,6 +65,7 @@ func TestCreate(t *testing.T) {
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestUpdate( test.TestUpdate(
// valid // valid
@ -80,6 +82,7 @@ func TestUpdate(t *testing.T) {
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestDelete(validNewThirdPartyResourceData("foo")) test.TestDelete(validNewThirdPartyResourceData("foo"))
} }
@ -87,6 +90,7 @@ func TestDelete(t *testing.T) {
func TestGet(t *testing.T) { func TestGet(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestGet(validNewThirdPartyResourceData("foo")) test.TestGet(validNewThirdPartyResourceData("foo"))
} }
@ -94,6 +98,7 @@ func TestGet(t *testing.T) {
func TestList(t *testing.T) { func TestList(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestList(validNewThirdPartyResourceData("foo")) test.TestList(validNewThirdPartyResourceData("foo"))
} }
@ -101,6 +106,7 @@ func TestList(t *testing.T) {
func TestWatch(t *testing.T) { func TestWatch(t *testing.T) {
storage, server := newStorage(t) storage, server := newStorage(t)
defer server.Terminate(t) defer server.Terminate(t)
defer storage.Store.DestroyFunc()
test := registrytest.New(t, storage.Store) test := registrytest.New(t, storage.Store)
test.TestWatch( test.TestWatch(
validNewThirdPartyResourceData("foo"), validNewThirdPartyResourceData("foo"),

View File

@ -27,12 +27,16 @@ import (
"testing" "testing"
"time" "time"
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
"k8s.io/kubernetes/pkg/storage/etcd/testing/testingcert" "k8s.io/kubernetes/pkg/storage/etcd/testing/testingcert"
"k8s.io/kubernetes/pkg/storage/storagebackend"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
etcd "github.com/coreos/etcd/client" etcd "github.com/coreos/etcd/client"
"github.com/coreos/etcd/clientv3"
"github.com/coreos/etcd/etcdserver" "github.com/coreos/etcd/etcdserver"
"github.com/coreos/etcd/etcdserver/api/v2http" "github.com/coreos/etcd/etcdserver/api/v2http"
"github.com/coreos/etcd/integration"
"github.com/coreos/etcd/pkg/testutil" "github.com/coreos/etcd/pkg/testutil"
"github.com/coreos/etcd/pkg/transport" "github.com/coreos/etcd/pkg/transport"
"github.com/coreos/etcd/pkg/types" "github.com/coreos/etcd/pkg/types"
@ -42,6 +46,8 @@ import (
// EtcdTestServer encapsulates the datastructures needed to start local instance for testing // EtcdTestServer encapsulates the datastructures needed to start local instance for testing
type EtcdTestServer struct { type EtcdTestServer struct {
// The following are lumped etcd2 test server params
// TODO: Deprecate in a post 1.5 release
etcdserver.ServerConfig etcdserver.ServerConfig
PeerListeners, ClientListeners []net.Listener PeerListeners, ClientListeners []net.Listener
Client etcd.Client Client etcd.Client
@ -54,6 +60,10 @@ type EtcdTestServer struct {
raftHandler http.Handler raftHandler http.Handler
s *etcdserver.EtcdServer s *etcdserver.EtcdServer
hss []*httptest.Server hss []*httptest.Server
// The following are lumped etcd3 test server params
v3Cluster *integration.ClusterV3
v3Client *clientv3.Client
} }
// newLocalListener opens a port localhost using any port // newLocalListener opens a port localhost using any port
@ -219,6 +229,9 @@ func (m *EtcdTestServer) waitUntilUp() error {
// Terminate will shutdown the running etcd server // Terminate will shutdown the running etcd server
func (m *EtcdTestServer) Terminate(t *testing.T) { func (m *EtcdTestServer) Terminate(t *testing.T) {
if m.v3Cluster != nil {
m.v3Cluster.Terminate(t)
} else {
m.Client = nil m.Client = nil
m.s.Stop() m.s.Stop()
// TODO: This is a pretty ugly hack to workaround races during closing // TODO: This is a pretty ugly hack to workaround races during closing
@ -241,8 +254,9 @@ func (m *EtcdTestServer) Terminate(t *testing.T) {
} }
} }
} }
}
// NewEtcdTestClientServer creates a new client and server for testing // NewEtcdTestClientServer DEPRECATED creates a new client and server for testing
func NewEtcdTestClientServer(t *testing.T) *EtcdTestServer { func NewEtcdTestClientServer(t *testing.T) *EtcdTestServer {
server := configureTestCluster(t, "foo", true) server := configureTestCluster(t, "foo", true)
err := server.launch(t) err := server.launch(t)
@ -269,7 +283,7 @@ func NewEtcdTestClientServer(t *testing.T) *EtcdTestServer {
return server return server
} }
// NewUnsecuredEtcdTestClientServer creates a new client and server for testing // NewUnsecuredEtcdTestClientServer DEPRECATED creates a new client and server for testing
func NewUnsecuredEtcdTestClientServer(t *testing.T) *EtcdTestServer { func NewUnsecuredEtcdTestClientServer(t *testing.T) *EtcdTestServer {
server := configureTestCluster(t, "foo", false) server := configureTestCluster(t, "foo", false)
err := server.launch(t) err := server.launch(t)
@ -294,3 +308,18 @@ func NewUnsecuredEtcdTestClientServer(t *testing.T) *EtcdTestServer {
} }
return server return server
} }
// NewEtcd3TestClientServer creates a new client and server for testing
func NewUnsecuredEtcd3TestClientServer(t *testing.T) (*EtcdTestServer, *storagebackend.Config) {
server := &EtcdTestServer{
v3Cluster: integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}),
}
server.v3Client = server.v3Cluster.RandClient()
config := &storagebackend.Config{
Type: "etcd3",
Prefix: etcdtest.PathPrefix(),
ServerList: server.v3Client.Endpoints(),
DeserializationCacheSize: etcdtest.DeserializationCacheSize,
}
return server, config
}

View File

@ -36,7 +36,11 @@ func newETCD3Storage(c storagebackend.Config) (storage.Interface, DestroyFunc, e
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
// NOTE: Client relies on nil tlsConfig
// for non-secure connections, update the implicit variable
if len(c.CertFile) == 0 && len(c.KeyFile) == 0 && len(c.CAFile) == 0 {
tlsConfig = nil
}
cfg := clientv3.Config{ cfg := clientv3.Config{
Endpoints: c.ServerList, Endpoints: c.ServerList,
TLS: tlsConfig, TLS: tlsConfig,