Merge pull request #222 from 8aff8265aa/fixtransactiongaslimit
Fixing transaction tests
This commit is contained in:
commit
15ea0c17c4
|
@ -18,6 +18,8 @@ import org.spongycastle.util.encoders.Hex;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
|
||||||
|
import java.lang.Long;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.ethereum.config.SystemProperties.CONFIG;
|
import static org.ethereum.config.SystemProperties.CONFIG;
|
||||||
|
@ -100,6 +102,16 @@ public class TransactionExecutor {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BigInteger startGasUsed = new BigInteger( Long.toString( this.currentBlock.getGasUsed() ) );
|
||||||
|
BigInteger startGasLimit = new BigInteger( Long.toString( this.currentBlock.getGasLimit() ) );
|
||||||
|
if( startGasUsed.add(gasLimit).compareTo( startGasLimit ) == 1) {
|
||||||
|
logger.debug("Too much gas used in this block: require={}", startGasLimit.toString());
|
||||||
|
|
||||||
|
receipt.setCumulativeGas(0);
|
||||||
|
this.receipt = receipt;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// GET TOTAL ETHER VALUE AVAILABLE FOR TX FEE
|
// GET TOTAL ETHER VALUE AVAILABLE FOR TX FEE
|
||||||
BigInteger gasPrice = new BigInteger(1, tx.getGasPrice());
|
BigInteger gasPrice = new BigInteger(1, tx.getGasPrice());
|
||||||
BigInteger gasDebit = new BigInteger(1, tx.getGasLimit()).multiply(gasPrice);
|
BigInteger gasDebit = new BigInteger(1, tx.getGasLimit()).multiply(gasPrice);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package org.ethereum.jsontestsuite;
|
package org.ethereum.jsontestsuite;
|
||||||
|
|
||||||
import org.ethereum.core.BlockchainImpl;
|
import org.ethereum.core.BlockchainImpl;
|
||||||
|
import org.ethereum.core.Block;
|
||||||
import org.ethereum.core.TransactionExecutor;
|
import org.ethereum.core.TransactionExecutor;
|
||||||
import org.ethereum.db.*;
|
import org.ethereum.db.*;
|
||||||
import org.ethereum.facade.Repository;
|
import org.ethereum.facade.Repository;
|
||||||
|
@ -82,6 +83,21 @@ public class TestRunner {
|
||||||
byte[] coinbase = testCase.getEnv().getCurrentCoinbase();
|
byte[] coinbase = testCase.getEnv().getCurrentCoinbase();
|
||||||
ProgramInvokeFactory invokeFactory = new TestProgramInvokeFactory(testCase.getEnv());
|
ProgramInvokeFactory invokeFactory = new TestProgramInvokeFactory(testCase.getEnv());
|
||||||
|
|
||||||
|
Block block = new Block(
|
||||||
|
ByteUtil.EMPTY_BYTE_ARRAY,
|
||||||
|
ByteUtil.EMPTY_BYTE_ARRAY,
|
||||||
|
coinbase,
|
||||||
|
ByteUtil.EMPTY_BYTE_ARRAY,
|
||||||
|
testCase.getEnv().getCurrentDifficulty(),
|
||||||
|
new BigInteger(1, testCase.getEnv().getCurrentNumber()).longValue(),
|
||||||
|
new BigInteger(1, testCase.getEnv().getCurrentGasLimit()).longValue(),
|
||||||
|
0L,
|
||||||
|
new BigInteger(1, testCase.getEnv().getCurrentTimestamp()).longValue(),
|
||||||
|
ByteUtil.ZERO_BYTE_ARRAY,
|
||||||
|
ByteUtil.ZERO_BYTE_ARRAY,
|
||||||
|
null, null);
|
||||||
|
|
||||||
|
blockchain.setBestBlock(block);
|
||||||
blockchain.setProgramInvokeFactory(invokeFactory);
|
blockchain.setProgramInvokeFactory(invokeFactory);
|
||||||
blockchain.startTracking();
|
blockchain.startTracking();
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,6 @@ public class GitHubStateTest {
|
||||||
public void runWithExcludedTest() throws ParseException {
|
public void runWithExcludedTest() throws ParseException {
|
||||||
|
|
||||||
Set<String> excluded = new HashSet<>();
|
Set<String> excluded = new HashSet<>();
|
||||||
|
|
||||||
|
|
||||||
String json = JSONReader.loadJSON("StateTests/stPreCompiledContracts.json");
|
String json = JSONReader.loadJSON("StateTests/stPreCompiledContracts.json");
|
||||||
GitHubJSONTestSuite.runGitHubJsonStateTest(json, excluded);
|
GitHubJSONTestSuite.runGitHubJsonStateTest(json, excluded);
|
||||||
}
|
}
|
||||||
|
@ -44,7 +42,6 @@ public class GitHubStateTest {
|
||||||
public void stInitCodeTest() throws ParseException { // [V]
|
public void stInitCodeTest() throws ParseException { // [V]
|
||||||
|
|
||||||
Set<String> excluded = new HashSet<>();
|
Set<String> excluded = new HashSet<>();
|
||||||
|
|
||||||
String json = JSONReader.loadJSON("StateTests/stInitCodeTest.json");
|
String json = JSONReader.loadJSON("StateTests/stInitCodeTest.json");
|
||||||
GitHubJSONTestSuite.runGitHubJsonStateTest(json, excluded);
|
GitHubJSONTestSuite.runGitHubJsonStateTest(json, excluded);
|
||||||
}
|
}
|
||||||
|
@ -98,10 +95,6 @@ public class GitHubStateTest {
|
||||||
public void stSystemOperationsTest() throws ParseException {
|
public void stSystemOperationsTest() throws ParseException {
|
||||||
|
|
||||||
Set<String> excluded = new HashSet<>();
|
Set<String> excluded = new HashSet<>();
|
||||||
excluded.add("createNameRegistratorZeroMem2");
|
|
||||||
excluded.add("testVMtest");
|
|
||||||
excluded.add("createWithInvalidOpcode");
|
|
||||||
excluded.add("testRandomTest");
|
|
||||||
|
|
||||||
|
|
||||||
String json = JSONReader.loadJSON("StateTests/stSystemOperationsTest.json");
|
String json = JSONReader.loadJSON("StateTests/stSystemOperationsTest.json");
|
||||||
|
@ -114,8 +107,6 @@ public class GitHubStateTest {
|
||||||
Set<String> excluded = new HashSet<>();
|
Set<String> excluded = new HashSet<>();
|
||||||
//todo: it goes OOG, because no gasLimit is given. So it does not change the state.
|
//todo: it goes OOG, because no gasLimit is given. So it does not change the state.
|
||||||
|
|
||||||
excluded.add("TransactionFromCoinbaseHittingBlockGasLimit1");
|
|
||||||
|
|
||||||
String json = JSONReader.loadJSON("StateTests/stTransactionTest.json");
|
String json = JSONReader.loadJSON("StateTests/stTransactionTest.json");
|
||||||
GitHubJSONTestSuite.runGitHubJsonStateTest(json, excluded);
|
GitHubJSONTestSuite.runGitHubJsonStateTest(json, excluded);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue