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  }