Merge PR #5927: Fix parseQueryResponse

This commit is contained in:
Alexander Bezobchuk 2020-04-03 10:59:46 -04:00 committed by GitHub
parent e0c1774e20
commit 22422c6de1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 10 deletions

View File

@ -6,7 +6,9 @@ import (
"fmt"
"io/ioutil"
"os"
"strings"
"github.com/gogo/protobuf/jsonpb"
"github.com/pkg/errors"
"github.com/spf13/viper"
@ -142,7 +144,7 @@ func CalculateGas(
return sdk.SimulationResponse{}, 0, err
}
simRes, err := parseQueryResponse(cdc, rawRes)
simRes, err := parseQueryResponse(rawRes)
if err != nil {
return sdk.SimulationResponse{}, 0, err
}
@ -286,9 +288,9 @@ func adjustGasEstimate(estimate uint64, adjustment float64) uint64 {
return uint64(adjustment * float64(estimate))
}
func parseQueryResponse(cdc *codec.Codec, rawRes []byte) (sdk.SimulationResponse, error) {
func parseQueryResponse(bz []byte) (sdk.SimulationResponse, error) {
var simRes sdk.SimulationResponse
if err := cdc.UnmarshalBinaryBare(rawRes, &simRes); err != nil {
if err := jsonpb.Unmarshal(strings.NewReader(string(bz)), &simRes); err != nil {
return sdk.SimulationResponse{}, err
}

View File

@ -22,19 +22,20 @@ var (
)
func TestParseQueryResponse(t *testing.T) {
cdc := makeCodec()
simRes := sdk.SimulationResponse{
simRes := &sdk.SimulationResponse{
GasInfo: sdk.GasInfo{GasUsed: 10, GasWanted: 20},
Result: &sdk.Result{Data: []byte("tx data"), Log: "log"},
}
bz := cdc.MustMarshalBinaryBare(simRes)
res, err := parseQueryResponse(cdc, bz)
bz, err := codec.ProtoMarshalJSON(simRes)
require.NoError(t, err)
res, err := parseQueryResponse(bz)
require.NoError(t, err)
require.Equal(t, 10, int(res.GasInfo.GasUsed))
require.NotNil(t, res.Result)
res, err = parseQueryResponse(cdc, []byte("fuzzy"))
res, err = parseQueryResponse([]byte("fuzzy"))
require.Error(t, err)
}
@ -45,12 +46,13 @@ func TestCalculateGas(t *testing.T) {
if wantErr {
return nil, 0, errors.New("query failed")
}
simRes := sdk.SimulationResponse{
simRes := &sdk.SimulationResponse{
GasInfo: sdk.GasInfo{GasUsed: gasUsed, GasWanted: gasUsed},
Result: &sdk.Result{Data: []byte("tx data"), Log: "log"},
}
return cdc.MustMarshalBinaryBare(simRes), 0, nil
bz, _ := codec.ProtoMarshalJSON(simRes)
return bz, 0, nil
}
}