Skip to content

Commit

Permalink
clean: Move TotalComputationResources() related code to v7 pkg only
Browse files Browse the repository at this point in the history
  • Loading branch information
hudem1 committed Feb 25, 2025
1 parent 172b3a6 commit 5c41296
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 112 deletions.
2 changes: 1 addition & 1 deletion rpc/v7/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func (t *TransactionTrace) allInvocations() []*FunctionInvocation {
}, func(i *FunctionInvocation) bool { return i == nil })
}

func (t *TransactionTrace) totalComputationResources() ComputationResources {
func (t *TransactionTrace) TotalComputationResources() ComputationResources {
total := ComputationResources{}

for _, invocation := range t.allInvocations() {
Expand Down
97 changes: 97 additions & 0 deletions rpc/v7/helpers_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package rpcv7_test

import (
"testing"

rpcv7 "github.com/NethermindEth/juno/rpc/v7"
"github.com/stretchr/testify/require"
)

func TestTotalExecutionResources(t *testing.T) {
resources := &rpcv7.ComputationResources{
Steps: 1,
MemoryHoles: 2,
Pedersen: 3,
RangeCheck: 4,
Bitwise: 5,
Ecdsa: 6,
EcOp: 7,
Keccak: 8,
Poseidon: 9,
SegmentArena: 10,
}

tests := map[string]struct {
multiplier uint64
trace *rpcv7.TransactionTrace
}{
"many top-level invocations": {
multiplier: 5,
trace: &rpcv7.TransactionTrace{
ValidateInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
},
FunctionInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
},
ConstructorInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
},
ExecuteInvocation: &rpcv7.ExecuteInvocation{
FunctionInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
},
},
FeeTransferInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
},
},
},
"only validate invocation": {
multiplier: 1,
trace: &rpcv7.TransactionTrace{
ValidateInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
},
},
},
"present in some sub-calls": {
multiplier: 2,
trace: &rpcv7.TransactionTrace{
ValidateInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
Calls: []rpcv7.FunctionInvocation{
{
ExecutionResources: resources,
},
},
},
FunctionInvocation: &rpcv7.FunctionInvocation{
ExecutionResources: resources,
Calls: []rpcv7.FunctionInvocation{
{
ExecutionResources: resources,
},
},
},
},
},
}

for description, test := range tests {
t.Run(description, func(t *testing.T) {
require.Equal(t, rpcv7.ComputationResources{
Steps: resources.Steps * test.multiplier,
MemoryHoles: resources.MemoryHoles * test.multiplier,
Pedersen: resources.Pedersen * test.multiplier,
RangeCheck: resources.RangeCheck * test.multiplier,
Bitwise: resources.Bitwise * test.multiplier,
Ecdsa: resources.Ecdsa * test.multiplier,
EcOp: resources.EcOp * test.multiplier,
Keccak: resources.Keccak * test.multiplier,
Poseidon: resources.Poseidon * test.multiplier,
SegmentArena: resources.SegmentArena * test.multiplier,
}, test.trace.TotalComputationResources())
})
}
}
2 changes: 1 addition & 1 deletion rpc/v7/simulation.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func (h *Handler) simulateTransactions(id BlockID, transactions []BroadcastedTra

// Add execution resources on the trace root level (from all the fct invocations)
trace.ExecutionResources = &ExecutionResources{
ComputationResources: trace.totalComputationResources(),
ComputationResources: trace.TotalComputationResources(),
DataAvailability: &DataAvailability{
L1Gas: daGas[i].L1Gas,
L1DataGas: daGas[i].L1DataGas,
Expand Down
4 changes: 2 additions & 2 deletions rpc/v7/trace.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func (h *Handler) traceBlockTransactions(ctx context.Context, block *core.Block)
da := txDataAvailability[*trace.TransactionHash]

trace.TraceRoot.ExecutionResources = &ExecutionResources{
ComputationResources: trace.TraceRoot.totalComputationResources(),
ComputationResources: trace.TraceRoot.TotalComputationResources(),
DataAvailability: &da,
}
}
Expand Down Expand Up @@ -253,7 +253,7 @@ func (h *Handler) traceBlockTransactions(ctx context.Context, block *core.Block)

// Add root level execution resources
trace.ExecutionResources = &ExecutionResources{
ComputationResources: trace.totalComputationResources(),
ComputationResources: trace.TotalComputationResources(),
DataAvailability: &DataAvailability{
L1Gas: executionResult.DataAvailability[index].L1Gas,
L1DataGas: executionResult.DataAvailability[index].L1DataGas,
Expand Down
18 changes: 0 additions & 18 deletions vm/trace.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,24 +122,6 @@ func (t *TransactionTrace) allInvocations() []*FunctionInvocation {
}, func(i *FunctionInvocation) bool { return i == nil })
}

func (t *TransactionTrace) TotalComputationResources() ComputationResources {
total := ComputationResources{}
for _, invocation := range t.allInvocations() {
r := invocation.ExecutionResources
total.Pedersen += r.Pedersen
total.RangeCheck += r.RangeCheck
total.Bitwise += r.Bitwise
total.Ecdsa += r.Ecdsa
total.EcOp += r.EcOp
total.Keccak += r.Keccak
total.Poseidon += r.Poseidon
total.SegmentArena += r.SegmentArena
total.MemoryHoles += r.MemoryHoles
total.Steps += r.Steps
}
return total
}

func (t *TransactionTrace) RevertReason() string {
if t.ExecuteInvocation == nil {
return ""
Expand Down
90 changes: 0 additions & 90 deletions vm/trace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,96 +138,6 @@ func TestAllMessages(t *testing.T) {
}
}

func TestTotalExecutionResources(t *testing.T) {
resources := &vm.ExecutionResources{
ComputationResources: vm.ComputationResources{
Steps: 1,
MemoryHoles: 2,
Pedersen: 3,
RangeCheck: 4,
Bitwise: 5,
Ecdsa: 6,
EcOp: 7,
Keccak: 8,
Poseidon: 9,
SegmentArena: 10,
},
}
tests := map[string]struct {
multiplier uint64
trace *vm.TransactionTrace
}{
"many top-level invocations": {
multiplier: 5,
trace: &vm.TransactionTrace{
ValidateInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
},
FunctionInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
},
ConstructorInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
},
ExecuteInvocation: &vm.ExecuteInvocation{
FunctionInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
},
},
FeeTransferInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
},
},
},
"only validate invocation": {
multiplier: 1,
trace: &vm.TransactionTrace{
ValidateInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
},
},
},
"present in some sub-calls": {
multiplier: 2,
trace: &vm.TransactionTrace{
ValidateInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
Calls: []vm.FunctionInvocation{
{
ExecutionResources: resources,
},
},
},
FunctionInvocation: &vm.FunctionInvocation{
ExecutionResources: resources,
Calls: []vm.FunctionInvocation{
{
ExecutionResources: resources,
},
},
},
},
},
}

for description, test := range tests {
t.Run(description, func(t *testing.T) {
require.Equal(t, vm.ComputationResources{
Steps: resources.Steps * test.multiplier,
MemoryHoles: resources.MemoryHoles * test.multiplier,
Pedersen: resources.Pedersen * test.multiplier,
RangeCheck: resources.RangeCheck * test.multiplier,
Bitwise: resources.Bitwise * test.multiplier,
Ecdsa: resources.Ecdsa * test.multiplier,
EcOp: resources.EcOp * test.multiplier,
Keccak: resources.Keccak * test.multiplier,
Poseidon: resources.Poseidon * test.multiplier,
SegmentArena: resources.SegmentArena * test.multiplier,
}, test.trace.TotalComputationResources())
})
}
}

func TestExecuteInvocation(t *testing.T) {
tests := map[string]struct {
inv vm.ExecuteInvocation
Expand Down

0 comments on commit 5c41296

Please sign in to comment.