Skip to content

Commit

Permalink
Merge pull request kubernetes#125706 from jpbetz/fix-fixture-test
Browse files Browse the repository at this point in the history
Remove test dependency on swagger.json to fix client-go tests
  • Loading branch information
k8s-ci-robot committed Jun 26, 2024
2 parents fb0195d + 1095af8 commit 10e3ec8
Showing 1 changed file with 96 additions and 26 deletions.
122 changes: 96 additions & 26 deletions staging/src/k8s.io/client-go/testing/fixture_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,10 @@ limitations under the License.
package testing

import (
"encoding/json"
"fmt"
"math/rand"
"os"
"path/filepath"
"sigs.k8s.io/structured-merge-diff/v4/typed"
"strconv"
"strings"
"sync"
"testing"

Expand All @@ -40,7 +37,6 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/managedfields"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/kube-openapi/pkg/validation/spec"
"k8s.io/utils/ptr"
)

Expand Down Expand Up @@ -289,7 +285,7 @@ func TestApplyCreate(t *testing.T) {
scheme := runtime.NewScheme()
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
codecs := serializer.NewCodecFactory(scheme)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))

reaction := ObjectReaction(o)
patch := []byte(`{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "cm-1"}, "data": {"k": "v"}}`)
Expand All @@ -309,7 +305,7 @@ func TestApplyUpdateMultipleFieldManagers(t *testing.T) {
scheme := runtime.NewScheme()
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
codecs := serializer.NewCodecFactory(scheme)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), fakeTypeConverter)
o := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))

reaction := ObjectReaction(o)
action := NewCreateAction(cmResource, "default", &v1.ConfigMap{
Expand Down Expand Up @@ -549,24 +545,98 @@ func Test_resourceCovers(t *testing.T) {
}
}

var fakeTypeConverter = func() managedfields.TypeConverter {
data, err := os.ReadFile(filepath.Join(strings.Repeat(".."+string(filepath.Separator), 5),
"api", "openapi-spec", "swagger.json"))
func configMapTypeConverter(scheme *runtime.Scheme) managedfields.TypeConverter {
parser, err := typed.NewParser(configMapTypedSchema)
if err != nil {
panic(err)
panic(fmt.Sprintf("Failed to parse schema: %v", err))
}
swag := spec.Swagger{}
if err := json.Unmarshal(data, &swag); err != nil {
panic(err)
}
convertedDefs := map[string]*spec.Schema{}
for k, v := range swag.Definitions {
vCopy := v
convertedDefs[k] = &vCopy
}
typeConverter, err := managedfields.NewTypeConverter(convertedDefs, false)
if err != nil {
panic(err)
}
return typeConverter
}()

return TypeConverter{Scheme: scheme, TypeResolver: parser}
}

var configMapTypedSchema = typed.YAMLObject(`types:
- name: io.k8s.api.core.v1.ConfigMap
map:
fields:
- name: apiVersion
type:
scalar: string
- name: data
type:
map:
elementType:
scalar: string
- name: kind
type:
scalar: string
- name: metadata
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
default: {}
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
map:
fields:
- name: creationTimestamp
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
- name: managedFields
type:
list:
elementType:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
elementRelationship: atomic
- name: name
type:
scalar: string
- name: namespace
type:
scalar: string
- name: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
map:
fields:
- name: apiVersion
type:
scalar: string
- name: fieldsType
type:
scalar: string
- name: fieldsV1
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
- name: manager
type:
scalar: string
- name: operation
type:
scalar: string
- name: subresource
type:
scalar: string
- name: time
type:
namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
- name: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
map:
elementType:
scalar: untyped
list:
elementType:
namedType: __untyped_atomic_
elementRelationship: atomic
map:
elementType:
namedType: __untyped_deduced_
elementRelationship: separable
- name: io.k8s.apimachinery.pkg.apis.meta.v1.Time
scalar: untyped
- name: __untyped_deduced_
scalar: untyped
list:
elementType:
namedType: __untyped_atomic_
elementRelationship: atomic
map:
elementType:
namedType: __untyped_deduced_
elementRelationship: separable
`)

0 comments on commit 10e3ec8

Please sign in to comment.