Review fixes

This commit is contained in:
Geoff Stuart committed 2023-02-02 16:46:08 -05:00
1 parent f05437d253
commit ffc1c33be0
1 file changed
+47 -15
+47 -15
View File
@@ -2,15 +2,18 @@
package itests
import (
"encoding/hex"
"fmt"
"bytes"
"encoding/json"
"testing"
"github.com/stretchr/testify/require"
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
actorstypes "github.com/filecoin-project/go-state-types/actors"
"github.com/filecoin-project/go-state-types/builtin"
"github.com/filecoin-project/go-state-types/builtin/v10/eam"
"github.com/filecoin-project/go-state-types/cbor"
"github.com/filecoin-project/go-state-types/manifest"
"github.com/filecoin-project/lotus/build"
@@ -18,24 +21,31 @@ import (
"github.com/filecoin-project/lotus/cli"
)
type marshalable interface {
cbor.Marshaler
cbor.Unmarshaler
}
type testCase struct {
ActorKey string
MethodNum abi.MethodNum
Bytestr string
retVal marshalable
}
// Used './lotus state replay --show-trace <msg-cid>' to get params/return to decode.
func TestDecodeParams(t *testing.T) {
testCborBytes := abi.CborBytes([]byte{1, 2, 3})
testCases := []testCase{
{
ActorKey: manifest.EvmKey,
MethodNum: builtin.MethodsEVM.InvokeContract,
Bytestr: "58a4d4a0cd0a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000028000181e20392202034194f3b7cae3042a57b63ea4c36a962478e41bfa8ddc80dd61cae8bebdedf23000000000000000000000000000000000000000000000000",
retVal: &testCborBytes,
},
{
ActorKey: manifest.EamKey,
MethodNum: builtin.MethodsEAM.CreateExternal,
Bytestr: "590dde608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610cd18061010d6000396000f3fe6080604052600436106100555760003560e01c806305b03ef81461005a5780635a73b0bf14610097578063715018a6146100c05780638da5cb5b146100d7578063a26e118614610102578063f2fde38b1461011e575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c91906106ec565b610147565b60405161008e9190610978565b60405180910390f35b3480156100a357600080fd5b506100be60048036038101906100b99190610748565b610182565b005b3480156100cc57600080fd5b506100d5610321565b005b3480156100e357600080fd5b506100ec610335565b6040516100f991906108bf565b60405180910390f35b61011c600480360381019061011791906106a3565b61035e565b005b34801561012a57600080fd5b5061014560048036038101906101409190610676565b61040e565b005b600182805160208101820180518482526020830160208501208183528095505050505050602052806000526040600020600091509150505481565b61018a610492565b8060018460405161019b91906108a8565b908152602001604051809103902060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021f90610938565b60405180910390fd5b8060018460405161023991906108a8565b908152602001604051809103902060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546102939190610a66565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156102e0573d6000803e3d6000fd5b507f901c03da5d88eb3d62ab4617e7b7d17d86db16356823a7971127d5181a842fef828483604051610314939291906108da565b60405180910390a1505050565b610329610492565b6103336000610510565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3460018260405161036f91906108a8565b908152602001604051809103902060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546103c99190610a10565b925050819055507f2d4b597935f3cd67fb2eebf1db4debc934cee5c7baa7153f980fdbeb2e74084e338234604051610403939291906108da565b60405180910390a150565b610416610492565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d90610918565b60405180910390fd5b61048f81610510565b50565b61049a6105d4565b73ffffffffffffffffffffffffffffffffffffffff166104b8610335565b73ffffffffffffffffffffffffffffffffffffffff161461050e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050590610958565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b60006105ef6105ea846109b8565b610993565b90508281526020810184848401111561060b5761060a610bac565b5b610616848285610ad6565b509392505050565b60008135905061062d81610c6d565b92915050565b600082601f83011261064857610647610ba7565b5b81356106588482602086016105dc565b91505092915050565b60008135905061067081610c84565b92915050565b60006020828403121561068c5761068b610bb6565b5b600061069a8482850161061e565b91505092915050565b6000602082840312156106b9576106b8610bb6565b5b600082013567ffffffffffffffff8111156106d7576106d6610bb1565b5b6106e384828501610633565b91505092915050565b6000806040838503121561070357610702610bb6565b5b600083013567ffffffffffffffff81111561072157610720610bb1565b5b61072d85828601610633565b925050602061073e8582860161061e565b9150509250929050565b60008060006060848603121561076157610760610bb6565b5b600084013567ffffffffffffffff81111561077f5761077e610bb1565b5b61078b86828701610633565b935050602061079c8682870161061e565b92505060406107ad86828701610661565b9150509250925092565b6107c081610a9a565b82525050565b60006107d1826109e9565b6107db81856109f4565b93506107eb818560208601610ae5565b6107f481610bbb565b840191505092915050565b600061080a826109e9565b6108148185610a05565b9350610824818560208601610ae5565b80840191505092915050565b600061083d6026836109f4565b915061084882610bcc565b604082019050919050565b6000610860600f836109f4565b915061086b82610c1b565b602082019050919050565b60006108836020836109f4565b915061088e82610c44565b602082019050919050565b6108a281610acc565b82525050565b600061Line truncated
retVal: &testCborBytes,
},
}
@@ -47,28 +57,46 @@ func TestDecodeParams(t *testing.T) {
actorCodeCid, found := actors.GetActorCodeID(av, tc.ActorKey)
require.True(t, found)
params, err := hex.DecodeString(tc.Bytestr)
buf := bytes.NewBuffer(nil)
if err := tc.retVal.MarshalCBOR(buf); err != nil {
t.Fatal(err)
}
paramString, err := cli.JsonParams(actorCodeCid, tc.MethodNum, buf.Bytes())
require.NoError(t, err)
paramString, err := cli.JsonParams(actorCodeCid, tc.MethodNum, params)
jsonParams, err := json.MarshalIndent(tc.retVal, "", " ")
require.NoError(t, err)
fmt.Println(paramString)
require.Equal(t, string(jsonParams), paramString)
})
}
}
func TestDecodeReturn(t *testing.T) {
testCborBytes := abi.CborBytes([]byte{1, 2, 3})
robustAddr, err := address.NewIDAddress(12345)
require.NoError(t, err)
//ethAddr, err := ethtypes.ParseEthAddress("d4c5fb16488Aa48081296299d54b0c648C9333dA")
//require.NoError(t, err)
testReturn := eam.CreateExternalReturn{
ActorID: 12345,
RobustAddress: &robustAddr,
EthAddress: [20]byte{},
}
testCases := []testCase{
{
ActorKey: manifest.EvmKey,
MethodNum: builtin.MethodsEVM.InvokeContract,
Bytestr: "5820000000000000000000000000000000000000000000000000000000000000002d",
retVal: &testCborBytes,
},
{
ActorKey: manifest.EamKey,
MethodNum: builtin.MethodsEAM.CreateExternal,
Bytestr: "8319195b5502ff4af64187327799171354df10b4b3bfc2e4c30654922d6956c99e12dfeb3224dea977d0939758a1fe",
retVal: &testReturn,
},
}
@@ -80,13 +108,17 @@ func TestDecodeReturn(t *testing.T) {
actorCodeCid, found := actors.GetActorCodeID(av, tc.ActorKey)
require.True(t, found)
ret, err := hex.DecodeString(tc.Bytestr)
buf := bytes.NewBuffer(nil)
if err := tc.retVal.MarshalCBOR(buf); err != nil {
t.Fatal(err)
}
returnString, err := cli.JsonReturn(actorCodeCid, tc.MethodNum, buf.Bytes())
require.NoError(t, err)
paramString, err := cli.JsonReturn(actorCodeCid, tc.MethodNum, ret)
jsonReturn, err := json.MarshalIndent(tc.retVal, "", " ")
require.NoError(t, err)
fmt.Println(paramString)
require.Equal(t, string(jsonReturn), returnString)
})
}
}