agones.dev/agones@v1.53.0/pkg/apis/agones/v1/fuzz_test/roundtrip_test.go (about) 1 package install 2 3 import ( 4 "math/rand" 5 "testing" 6 7 agonesv1 "agones.dev/agones/pkg/apis/agones/v1" 8 allocationv1 "agones.dev/agones/pkg/apis/allocation/v1" 9 autoscalingv1 "agones.dev/agones/pkg/apis/autoscaling/v1" 10 multiclusterv1 "agones.dev/agones/pkg/apis/multicluster/v1" 11 "github.com/stretchr/testify/assert" 12 "k8s.io/apimachinery/pkg/api/apitesting/fuzzer" 13 "k8s.io/apimachinery/pkg/api/apitesting/roundtrip" 14 genericfuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer" 15 "k8s.io/apimachinery/pkg/runtime" 16 "k8s.io/apimachinery/pkg/runtime/serializer" 17 "k8s.io/apimachinery/pkg/util/sets" 18 ) 19 20 func TestRoundTripTypes(t *testing.T) { 21 scheme := runtime.NewScheme() 22 codecs := serializer.NewCodecFactory(scheme) 23 24 localSchemeBuilder := runtime.SchemeBuilder{ 25 agonesv1.AddToScheme, 26 allocationv1.AddToScheme, 27 autoscalingv1.AddToScheme, 28 multiclusterv1.AddToScheme, 29 } 30 seed := rand.Int63() 31 localFuzzer := fuzzer.FuzzerFor(genericfuzzer.Funcs, rand.NewSource(seed), codecs) 32 assert.NoError(t, localSchemeBuilder.AddToScheme(scheme)) 33 34 var globalNonRoundTrippableTypes = sets.NewString( 35 "ExportOptions", 36 "GetOptions", 37 "WatchEvent", 38 "ListOptions", 39 "DeleteOptions", 40 ) 41 kinds := scheme.AllKnownTypes() 42 for gvk := range kinds { 43 if gvk.Version == runtime.APIVersionInternal || globalNonRoundTrippableTypes.Has(gvk.Kind) { 44 continue 45 } 46 t.Run(gvk.Group+"."+gvk.Version+"."+gvk.Kind, func(t *testing.T) { 47 roundtrip.RoundTripSpecificKindWithoutProtobuf(t, gvk, scheme, codecs, localFuzzer, nil) 48 }) 49 } 50 }