mirror of https://github.com/k3s-io/k3s
Merge pull request #24906 from smarterclayton/better_benchmark
Automatic merge from submit-queue Slightly more effective conversion test (better variety) Exercises more code paths for debugging memory allocations.pull/6/head
commit
8f9bff5b25
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue