Merge pull request #107876 from jlsong01/fix-concurrent-scheme-usage

Fix concurrent usage issue of the same scheme
This commit is contained in:
Kubernetes Prow Robot 2022-02-02 09:20:21 -08:00 committed by GitHub
commit cf9b5ab95a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 12 additions and 11 deletions

View File

@ -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(

View File

@ -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)

View File

@ -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().

View File

@ -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)

View File

@ -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{}