...

Package roundtrip

import "kubevirt.io/api/apitesting/roundtrip"
Overview
Index

Overview ▾

func CompatibilityTestObject

func CompatibilityTestObject(scheme *runtime.Scheme, gvk schema.GroupVersionKind, fillFuncs map[reflect.Type]FillFunc) (runtime.Object, error)

CompatibilityTestObject returns a deterministically filled object for the specified GVK

type CompatibilityTestOptions

CompatibilityTestOptions holds configuration for running a compatibility test using in-memory objects and serialized files on disk representing the current code and serialized data from previous versions.

Example use: `NewCompatibilityTestOptions(scheme).Complete(t).Run(t)`

type CompatibilityTestOptions struct {
    // Scheme is used to create new objects for filling, decoding, and for constructing serializers.
    // Required.
    Scheme *runtime.Scheme

    // TestDataDir points to a directory containing compatibility test data.
    // Complete() populates this with "testdata" if unset.
    TestDataDir string

    // TestDataDirCurrentVersion points to a directory containing compatibility test data for the current version.
    // Complete() populates this with "<TestDataDir>/HEAD" if unset.
    // Within this directory, `<group>.<version>.<kind>.[json|yaml|pb]` files are required to exist, and are:
    // * verified to match serialized FilledObjects[GVK]
    // * verified to decode without error
    // * verified to round-trip byte-for-byte when re-encoded
    // * verified to be semantically equal when decoded into memory
    TestDataDirCurrentVersion string

    // TestDataDirsPreviousVersions is a list of directories containing compatibility test data for previous versions.
    // Complete() populates this with "<TestDataDir>/v*" directories if nil.
    // Within these directories, `<group>.<version>.<kind>.[json|yaml|pb]` files are optional. If present, they are:
    // * verified to decode without error
    // * verified to round-trip byte-for-byte when re-encoded (or to match a `<group>.<version>.<kind>.[json|yaml|pb].after_roundtrip.[json|yaml|pb]` file if it exists)
    // * verified to be semantically equal when decoded into memory
    TestDataDirsPreviousVersions []string

    // Kinds is a list of fully qualified kinds to test.
    // Complete() populates this with Scheme.AllKnownTypes() if unset.
    Kinds []schema.GroupVersionKind

    // FilledObjects is an optional set of pre-filled objects to use for verifying HEAD fixtures.
    // Complete() populates this with the result of CompatibilityTestObject(Kinds[*], Scheme, FillFuncs) for any missing kinds.
    // Objects must deterministically populate every field and be identical on every invocation.
    FilledObjects map[schema.GroupVersionKind]runtime.Object

    // FillFuncs is an optional map of custom functions to use to fill instances of particular types.
    FillFuncs map[reflect.Type]FillFunc

    JSON runtime.Serializer
    YAML runtime.Serializer
}

func NewCompatibilityTestOptions

func NewCompatibilityTestOptions(scheme *runtime.Scheme) *CompatibilityTestOptions

func (*CompatibilityTestOptions) Complete

func (c *CompatibilityTestOptions) Complete(t *testing.T) *CompatibilityTestOptions

func (*CompatibilityTestOptions) Run

func (c *CompatibilityTestOptions) Run(t *testing.T)

type Data

type Data struct {
    Base64Data string `json:"data"`
}

type FillFunc

FillFunc is a function that populates all serializable fields in obj. s and i are string and integer values relevant to the object being populated (for example, the json key containing the object) that can be used when filling the object to make the object content identifiable

type FillFunc func(s string, i int, obj interface{})