Some checks failed
Build SimApp / build (amd64) (push) Waiting to run
Build SimApp / build (arm64) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
Build & Push / build (push) Waiting to run
Run Gosec / Gosec (push) Waiting to run
Lint / golangci-lint (push) Waiting to run
Checks dependencies and mocks generation / Check go mod tidy (push) Waiting to run
Checks dependencies and mocks generation / Check up to date mocks (push) Waiting to run
System Tests / setup (push) Waiting to run
System Tests / test-system (push) Blocked by required conditions
System Tests / test-system-legacy (push) Blocked by required conditions
Tests / Code Coverage / split-test-files (push) Waiting to run
Tests / Code Coverage / tests (00) (push) Blocked by required conditions
Tests / Code Coverage / tests (01) (push) Blocked by required conditions
Tests / Code Coverage / tests (02) (push) Blocked by required conditions
Tests / Code Coverage / tests (03) (push) Blocked by required conditions
Tests / Code Coverage / test-integration (push) Waiting to run
Tests / Code Coverage / test-e2e (push) Waiting to run
Tests / Code Coverage / repo-analysis (push) Blocked by required conditions
Tests / Code Coverage / test-sim-nondeterminism (push) Waiting to run
Tests / Code Coverage / test-clientv2 (push) Waiting to run
Tests / Code Coverage / test-core (push) Waiting to run
Tests / Code Coverage / test-depinject (push) Waiting to run
Tests / Code Coverage / test-errors (push) Waiting to run
Tests / Code Coverage / test-math (push) Waiting to run
Tests / Code Coverage / test-schema (push) Waiting to run
Tests / Code Coverage / test-collections (push) Waiting to run
Tests / Code Coverage / test-cosmovisor (push) Waiting to run
Tests / Code Coverage / test-confix (push) Waiting to run
Tests / Code Coverage / test-store (push) Waiting to run
Tests / Code Coverage / test-log (push) Waiting to run
Tests / Code Coverage / test-x-tx (push) Waiting to run
Tests / Code Coverage / test-x-nft (push) Waiting to run
Tests / Code Coverage / test-x-circuit (push) Waiting to run
Tests / Code Coverage / test-x-feegrant (push) Waiting to run
Tests / Code Coverage / test-x-evidence (push) Waiting to run
Tests / Code Coverage / test-x-upgrade (push) Waiting to run
Tests / Code Coverage / test-tools-benchmark (push) Waiting to run
Build & Push SDK Proto Builder / build (push) Has been cancelled
118 lines
2.5 KiB
Go
118 lines
2.5 KiB
Go
package unknownproto_test
|
|
|
|
import (
|
|
"sync"
|
|
"testing"
|
|
|
|
"github.com/cosmos/gogoproto/proto"
|
|
|
|
"github.com/cosmos/cosmos-sdk/codec/unknownproto"
|
|
"github.com/cosmos/cosmos-sdk/testutil/testdata"
|
|
)
|
|
|
|
var n1BBlob []byte
|
|
|
|
func init() {
|
|
n1B := &testdata.Nested1B{
|
|
Id: 1,
|
|
Age: 99,
|
|
Nested: &testdata.Nested2B{
|
|
Id: 2,
|
|
Route: "Wintery route",
|
|
Fee: 99,
|
|
Nested: &testdata.Nested3B{
|
|
Id: 3,
|
|
Name: "3A this one that one there those oens",
|
|
Age: 4588,
|
|
B4: []*testdata.Nested4B{
|
|
{
|
|
Id: 4,
|
|
Age: 88,
|
|
Name: "Nested4B",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
var err error
|
|
n1BBlob, err = proto.Marshal(n1B)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func BenchmarkRejectUnknownFields_serial(b *testing.B) {
|
|
benchmarkRejectUnknownFields(b, false)
|
|
}
|
|
|
|
func BenchmarkRejectUnknownFields_parallel(b *testing.B) {
|
|
benchmarkRejectUnknownFields(b, true)
|
|
}
|
|
|
|
func benchmarkRejectUnknownFields(b *testing.B, parallel bool) {
|
|
b.Helper()
|
|
b.ReportAllocs()
|
|
|
|
if !parallel {
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
n1A := new(testdata.Nested1A)
|
|
if err := unknownproto.RejectUnknownFieldsStrict(n1BBlob, n1A, unknownproto.DefaultAnyResolver{}); err == nil {
|
|
b.Fatal("expected an error")
|
|
}
|
|
b.SetBytes(int64(len(n1BBlob)))
|
|
}
|
|
} else {
|
|
var mu sync.Mutex
|
|
b.ResetTimer()
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
for pb.Next() {
|
|
// To simulate the conditions of multiple transactions being processed in parallel.
|
|
n1A := new(testdata.Nested1A)
|
|
if err := unknownproto.RejectUnknownFieldsStrict(n1BBlob, n1A, unknownproto.DefaultAnyResolver{}); err == nil {
|
|
b.Fatal("expected an error")
|
|
}
|
|
mu.Lock()
|
|
b.SetBytes(int64(len(n1BBlob)))
|
|
mu.Unlock()
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func BenchmarkProtoUnmarshal_serial(b *testing.B) {
|
|
benchmarkProtoUnmarshal(b, false)
|
|
}
|
|
|
|
func BenchmarkProtoUnmarshal_parallel(b *testing.B) {
|
|
benchmarkProtoUnmarshal(b, true)
|
|
}
|
|
|
|
func benchmarkProtoUnmarshal(b *testing.B, parallel bool) {
|
|
b.Helper()
|
|
b.ReportAllocs()
|
|
|
|
if !parallel {
|
|
for i := 0; i < b.N; i++ {
|
|
n1A := new(testdata.Nested1A)
|
|
if err := proto.Unmarshal(n1BBlob, n1A); err == nil {
|
|
b.Fatal("expected an error")
|
|
}
|
|
b.SetBytes(int64(len(n1BBlob)))
|
|
}
|
|
} else {
|
|
var mu sync.Mutex
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
for pb.Next() {
|
|
n1A := new(testdata.Nested1A)
|
|
if err := proto.Unmarshal(n1BBlob, n1A); err == nil {
|
|
b.Fatal("expected an error")
|
|
}
|
|
mu.Lock()
|
|
b.SetBytes(int64(len(n1BBlob)))
|
|
mu.Unlock()
|
|
}
|
|
})
|
|
}
|
|
}
|