From d66b3edd65efba0760eb0a5668aac733f294903b Mon Sep 17 00:00:00 2001 From: jlsong01 Date: Mon, 31 Jan 2022 15:23:42 +0800 Subject: [PATCH] allocate a unique scheme for each test to fix concurrent usage issue --- .../garbagecollector/garbagecollector_test.go | 2 +- .../deletion/namespaced_resources_deleter_test.go | 3 +-- staging/src/k8s.io/client-go/metadata/fake/simple.go | 5 +++++ .../src/k8s.io/client-go/metadata/fake/simple_test.go | 11 ++++------- .../metadata/metadatainformer/informer_test.go | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/pkg/controller/garbagecollector/garbagecollector_test.go b/pkg/controller/garbagecollector/garbagecollector_test.go index 5df9fef8f0e..5109148b514 100644 --- a/pkg/controller/garbagecollector/garbagecollector_test.go +++ b/pkg/controller/garbagecollector/garbagecollector_test.go @@ -2243,7 +2243,7 @@ func TestConflictingData(t *testing.T) { eventRecorder := record.NewFakeRecorder(100) eventRecorder.IncludeObject = true - metadataClient := fakemetadata.NewSimpleMetadataClient(legacyscheme.Scheme) + metadataClient := fakemetadata.NewSimpleMetadataClient(fakemetadata.NewTestScheme()) tweakableRM := meta.NewDefaultRESTMapper(nil) tweakableRM.AddSpecific( diff --git a/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go b/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go index 5bb8b94c718..c38e329aa9b 100644 --- a/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go +++ b/pkg/controller/namespace/deletion/namespaced_resources_deleter_test.go @@ -34,7 +34,6 @@ import ( "k8s.io/client-go/discovery" "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes/fake" - scheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/metadata" metadatafake "k8s.io/client-go/metadata/fake" restclient "k8s.io/client-go/rest" @@ -420,7 +419,7 @@ func TestDeleteEncounters404(t *testing.T) { } return false, nil, nil } - mockMetadataClient := metadatafake.NewSimpleMetadataClient(scheme.Scheme) + mockMetadataClient := metadatafake.NewSimpleMetadataClient(metadatafake.NewTestScheme()) mockMetadataClient.PrependReactor("delete-collection", "flakes", ns1FlakesNotFound) mockMetadataClient.PrependReactor("list", "flakes", ns1FlakesNotFound) diff --git a/staging/src/k8s.io/client-go/metadata/fake/simple.go b/staging/src/k8s.io/client-go/metadata/fake/simple.go index ca771237422..5b585f3fd60 100644 --- a/staging/src/k8s.io/client-go/metadata/fake/simple.go +++ b/staging/src/k8s.io/client-go/metadata/fake/simple.go @@ -41,6 +41,11 @@ type MetadataClient interface { UpdateFake(obj *metav1.PartialObjectMetadata, opts metav1.UpdateOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) } +// NewTestScheme creates a unique Scheme for each test. +func NewTestScheme() *runtime.Scheme { + return runtime.NewScheme() +} + // NewSimpleMetadataClient creates a new client that will use the provided scheme and respond with the // provided objects when requests are made. It will track actions made to the client which can be checked // with GetActions(). diff --git a/staging/src/k8s.io/client-go/metadata/fake/simple_test.go b/staging/src/k8s.io/client-go/metadata/fake/simple_test.go index e6fdde3ebc4..219be4e7ea4 100644 --- a/staging/src/k8s.io/client-go/metadata/fake/simple_test.go +++ b/staging/src/k8s.io/client-go/metadata/fake/simple_test.go @@ -39,13 +39,6 @@ const ( testAPIVersion = "testgroup/testversion" ) -var scheme *runtime.Scheme - -func init() { - scheme = runtime.NewScheme() - metav1.AddMetaToScheme(scheme) -} - func newPartialObjectMetadata(apiVersion, kind, namespace, name string) *metav1.PartialObjectMetadata { return &metav1.PartialObjectMetadata{ TypeMeta: metav1.TypeMeta{ @@ -66,6 +59,8 @@ func newPartialObjectMetadataWithAnnotations(annotations map[string]string) *met } func TestList(t *testing.T) { + scheme := NewTestScheme() + metav1.AddMetaToScheme(scheme) client := NewSimpleMetadataClient(scheme, newPartialObjectMetadata("group/version", "TheKind", "ns-foo", "name-foo"), newPartialObjectMetadata("group2/version", "TheKind", "ns-foo", "name2-foo"), @@ -98,6 +93,8 @@ type patchTestCase struct { } func (tc *patchTestCase) runner(t *testing.T) { + scheme := NewTestScheme() + metav1.AddMetaToScheme(scheme) client := NewSimpleMetadataClient(scheme, tc.object) resourceInterface := client.Resource(schema.GroupVersionResource{Group: testGroup, Version: testVersion, Resource: testResource}).Namespace(testNamespace) diff --git a/staging/src/k8s.io/client-go/metadata/metadatainformer/informer_test.go b/staging/src/k8s.io/client-go/metadata/metadatainformer/informer_test.go index e268202e2f3..2c7b9ab420a 100644 --- a/staging/src/k8s.io/client-go/metadata/metadatainformer/informer_test.go +++ b/staging/src/k8s.io/client-go/metadata/metadatainformer/informer_test.go @@ -125,7 +125,7 @@ func TestMetadataSharedInformerFactory(t *testing.T) { timeout := time.Duration(3 * time.Second) ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - scheme := runtime.NewScheme() + scheme := fake.NewTestScheme() metav1.AddMetaToScheme(scheme) informerReciveObjectCh := make(chan *metav1.PartialObjectMetadata, 1) objs := []runtime.Object{}