Skip to content

Commit

Permalink
tests: Add DecodeCallData benchmarks.
Browse files Browse the repository at this point in the history
  • Loading branch information
tyler-smith committed Sep 18, 2023
1 parent 3d400c8 commit 0506a50
Showing 1 changed file with 45 additions and 27 deletions.
72 changes: 45 additions & 27 deletions eth/tracers/blocknative/decoder/calldata_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,39 @@ import (
"github.com/stretchr/testify/require"
)

type decodeCallDataTest struct {
name string
args decodeCallDataTestArgs
want *CallData
}

type decodeCallDataTestArgs struct {
sender common.Address
input string
contract *Contract
}

func TestDecodeCalldata(t *testing.T) {
type args struct {
sender common.Address
input string
contract *Contract
tests := getTestCases()
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
executeTests(t, tt)
})
}
}

func BenchmarkDecodeCalldata(B *testing.B) {
tests := getTestCases()
for i := 0; i < B.N; i++ {
executeTests(B, tests[i%len(tests)])
}
tests := []struct {
name string
args args
want *CallData
}{
}

func getTestCases() []decodeCallDataTest {
return []decodeCallDataTest{
{
"erc20 transferFrom(address,address,uint256)",
args{
decodeCallDataTestArgs{
common.Address{},
"23b872dd0000000000000000000000005470c5a6fce7447afd2c9be3a0f25e362c093661000000000000000000000000479ee0363a7ac2ef34cba7ee82d2c2e0652d466900000000000000000000000000000000000000000000000000000000000018c5",
&Contract{interfaces: []Interface{interfaceTypeERC20}},
Expand All @@ -41,7 +60,7 @@ func TestDecodeCalldata(t *testing.T) {
},
{
"erc721 transferFrom(address,address,uint256)",
args{
decodeCallDataTestArgs{
common.Address{},
"23b872dd0000000000000000000000005470c5a6fce7447afd2c9be3a0f25e362c093661000000000000000000000000479ee0363a7ac2ef34cba7ee82d2c2e0652d466900000000000000000000000000000000000000000000000000000000000018c5",
&Contract{interfaces: []Interface{interfaceTypeERC721}},
Expand All @@ -52,14 +71,14 @@ func TestDecodeCalldata(t *testing.T) {
Transfers: []*Transfer{{
From: common.HexToAddress("0x5470c5a6Fce7447aFd2C9BE3A0F25e362C093661"),
To: common.HexToAddress("0x479ee0363a7Ac2ef34cba7ee82D2C2E0652D4669"),
Value: NewAmount(big.NewInt(1)),
Value: NewAmount(common.Big1),
TokenID: big.NewInt(6341),
}},
},
},
{
"erc20+erc721 transferFrom(address,address,uint256)",
args{
decodeCallDataTestArgs{
common.Address{},
"23b872dd0000000000000000000000005470c5a6fce7447afd2c9be3a0f25e362c093661000000000000000000000000479ee0363a7ac2ef34cba7ee82d2c2e0652d466900000000000000000000000000000000000000000000000000000000000018c5",
&Contract{interfaces: []Interface{interfaceTypeERC20, interfaceTypeERC721}},
Expand All @@ -77,7 +96,7 @@ func TestDecodeCalldata(t *testing.T) {
},
{
"erc1155 safeTransferFrom(address,address,uint256,uint256,bytes)",
args{
decodeCallDataTestArgs{
common.Address{},
"f242432a000000000000000000000000cb89354a1c6e7abd1972a68466db238e48a3b0c800000000000000000000000020964f741d2dffd2ccec658ca086e21af1d7df8e000000000000000000000000000000000000000000000000000000000000001d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000360c6ebe",
&Contract{interfaces: []Interface{interfaceTypeERC20, interfaceTypeERC721}},
Expand All @@ -88,14 +107,14 @@ func TestDecodeCalldata(t *testing.T) {
Transfers: []*Transfer{{
From: common.HexToAddress("0xcb89354a1c6e7ABd1972a68466Db238e48a3B0C8"),
To: common.HexToAddress("0x20964f741d2dffd2ccec658ca086e21af1d7df8e"),
Value: NewAmount(big.NewInt(1)),
Value: NewAmount(common.Big1),
TokenID: big.NewInt(29),
}},
},
},
{
"erc1155 safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)",
args{
decodeCallDataTestArgs{
common.Address{},
"2eb2c2d6000000000000000000000000381e840f4ebe33d0153e9a312105554594a98c42000000000000000000000000a2b876dbb382d40cecee2acc670f55ad95c4767e00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000006ed00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
&Contract{interfaces: []Interface{interfaceTypeERC20, interfaceTypeERC721}},
Expand All @@ -111,19 +130,18 @@ func TestDecodeCalldata(t *testing.T) {
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
input, err := hex.DecodeString(tt.args.input)
require.NoError(t, err)
}

got, err := decodeCallData(tt.args.sender, tt.args.contract, input)
require.NoError(t, err)
func executeTests(t testing.TB, tt decodeCallDataTest) {
input, err := hex.DecodeString(tt.args.input)
require.NoError(t, err)

gotJSON, _ := json.Marshal(got)
wantJSON, _ := json.Marshal(tt.want)
require.Equal(t, string(gotJSON), string(wantJSON))
})
}
got, err := decodeCallData(tt.args.sender, tt.args.contract, input)
require.NoError(t, err)

gotJSON, _ := json.Marshal(got)
wantJSON, _ := json.Marshal(tt.want)
require.Equal(t, string(gotJSON), string(wantJSON))
}

func parseBigInt(s string) *big.Int {
Expand Down

0 comments on commit 0506a50

Please sign in to comment.