Commit d0a7b930 authored by Clayton Coleman's avatar Clayton Coleman

Slightly more effective conversion test (better variety)

parent 4a0e0826
...@@ -18,14 +18,23 @@ package api_test ...@@ -18,14 +18,23 @@ package api_test
import ( import (
"io/ioutil" "io/ioutil"
"math/rand"
"testing" "testing"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
) )
func BenchmarkPodConversion(b *testing.B) { 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") data, err := ioutil.ReadFile("pod_example.json")
if err != nil { if err != nil {
b.Fatalf("Unexpected error while reading file: %v", err) b.Fatalf("Unexpected error while reading file: %v", err)
...@@ -34,11 +43,14 @@ func BenchmarkPodConversion(b *testing.B) { ...@@ -34,11 +43,14 @@ func BenchmarkPodConversion(b *testing.B) {
if err := runtime.DecodeInto(testapi.Default.Codec(), data, &pod); err != nil { if err := runtime.DecodeInto(testapi.Default.Codec(), data, &pod); err != nil {
b.Fatalf("Unexpected error decoding pod: %v", err) b.Fatalf("Unexpected error decoding pod: %v", err)
} }
items = append(items, pod)
width := len(items)
scheme := api.Scheme scheme := api.Scheme
var result *api.Pod var result *api.Pod
for i := 0; i < b.N; i++ { 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 { if err != nil {
b.Fatalf("Conversion error: %v", err) b.Fatalf("Conversion error: %v", err)
} }
...@@ -48,9 +60,7 @@ func BenchmarkPodConversion(b *testing.B) { ...@@ -48,9 +60,7 @@ func BenchmarkPodConversion(b *testing.B) {
} }
result = obj.(*api.Pod) result = obj.(*api.Pod)
} }
if !api.Semantic.DeepDerivative(pod, *result) { b.Log(result)
b.Fatalf("Incorrect conversion: expected %v, got %v", pod, *result)
}
} }
func BenchmarkNodeConversion(b *testing.B) { func BenchmarkNodeConversion(b *testing.B) {
......
...@@ -275,7 +275,13 @@ func benchmarkItems() []v1.Pod { ...@@ -275,7 +275,13 @@ func benchmarkItems() []v1.Pod {
apiObjectFuzzer := apitesting.FuzzerFor(nil, api.SchemeGroupVersion, rand.NewSource(benchmarkSeed)) apiObjectFuzzer := apitesting.FuzzerFor(nil, api.SchemeGroupVersion, rand.NewSource(benchmarkSeed))
items := make([]v1.Pod, 2) items := make([]v1.Pod, 2)
for i := range items { 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 return items
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment