diff --git a/pkg/api/conversion_test.go b/pkg/api/conversion_test.go index 827022270ed..2a91f0aec5e 100644 --- a/pkg/api/conversion_test.go +++ b/pkg/api/conversion_test.go @@ -18,14 +18,23 @@ package api_test import ( "io/ioutil" + "math/rand" "testing" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/testapi" + apitesting "k8s.io/kubernetes/pkg/api/testing" "k8s.io/kubernetes/pkg/runtime" ) func BenchmarkPodConversion(b *testing.B) { + apiObjectFuzzer := apitesting.FuzzerFor(nil, api.SchemeGroupVersion, rand.NewSource(benchmarkSeed)) + items := make([]api.Pod, 4) + for i := range items { + apiObjectFuzzer.Fuzz(&items[i]) + } + + // add a fixed item data, err := ioutil.ReadFile("pod_example.json") if err != nil { b.Fatalf("Unexpected error while reading file: %v", err) @@ -34,11 +43,14 @@ func BenchmarkPodConversion(b *testing.B) { if err := runtime.DecodeInto(testapi.Default.Codec(), data, &pod); err != nil { b.Fatalf("Unexpected error decoding pod: %v", err) } + items = append(items, pod) + width := len(items) scheme := api.Scheme var result *api.Pod for i := 0; i < b.N; i++ { - versionedObj, err := scheme.ConvertToVersion(&pod, testapi.Default.GroupVersion().String()) + pod := &items[i%width] + versionedObj, err := scheme.ConvertToVersion(pod, testapi.Default.GroupVersion().String()) if err != nil { b.Fatalf("Conversion error: %v", err) } @@ -48,9 +60,7 @@ func BenchmarkPodConversion(b *testing.B) { } result = obj.(*api.Pod) } - if !api.Semantic.DeepDerivative(pod, *result) { - b.Fatalf("Incorrect conversion: expected %v, got %v", pod, *result) - } + b.Log(result) } func BenchmarkNodeConversion(b *testing.B) { diff --git a/pkg/api/serialization_test.go b/pkg/api/serialization_test.go index 97049672a85..676a0ea62f9 100644 --- a/pkg/api/serialization_test.go +++ b/pkg/api/serialization_test.go @@ -275,7 +275,13 @@ func benchmarkItems() []v1.Pod { apiObjectFuzzer := apitesting.FuzzerFor(nil, api.SchemeGroupVersion, rand.NewSource(benchmarkSeed)) items := make([]v1.Pod, 2) for i := range items { - apiObjectFuzzer.Fuzz(&items[i]) + var pod api.Pod + apiObjectFuzzer.Fuzz(&pod) + out, err := api.Scheme.ConvertToVersion(&pod, "v1") + if err != nil { + panic(err) + } + items[i] = *out.(*v1.Pod) } return items }