Skip to content

Commit a1df3e0

Browse files
authored
Merge pull request #3669 from justinsb/benchmark_swagger_unpack
Add benchmarks to measure impact of swagger parsing
2 parents 4e03325 + 8e57ee9 commit a1df3e0

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright 2021 The Kubernetes Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package openapi
5+
6+
import (
7+
"path/filepath"
8+
"testing"
9+
10+
"github.com/go-openapi/spec"
11+
"sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi"
12+
)
13+
14+
// Benchmark for swagger parsing (UnmarshalJSON)
15+
func BenchmarkSwaggerUnmarshalJSON(t *testing.B) {
16+
version := kubernetesOpenAPIDefaultVersion
17+
18+
// parse the swagger, this should never fail
19+
assetName := filepath.Join(
20+
"kubernetesapi",
21+
version,
22+
"swagger.json")
23+
24+
b := kubernetesapi.OpenAPIMustAsset[version](assetName)
25+
26+
for i := 0; i < t.N; i++ {
27+
var swagger spec.Swagger
28+
if err := swagger.UnmarshalJSON(b); err != nil {
29+
t.Fatalf("swagger.UnmarshalJSON failed: %v", err)
30+
}
31+
}
32+
}
33+
34+
// Benchmark for loading assets packed into the binary
35+
func BenchmarkAssetRead(t *testing.B) {
36+
for i := 0; i < t.N; i++ {
37+
version := kubernetesOpenAPIDefaultVersion
38+
39+
// parse the swagger, this should never fail
40+
assetName := filepath.Join(
41+
"kubernetesapi",
42+
version,
43+
"swagger.json")
44+
45+
kubernetesapi.OpenAPIMustAsset[version](assetName)
46+
}
47+
}

0 commit comments

Comments
 (0)