mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Serialization test should verify encode does not mutate in
This commit is contained in:
		@@ -20,6 +20,7 @@ import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"encoding/hex"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"math/rand"
 | 
			
		||||
	"reflect"
 | 
			
		||||
@@ -78,6 +79,13 @@ func dataAsString(data []byte) string {
 | 
			
		||||
func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
 | 
			
		||||
	printer := spew.ConfigState{DisableMethods: true}
 | 
			
		||||
 | 
			
		||||
	original := item
 | 
			
		||||
	copied, err := api.Scheme.DeepCopy(item)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(fmt.Sprintf("unable to copy: %v", err))
 | 
			
		||||
	}
 | 
			
		||||
	item = copied.(runtime.Object)
 | 
			
		||||
 | 
			
		||||
	name := reflect.TypeOf(item).Elem().Name()
 | 
			
		||||
	data, err := runtime.Encode(codec, item)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -85,13 +93,18 @@ func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !api.Semantic.DeepEqual(original, item) {
 | 
			
		||||
		t.Errorf("0: %v: encode altered the object, diff: %v", name, diff.ObjectReflectDiff(original, item))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	obj2, err := runtime.Decode(codec, data)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Errorf("0: %v: %v\nCodec: %v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", item))
 | 
			
		||||
		t.Errorf("0: %v: %v\nCodec: %#v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", item))
 | 
			
		||||
		panic("failed")
 | 
			
		||||
	}
 | 
			
		||||
	if !api.Semantic.DeepEqual(item, obj2) {
 | 
			
		||||
		t.Errorf("\n1: %v: diff: %v\nCodec: %v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectGoPrintDiff(item, obj2), codec, printer.Sprintf("%#v", item), dataAsString(data), printer.Sprintf("%#v", obj2))
 | 
			
		||||
	if !api.Semantic.DeepEqual(original, obj2) {
 | 
			
		||||
		t.Errorf("\n1: %v: diff: %v\nCodec: %#v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectReflectDiff(item, obj2), codec, printer.Sprintf("%#v", item), dataAsString(data), printer.Sprintf("%#v", obj2))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -101,7 +114,7 @@ func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	if !api.Semantic.DeepEqual(item, obj3) {
 | 
			
		||||
		t.Errorf("3: %v: diff: %v\nCodec: %v", name, diff.ObjectDiff(item, obj3), codec)
 | 
			
		||||
		t.Errorf("3: %v: diff: %v\nCodec: %#v", name, diff.ObjectReflectDiff(item, obj3), codec)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -204,8 +204,8 @@ func TestResourceListConversion(t *testing.T) {
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	output := api.ResourceList{}
 | 
			
		||||
	for i, test := range tests {
 | 
			
		||||
		output := api.ResourceList{}
 | 
			
		||||
		err := api.Scheme.Convert(&test.input, &output)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			t.Fatalf("unexpected error for case %d: %v", i, err)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user