Merge pull request #99153 from mborsz/gzip-flag

Add BenchmarkSerializeObject* benchmarks
This commit is contained in:
Kubernetes Prow Robot 2021-02-17 09:17:30 -08:00 committed by GitHub
commit 6cd79423bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -366,6 +366,45 @@ func TestSerializeObject(t *testing.T) {
}
}
func benchmarkSerializeObject(b *testing.B, size int) {
largePayload := bytes.Repeat([]byte("0123456789abcdef"), size/16+1)
req := &http.Request{
Header: http.Header{
"Accept-Encoding": []string{"gzip"},
},
URL: &url.URL{Path: "/path"},
}
defer featuregatetesting.SetFeatureGateDuringTest(b, utilfeature.DefaultFeatureGate, features.APIResponseCompression, true)()
encoder := &fakeEncoder{
buf: largePayload,
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
recorder := httptest.NewRecorder()
SerializeObject("application/json", encoder, recorder, req, http.StatusOK, nil /* object */)
result := recorder.Result()
if result.StatusCode != http.StatusOK {
b.Fatalf("incorrect status code: got %v; want: %v", result.StatusCode, http.StatusOK)
}
}
}
func BenchmarkSerializeObject10KB(b *testing.B) {
benchmarkSerializeObject(b, 10*1024)
}
func BenchmarkSerializeObject10MB(b *testing.B) {
benchmarkSerializeObject(b, 10*1024*1024)
}
func BenchmarkSerializeObject100MB(b *testing.B) {
benchmarkSerializeObject(b, 100*1024*1024)
}
func BenchmarkSerializeObject1GB(b *testing.B) {
benchmarkSerializeObject(b, 1024*1024*1024)
}
type fakeResponseRecorder struct {
*httptest.ResponseRecorder
fe *fakeEncoder