mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Slightly more effective conversion test (better variety)
This commit is contained in:
		@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user