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" "fmt"
"io/ioutil" "io/ioutil"
"os" "os"
"strings"
"github.com/gogo/protobuf/jsonpb"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/spf13/viper" "github.com/spf13/viper"
@ -142,7 +144,7 @@ func CalculateGas(
return sdk.SimulationResponse{}, 0, err return sdk.SimulationResponse{}, 0, err
} }
simRes, err := parseQueryResponse(cdc, rawRes) simRes, err := parseQueryResponse(rawRes)
if err != nil { if err != nil {
return sdk.SimulationResponse{}, 0, err return sdk.SimulationResponse{}, 0, err
} }
@ -286,9 +288,9 @@ func adjustGasEstimate(estimate uint64, adjustment float64) uint64 {
return uint64(adjustment * float64(estimate)) 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 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 return sdk.SimulationResponse{}, err
} }

View File

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