diff --git a/tests/vm/gh_test.go b/tests/vm/gh_test.go index 2151cf9a5b4b67181a2e21251a4a976a86c91b73..a23076b7454d43b8657df011b7e19f28a88b4205 100644 --- a/tests/vm/gh_test.go +++ b/tests/vm/gh_test.go @@ -79,10 +79,12 @@ func RunVmTest(p string, t *testing.T) { helper.CreateFileTests(t, p, &tests) for name, test := range tests { - helper.Logger.SetLogLevel(4) - if name != "TransactionNonceCheck2" { - continue - } + /* + helper.Logger.SetLogLevel(4) + if name != "log1_nonEmptyMem_logMemSize1_logMemStart31" { + continue + } + */ db, _ := ethdb.NewMemDatabase() statedb := state.New(nil, db) for addr, account := range test.Pre { @@ -159,10 +161,14 @@ func RunVmTest(p string, t *testing.T) { } if len(test.Logs) > 0 { - for i, log := range test.Logs { - genBloom := ethutil.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 64) - if !bytes.Equal(genBloom, ethutil.Hex2Bytes(log.BloomF)) { - t.Errorf("bloom mismatch") + if len(test.Logs) != len(logs) { + t.Errorf("log length mismatch. Expected %d, got %d", len(test.Logs), len(logs)) + } else { + for i, log := range test.Logs { + genBloom := ethutil.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 64) + if !bytes.Equal(genBloom, ethutil.Hex2Bytes(log.BloomF)) { + t.Errorf("bloom mismatch") + } } } } @@ -176,11 +182,6 @@ func TestVMArithmetic(t *testing.T) { RunVmTest(fn, t) } -func TestSystemOperations(t *testing.T) { - const fn = "../files/VMTests/vmSystemOperationsTest.json" - RunVmTest(fn, t) -} - func TestBitwiseLogicOperation(t *testing.T) { const fn = "../files/VMTests/vmBitwiseLogicOperationTest.json" RunVmTest(fn, t) @@ -201,6 +202,17 @@ func TestFlowOperation(t *testing.T) { RunVmTest(fn, t) } +func TestLogTest(t *testing.T) { + const fn = "../files/VMTests/vmLogTest.json" + RunVmTest(fn, t) +} + +func TestPerformance(t *testing.T) { + t.Skip() + const fn = "../files/VMTests/vmPerformance.json" + RunVmTest(fn, t) +} + func TestPushDupSwap(t *testing.T) { const fn = "../files/VMTests/vmPushDupSwapTest.json" RunVmTest(fn, t) diff --git a/vm/vm.go b/vm/vm.go index 791718fb2fb69a263d950f101213dda9f62cd501..e3b7df32933d1e32a0928fe728974efb50f7606b 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -34,7 +34,7 @@ func New(env Environment) *Vm { lt = LogTyDiff } - return &Vm{debug: false, env: env, logTy: lt, Recoverable: true} + return &Vm{debug: true, env: env, logTy: lt, Recoverable: true} } func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.Int, callData []byte) (ret []byte, err error) { @@ -56,8 +56,6 @@ func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.I err = fmt.Errorf("%v", r) - } else { - fmt.Println(me.(*state.StateObject).Storage()) } }() } @@ -668,7 +666,6 @@ func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.I } addr = ref.Address() - fmt.Printf("CREATE %X\n", addr) stack.Push(ethutil.BigD(addr)) } @@ -860,6 +857,8 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo // Stack Check, memory resize & gas phase switch op { + case PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32: + gas.Set(GasFastestStep) case SWAP1, SWAP2, SWAP3, SWAP4, SWAP5, SWAP6, SWAP7, SWAP8, SWAP9, SWAP10, SWAP11, SWAP12, SWAP13, SWAP14, SWAP15, SWAP16: n := int(op - SWAP1 + 2) stack.require(n) @@ -897,11 +896,12 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo g = GasStorageMod } gas.Set(g) - newMemSize = calcMemSize(stack.Peek(), u256(32)) case MLOAD: newMemSize = calcMemSize(stack.Peek(), u256(32)) case MSTORE8: newMemSize = calcMemSize(stack.Peek(), u256(1)) + case MSTORE: + newMemSize = calcMemSize(stack.Peek(), u256(32)) case RETURN: newMemSize = calcMemSize(stack.Peek(), stack.data[stack.Len()-2]) case SHA3: