"Conversion error: %s. (in: %v(%+v) out: %v)", c.Message, reflect.TypeOf(c.In), c.In, reflect.TypeOf(c.Out), ) } // Semantic can do semantic deep equality checks for api objects. // Example: api.Semantic.DeepEqual(aPod, aPodWithNonNilButEmptyMaps) == true var Semantic = conversion.EqualitiesOrDie( func(a, b resource.Quantity) bool { // Ignore formatting, only care that numeric value stayed the same. // TODO: if we decide it's important, it should be safe to start comparing the format. // // Uninitialized quantities are equivalent to 0 quantities. return a.Cmp(b) == 0 }, func(a, b metav1.Time) bool { return a.UTC() == b.UTC() }, func(a, b labels.Selector) bool { return a.String() == b.String() }, func(a, b fields.Selector) bool { return a.String() == b.String() }, ) var standardResourceQuotaScopes = sets.NewString( string(ResourceQuotaScopeTerminating), string(ResourceQuotaScopeNotTerminating), string(ResourceQuotaScopeBestEffort), string(ResourceQuotaScopeNotBestEffort), )
s.AddKnownTypeWithName(externalGV.WithKind("TestType2"), &ExternalTestType2{}) s.AddKnownTypeWithName(internalGV.WithKind("TestType3"), &TestType1{}) s.AddKnownTypeWithName(externalGV.WithKind("TestType3"), &ExternalTestType1{}) s.AddKnownTypeWithName(externalGV2.WithKind("TestType1"), &ExternalTestType1{}) s.AddUnversionedTypes(externalGV, &metav1.Status{}) cf := newCodecFactory(s, newSerializersForScheme(s, testMetaFactory{})) codec := cf.LegacyCodec(schema.GroupVersion{Version: "v1"}) return s, codec } var semantic = conversion.EqualitiesOrDie( func(a, b MyWeirdCustomEmbeddedVersionKindField) bool { a.APIVersion, a.ObjectKind = "", "" b.APIVersion, b.ObjectKind = "", "" return a == b }, ) func runTest(t *testing.T, source interface{}) { name := reflect.TypeOf(source).Elem().Name() TestObjectFuzzer.Fuzz(source) _, codec := GetTestScheme() data, err := runtime.Encode(codec, source.(runtime.Object)) if err != nil { t.Errorf("%v: %v (%#v)", name, err, source) return } obj2, err := runtime.Decode(codec, data)