mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Add benchmarks for API tests
This commit is contained in:
		
							
								
								
									
										19
									
								
								hack/benchmark-go.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								hack/benchmark-go.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright 2014 Google Inc. All rights reserved.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					# you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					# You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					# See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					# limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KUBE_COVER=" " KUBE_RACE=" " hack/test-go.sh "" -test.run="^X" -benchtime=1s -bench=. -benchmem
 | 
				
			||||||
@@ -17,7 +17,9 @@ limitations under the License.
 | 
				
			|||||||
package api_test
 | 
					package api_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
	"flag"
 | 
						"flag"
 | 
				
			||||||
 | 
						"math/rand"
 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -203,3 +205,57 @@ func TestBadJSONRejection(t *testing.T) {
 | 
				
			|||||||
		t.Errorf("Kind is set but doesn't match the object type: %s", badJSONKindMismatch)
 | 
							t.Errorf("Kind is set but doesn't match the object type: %s", badJSONKindMismatch)
 | 
				
			||||||
	}*/
 | 
						}*/
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const benchmarkSeed = 100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkEncode(b *testing.B) {
 | 
				
			||||||
 | 
						pod := api.Pod{}
 | 
				
			||||||
 | 
						apiObjectFuzzer.RandSource(rand.NewSource(benchmarkSeed))
 | 
				
			||||||
 | 
						apiObjectFuzzer.Fuzz(&pod)
 | 
				
			||||||
 | 
						for i := 0; i < b.N; i++ {
 | 
				
			||||||
 | 
							latest.Codec.Encode(&pod)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// BenchmarkEncodeJSON provides a baseline for regular JSON encode performance
 | 
				
			||||||
 | 
					func BenchmarkEncodeJSON(b *testing.B) {
 | 
				
			||||||
 | 
						pod := api.Pod{}
 | 
				
			||||||
 | 
						apiObjectFuzzer.RandSource(rand.NewSource(benchmarkSeed))
 | 
				
			||||||
 | 
						apiObjectFuzzer.Fuzz(&pod)
 | 
				
			||||||
 | 
						for i := 0; i < b.N; i++ {
 | 
				
			||||||
 | 
							json.Marshal(&pod)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkDecode(b *testing.B) {
 | 
				
			||||||
 | 
						pod := api.Pod{}
 | 
				
			||||||
 | 
						apiObjectFuzzer.RandSource(rand.NewSource(benchmarkSeed))
 | 
				
			||||||
 | 
						apiObjectFuzzer.Fuzz(&pod)
 | 
				
			||||||
 | 
						data, _ := latest.Codec.Encode(&pod)
 | 
				
			||||||
 | 
						for i := 0; i < b.N; i++ {
 | 
				
			||||||
 | 
							latest.Codec.Decode(data)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkDecodeInto(b *testing.B) {
 | 
				
			||||||
 | 
						pod := api.Pod{}
 | 
				
			||||||
 | 
						apiObjectFuzzer.RandSource(rand.NewSource(benchmarkSeed))
 | 
				
			||||||
 | 
						apiObjectFuzzer.Fuzz(&pod)
 | 
				
			||||||
 | 
						data, _ := latest.Codec.Encode(&pod)
 | 
				
			||||||
 | 
						for i := 0; i < b.N; i++ {
 | 
				
			||||||
 | 
							obj := api.Pod{}
 | 
				
			||||||
 | 
							latest.Codec.DecodeInto(data, &obj)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// BenchmarkDecodeJSON provides a baseline for regular JSON decode performance
 | 
				
			||||||
 | 
					func BenchmarkDecodeJSON(b *testing.B) {
 | 
				
			||||||
 | 
						pod := api.Pod{}
 | 
				
			||||||
 | 
						apiObjectFuzzer.RandSource(rand.NewSource(benchmarkSeed))
 | 
				
			||||||
 | 
						apiObjectFuzzer.Fuzz(&pod)
 | 
				
			||||||
 | 
						data, _ := latest.Codec.Encode(&pod)
 | 
				
			||||||
 | 
						for i := 0; i < b.N; i++ {
 | 
				
			||||||
 | 
							obj := api.Pod{}
 | 
				
			||||||
 | 
							json.Unmarshal(data, &obj)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user