diff --git a/engine/common/rpc/convert/execution_data.go b/engine/common/rpc/convert/execution_data.go index 1e9c6031b2c..21d2297e16a 100644 --- a/engine/common/rpc/convert/execution_data.go +++ b/engine/common/rpc/convert/execution_data.go @@ -153,8 +153,8 @@ func TrieUpdateToMessage(t *ledger.TrieUpdate) (*entities.TrieUpdate, error) { } paths := make([][]byte, len(t.Paths)) - for i, path := range t.Paths { - paths[i] = path[:] + for i := range t.Paths { + paths[i] = t.Paths[i][:] } payloads := make([]*entities.Payload, len(t.Payloads)) diff --git a/engine/common/rpc/convert/execution_data_test.go b/engine/common/rpc/convert/execution_data_test.go index 2ebfd915c28..59c136c5b8a 100644 --- a/engine/common/rpc/convert/execution_data_test.go +++ b/engine/common/rpc/convert/execution_data_test.go @@ -7,12 +7,13 @@ import ( "github.com/stretchr/testify/require" "github.com/onflow/flow-go/engine/common/rpc/convert" + "github.com/onflow/flow-go/ledger/common/testutils" "github.com/onflow/flow-go/model/flow" "github.com/onflow/flow-go/module/executiondatasync/execution_data" "github.com/onflow/flow-go/utils/unittest" ) -func TestConvertBlockExecutionData1(t *testing.T) { +func TestConvertBlockExecutionData(t *testing.T) { t.Parallel() chain := flow.Testnet.Chain() // this is used by the AddressFixture @@ -21,7 +22,12 @@ func TestConvertBlockExecutionData1(t *testing.T) { chunks := 5 chunkData := make([]*execution_data.ChunkExecutionData, 0, chunks) for i := 0; i < chunks-1; i++ { - chunkData = append(chunkData, unittest.ChunkExecutionDataFixture(t, execution_data.DefaultMaxBlobSize/5, unittest.WithChunkEvents(events))) + ced := unittest.ChunkExecutionDataFixture(t, + 0, // updates set explicitly to target 160-320KB per chunk + unittest.WithChunkEvents(events), + unittest.WithTrieUpdate(testutils.TrieUpdateFixture(5, 32*1024, 64*1024)), + ) + chunkData = append(chunkData, ced) } makeServiceTx := func(ced *execution_data.ChunkExecutionData) { // proposal key and payer are empty addresses for service tx @@ -46,6 +52,7 @@ func TestConvertBlockExecutionData1(t *testing.T) { require.NoError(t, err) assert.Equal(t, chunkData[0], chunkReConverted) + assert.True(t, chunkData[0].TrieUpdate.Equals(chunkReConverted.TrieUpdate)) }) t.Run("block execution data conversions", func(t *testing.T) { @@ -56,5 +63,12 @@ func TestConvertBlockExecutionData1(t *testing.T) { require.NoError(t, err) assert.Equal(t, blockData, converted) + for i, chunk := range blockData.ChunkExecutionDatas { + if chunk.TrieUpdate == nil { + assert.Nil(t, converted.ChunkExecutionDatas[i].TrieUpdate) + } else { + assert.True(t, chunk.TrieUpdate.Equals(converted.ChunkExecutionDatas[i].TrieUpdate)) + } + } }) } diff --git a/utils/unittest/fixtures.go b/utils/unittest/fixtures.go index 999f090232b..e69a263ce6d 100644 --- a/utils/unittest/fixtures.go +++ b/utils/unittest/fixtures.go @@ -2472,12 +2472,18 @@ func WithChunkEvents(events flow.EventsList) func(*execution_data.ChunkExecution } } +func WithTrieUpdate(trieUpdate *ledger.TrieUpdate) func(*execution_data.ChunkExecutionData) { + return func(conf *execution_data.ChunkExecutionData) { + conf.TrieUpdate = trieUpdate + } +} + func ChunkExecutionDataFixture(t *testing.T, minSize int, opts ...func(*execution_data.ChunkExecutionData)) *execution_data.ChunkExecutionData { collection := CollectionFixture(5) ced := &execution_data.ChunkExecutionData{ Collection: &collection, Events: flow.EventsList{}, - TrieUpdate: testutils.TrieUpdateFixture(1, 1, 8), + TrieUpdate: testutils.TrieUpdateFixture(2, 1, 8), } for _, opt := range opts {