@@ -17,13 +17,10 @@ limitations under the License.
17
17
package testing
18
18
19
19
import (
20
- "encoding/json"
21
20
"fmt"
22
21
"math/rand"
23
- "os"
24
- "path/filepath"
22
+ "sigs.k8s.io/structured-merge-diff/v4/typed"
25
23
"strconv"
26
- "strings"
27
24
"sync"
28
25
"testing"
29
26
@@ -40,7 +37,6 @@ import (
40
37
"k8s.io/apimachinery/pkg/types"
41
38
"k8s.io/apimachinery/pkg/util/managedfields"
42
39
"k8s.io/apimachinery/pkg/watch"
43
- "k8s.io/kube-openapi/pkg/validation/spec"
44
40
"k8s.io/utils/ptr"
45
41
)
46
42
@@ -289,7 +285,7 @@ func TestApplyCreate(t *testing.T) {
289
285
scheme := runtime .NewScheme ()
290
286
scheme .AddKnownTypes (cmResource .GroupVersion (), & v1.ConfigMap {})
291
287
codecs := serializer .NewCodecFactory (scheme )
292
- o := NewFieldManagedObjectTracker (scheme , codecs .UniversalDecoder (), fakeTypeConverter )
288
+ o := NewFieldManagedObjectTracker (scheme , codecs .UniversalDecoder (), configMapTypeConverter ( scheme ) )
293
289
294
290
reaction := ObjectReaction (o )
295
291
patch := []byte (`{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "cm-1"}, "data": {"k": "v"}}` )
@@ -309,7 +305,7 @@ func TestApplyUpdateMultipleFieldManagers(t *testing.T) {
309
305
scheme := runtime .NewScheme ()
310
306
scheme .AddKnownTypes (cmResource .GroupVersion (), & v1.ConfigMap {})
311
307
codecs := serializer .NewCodecFactory (scheme )
312
- o := NewFieldManagedObjectTracker (scheme , codecs .UniversalDecoder (), fakeTypeConverter )
308
+ o := NewFieldManagedObjectTracker (scheme , codecs .UniversalDecoder (), configMapTypeConverter ( scheme ) )
313
309
314
310
reaction := ObjectReaction (o )
315
311
action := NewCreateAction (cmResource , "default" , & v1.ConfigMap {
@@ -549,24 +545,98 @@ func Test_resourceCovers(t *testing.T) {
549
545
}
550
546
}
551
547
552
- var fakeTypeConverter = func () managedfields.TypeConverter {
553
- data , err := os .ReadFile (filepath .Join (strings .Repeat (".." + string (filepath .Separator ), 5 ),
554
- "api" , "openapi-spec" , "swagger.json" ))
548
+ func configMapTypeConverter (scheme * runtime.Scheme ) managedfields.TypeConverter {
549
+ parser , err := typed .NewParser (configMapTypedSchema )
555
550
if err != nil {
556
- panic (err )
551
+ panic (fmt . Sprintf ( "Failed to parse schema: %v" , err ) )
557
552
}
558
- swag := spec.Swagger {}
559
- if err := json .Unmarshal (data , & swag ); err != nil {
560
- panic (err )
561
- }
562
- convertedDefs := map [string ]* spec.Schema {}
563
- for k , v := range swag .Definitions {
564
- vCopy := v
565
- convertedDefs [k ] = & vCopy
566
- }
567
- typeConverter , err := managedfields .NewTypeConverter (convertedDefs , false )
568
- if err != nil {
569
- panic (err )
570
- }
571
- return typeConverter
572
- }()
553
+
554
+ return TypeConverter {Scheme : scheme , TypeResolver : parser }
555
+ }
556
+
557
+ var configMapTypedSchema = typed .YAMLObject (`types:
558
+ - name: io.k8s.api.core.v1.ConfigMap
559
+ map:
560
+ fields:
561
+ - name: apiVersion
562
+ type:
563
+ scalar: string
564
+ - name: data
565
+ type:
566
+ map:
567
+ elementType:
568
+ scalar: string
569
+ - name: kind
570
+ type:
571
+ scalar: string
572
+ - name: metadata
573
+ type:
574
+ namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
575
+ default: {}
576
+ - name: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
577
+ map:
578
+ fields:
579
+ - name: creationTimestamp
580
+ type:
581
+ namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
582
+ - name: managedFields
583
+ type:
584
+ list:
585
+ elementType:
586
+ namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
587
+ elementRelationship: atomic
588
+ - name: name
589
+ type:
590
+ scalar: string
591
+ - name: namespace
592
+ type:
593
+ scalar: string
594
+ - name: io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry
595
+ map:
596
+ fields:
597
+ - name: apiVersion
598
+ type:
599
+ scalar: string
600
+ - name: fieldsType
601
+ type:
602
+ scalar: string
603
+ - name: fieldsV1
604
+ type:
605
+ namedType: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
606
+ - name: manager
607
+ type:
608
+ scalar: string
609
+ - name: operation
610
+ type:
611
+ scalar: string
612
+ - name: subresource
613
+ type:
614
+ scalar: string
615
+ - name: time
616
+ type:
617
+ namedType: io.k8s.apimachinery.pkg.apis.meta.v1.Time
618
+ - name: io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1
619
+ map:
620
+ elementType:
621
+ scalar: untyped
622
+ list:
623
+ elementType:
624
+ namedType: __untyped_atomic_
625
+ elementRelationship: atomic
626
+ map:
627
+ elementType:
628
+ namedType: __untyped_deduced_
629
+ elementRelationship: separable
630
+ - name: io.k8s.apimachinery.pkg.apis.meta.v1.Time
631
+ scalar: untyped
632
+ - name: __untyped_deduced_
633
+ scalar: untyped
634
+ list:
635
+ elementType:
636
+ namedType: __untyped_atomic_
637
+ elementRelationship: atomic
638
+ map:
639
+ elementType:
640
+ namedType: __untyped_deduced_
641
+ elementRelationship: separable
642
+ ` )
0 commit comments