proto: bench_test fixes
Don't fail on test cases with partial messages.
Create a new message on each decode cycle.
Change-Id: I7c1d91a2853e340fc0bae05a238bb28eb682e6ce
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/185377
Reviewed-by: Joe Tsai <[email protected]>
diff --git a/proto/bench_test.go b/proto/bench_test.go
index dfaf141..19f9eaa 100644
--- a/proto/bench_test.go
+++ b/proto/bench_test.go
@@ -38,7 +38,7 @@
} else {
_, err = opts.Marshal(want)
}
- if err != nil {
+ if err != nil && !test.partial {
b.Fatal(err)
}
}
@@ -55,16 +55,16 @@
opts := proto.UnmarshalOptions{AllowPartial: *allowPartial}
b.Run(fmt.Sprintf("%s (%T)", test.desc, want), func(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
- m := reflect.New(reflect.TypeOf(want).Elem()).Interface().(proto.Message)
- v1 := m.(protoV1.Message)
for pb.Next() {
+ m := reflect.New(reflect.TypeOf(want).Elem()).Interface().(proto.Message)
+ v1 := m.(protoV1.Message)
var err error
if *benchV1 {
err = protoV1.Unmarshal(test.wire, v1)
} else {
err = opts.Unmarshal(test.wire, m)
}
- if err != nil {
+ if err != nil && !test.partial {
b.Fatal(err)
}
}