Skip to content

Commit b047686

Browse files
authored
Merge pull request #107 from apelisse/add-even-more-benchmarks
Add even more benchmarks
2 parents 9db5fb9 + 1b407fa commit b047686

File tree

2 files changed

+79
-31
lines changed

2 files changed

+79
-31
lines changed

merge/real_test.go

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ limitations under the License.
1717
package merge_test
1818

1919
import (
20+
"fmt"
2021
"io/ioutil"
2122
"path/filepath"
23+
"strings"
2224
"testing"
2325

2426
. "sigs.k8s.io/structured-merge-diff/internal/fixture"
@@ -37,6 +39,10 @@ func read(file string) []byte {
3739
return s
3840
}
3941

42+
func lastPart(s string) string {
43+
return s[strings.LastIndex(s, ".")+1:]
44+
}
45+
4046
var parser = func() *typed.Parser {
4147
s := read(testdata("k8s-schema.yaml"))
4248
parser, err := typed.NewParser(typed.YAMLObject(s))
@@ -46,7 +52,7 @@ var parser = func() *typed.Parser {
4652
return parser
4753
}()
4854

49-
func BenchmarkUpdates(b *testing.B) {
55+
func BenchmarkOperations(b *testing.B) {
5056
benches := []struct {
5157
typename string
5258
obj typed.YAMLObject
@@ -66,26 +72,37 @@ func BenchmarkUpdates(b *testing.B) {
6672
}
6773

6874
for _, bench := range benches {
69-
b.Run(bench.typename, func(b *testing.B) {
70-
test := TestCase{
71-
Ops: []Operation{
72-
Update{
73-
Manager: "controller",
74-
APIVersion: "v1",
75-
Object: bench.obj,
76-
},
75+
76+
b.Run(lastPart(bench.typename), func(b *testing.B) {
77+
ops := []Operation{
78+
Update{
79+
Manager: "controller",
80+
APIVersion: "v1",
81+
Object: bench.obj,
82+
},
83+
Apply{
84+
Manager: "controller",
85+
APIVersion: "v1",
86+
Object: bench.obj,
7787
},
7888
}
89+
for _, op := range ops {
90+
b.Run(lastPart(fmt.Sprintf("%T", op)), func(b *testing.B) {
91+
test := TestCase{
92+
Ops: []Operation{op},
93+
}
7994

80-
pt := parser.Type(bench.typename)
81-
test.PreprocessOperations(pt)
95+
pt := parser.Type(bench.typename)
96+
test.PreprocessOperations(pt)
8297

83-
b.ReportAllocs()
84-
b.ResetTimer()
85-
for n := 0; n < b.N; n++ {
86-
if err := test.Bench(pt); err != nil {
87-
b.Fatal(err)
88-
}
98+
b.ReportAllocs()
99+
b.ResetTimer()
100+
for n := 0; n < b.N; n++ {
101+
if err := test.Bench(pt); err != nil {
102+
b.Fatal(err)
103+
}
104+
}
105+
})
89106
}
90107
})
91108
}

typed/parser_test.go

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package typed_test
1919
import (
2020
"io/ioutil"
2121
"path/filepath"
22+
"strings"
2223
"testing"
2324

2425
yaml "gopkg.in/yaml.v2"
@@ -29,10 +30,35 @@ func testdata(file string) string {
2930
return filepath.Join("..", "internal", "testdata", file)
3031
}
3132

32-
func BenchmarkFromUnstructured(b *testing.B) {
33-
pod, err := ioutil.ReadFile(testdata("pod.yaml"))
33+
func read(file string) []byte {
34+
obj, err := ioutil.ReadFile(file)
3435
if err != nil {
35-
b.Fatal(err)
36+
panic(err)
37+
}
38+
return obj
39+
}
40+
41+
func lastPart(s string) string {
42+
return s[strings.LastIndex(s, ".")+1:]
43+
}
44+
45+
func BenchmarkFromUnstructured(b *testing.B) {
46+
tests := []struct {
47+
typename string
48+
obj []byte
49+
}{
50+
{
51+
typename: "io.k8s.api.core.v1.Pod",
52+
obj: read(testdata("pod.yaml")),
53+
},
54+
{
55+
typename: "io.k8s.api.core.v1.Node",
56+
obj: read(testdata("node.yaml")),
57+
},
58+
{
59+
typename: "io.k8s.api.core.v1.Endpoints",
60+
obj: read(testdata("endpoints.yaml")),
61+
},
3662
}
3763

3864
s, err := ioutil.ReadFile(testdata("k8s-schema.yaml"))
@@ -43,19 +69,24 @@ func BenchmarkFromUnstructured(b *testing.B) {
4369
if err != nil {
4470
b.Fatal(err)
4571
}
46-
pt := parser.Type("io.k8s.api.core.v1.Pod")
4772

48-
obj := map[string]interface{}{}
49-
if err := yaml.Unmarshal([]byte(pod), &obj); err != nil {
50-
b.Fatal(err)
51-
}
73+
for _, test := range tests {
74+
b.Run(lastPart(test.typename), func(b *testing.B) {
75+
pt := parser.Type(test.typename)
76+
77+
obj := map[string]interface{}{}
78+
if err := yaml.Unmarshal(test.obj, &obj); err != nil {
79+
b.Fatal(err)
80+
}
5281

53-
b.ReportAllocs()
54-
b.ResetTimer()
55-
for n := 0; n < b.N; n++ {
56-
if _, err := pt.FromUnstructured(obj); err != nil {
57-
b.Fatal(err)
58-
}
82+
b.ReportAllocs()
83+
b.ResetTimer()
84+
for n := 0; n < b.N; n++ {
85+
if _, err := pt.FromUnstructured(obj); err != nil {
86+
b.Fatal(err)
87+
}
88+
}
89+
})
5990
}
6091

6192
}

0 commit comments

Comments
 (0)