diff options
author | chriseth <chris@ethereum.org> | 2018-12-13 01:41:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-13 01:41:35 +0800 |
commit | 17bf164afeb067d3570f0d253f059be6fb3aac4b (patch) | |
tree | b16b078a99ef5567f0781944c1e7e8463b49b2df | |
parent | 1c8c8734654a4bea8270beff7e1a295323002af3 (diff) | |
parent | 123d33ad41b1dea43d7b6aee4b31bc6cf373bf4a (diff) | |
download | dexon-solidity-17bf164afeb067d3570f0d253f059be6fb3aac4b.tar dexon-solidity-17bf164afeb067d3570f0d253f059be6fb3aac4b.tar.gz dexon-solidity-17bf164afeb067d3570f0d253f059be6fb3aac4b.tar.bz2 dexon-solidity-17bf164afeb067d3570f0d253f059be6fb3aac4b.tar.lz dexon-solidity-17bf164afeb067d3570f0d253f059be6fb3aac4b.tar.xz dexon-solidity-17bf164afeb067d3570f0d253f059be6fb3aac4b.tar.zst dexon-solidity-17bf164afeb067d3570f0d253f059be6fb3aac4b.zip |
Merge pull request #4951 from ethereum/alethUpdates
Use current aleth release for testing.
-rw-r--r-- | docs/contributing.rst | 4 | ||||
-rwxr-xr-x | scripts/tests.sh | 21 | ||||
-rw-r--r-- | test/RPCSession.cpp | 35 | ||||
-rw-r--r-- | test/RPCSession.h | 3 | ||||
-rw-r--r-- | test/libsolidity/GasMeter.cpp | 12 | ||||
-rw-r--r-- | test/libsolidity/SolidityEndToEndTest.cpp | 3 | ||||
-rwxr-xr-x | test/solcjsTests.sh | 2 |
7 files changed, 20 insertions, 60 deletions
diff --git a/docs/contributing.rst b/docs/contributing.rst index 12dea7d1..47d0d070 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -90,7 +90,7 @@ The option ``--no-smt`` disables the tests that require ``libz3`` and ``--no-ipc`` disables those that require ``aleth``. If you want to run the ipc tests (that test the semantics of the generated code), -you need to install `aleth <https://github.com/ethereum/cpp-ethereum/releases/download/solidityTester/aleth_2018-06-20_artful>`_ and run it in testing mode: ``aleth --test -d /tmp/testeth`` (make sure to rename it). +you need to install `aleth <https://github.com/ethereum/aleth/releases/download/v1.5.0-alpha.7/aleth-1.5.0-alpha.7-linux-x86_64.tar.gz>`_ and run it in testing mode: ``aleth --test -d /tmp/testeth`` (make sure to rename it). To run the actual tests, use: ``./scripts/soltest.sh --ipcpath /tmp/testeth/geth.ipc``. @@ -124,7 +124,7 @@ The CI runs additional tests (including ``solc-js`` and testing third party Soli You can not use some versions of ``aleth`` for testing. We suggest using the same version that the Solidity continuous integration tests use. - Currently the CI uses ``d661ac4fec0aeffbedcdc195f67f5ded0c798278`` of ``aleth``. + Currently the CI uses version ``1.5.0-alpha.7`` of ``aleth``. Writing and running syntax tests -------------------------------- diff --git a/scripts/tests.sh b/scripts/tests.sh index c284c05c..1a8a32cf 100755 --- a/scripts/tests.sh +++ b/scripts/tests.sh @@ -130,21 +130,14 @@ function download_aleth() elif [ -z $CI ]; then ALETH_PATH="aleth" else - # Any time the hash is updated here, the "Running compiler tests" section should also be updated. mkdir -p /tmp/test - if grep -i trusty /etc/lsb-release >/dev/null 2>&1 - then - # built from d661ac4fec0aeffbedcdc195f67f5ded0c798278 at 2018-06-20 - ALETH_BINARY=aleth_2018-06-20_trusty - ALETH_HASH="54b8a5455e45b295e3a962f353ff8f1580ed106c" - else - # built from d661ac4fec0aeffbedcdc195f67f5ded0c798278 at 2018-06-20 - ALETH_BINARY=aleth_2018-06-20_artful - ALETH_HASH="02e6c4b3d98299885e73f7db6c9e3fbe3d66d444" - fi - ALETH_PATH="/tmp/test/aleth" - wget -q -O $ALETH_PATH https://github.com/ethereum/cpp-ethereum/releases/download/solidityTester/$ALETH_BINARY - test "$(shasum $ALETH_PATH)" = "$ALETH_HASH $ALETH_PATH" + # Any time the hash is updated here, the "Running compiler tests" section should also be updated. + ALETH_HASH="8ce2f00539d2fd8b5f093d854c6999424f7494ff" + ALETH_VERSION=1.5.0-alpha.7 + wget -q -O /tmp/test/aleth.tar.gz https://github.com/ethereum/aleth/releases/download/v${ALETH_VERSION}/aleth-${ALETH_VERSION}-linux-x86_64.tar.gz + test "$(shasum /tmp/test/aleth.tar.gz)" = "$ALETH_HASH /tmp/test/aleth.tar.gz" + tar -xf /tmp/test/aleth.tar.gz -C /tmp/test + ALETH_PATH="/tmp/test/bin/aleth" sync chmod +x $ALETH_PATH sync # Otherwise we might get a "text file busy" error diff --git a/test/RPCSession.cpp b/test/RPCSession.cpp index 0aae21a7..60848118 100644 --- a/test/RPCSession.cpp +++ b/test/RPCSession.cpp @@ -296,40 +296,7 @@ void RPCSession::test_mineBlocks(int _number) { u256 startBlock = fromBigEndian<u256>(fromHex(rpcCall("eth_blockNumber").asString())); BOOST_REQUIRE(rpcCall("test_mineBlocks", { to_string(_number) }, true) == true); - - // We auto-calibrate the time it takes to mine the transaction. - // It would be better to go without polling, but that would probably need a change to the test client - - auto startTime = std::chrono::steady_clock::now(); - unsigned sleepTime = m_sleepTime; - size_t tries = 0; - for (; ; ++tries) - { - std::this_thread::sleep_for(chrono::milliseconds(sleepTime)); - auto endTime = std::chrono::steady_clock::now(); - unsigned timeSpent = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count(); - if (timeSpent > m_maxMiningTime) - BOOST_FAIL("Error in test_mineBlocks: block mining timeout!"); - if (fromBigEndian<u256>(fromHex(rpcCall("eth_blockNumber").asString())) >= startBlock + _number) - break; - else - sleepTime *= 2; - } - if (tries > 1) - { - m_successfulMineRuns = 0; - m_sleepTime += 2; - } - else if (tries == 1) - { - m_successfulMineRuns++; - if (m_successfulMineRuns > 5) - { - m_successfulMineRuns = 0; - if (m_sleepTime > 2) - m_sleepTime--; - } - } + BOOST_REQUIRE(fromBigEndian<u256>(fromHex(rpcCall("eth_blockNumber").asString())) == startBlock + _number); } void RPCSession::test_modifyTimestamp(size_t _timestamp) diff --git a/test/RPCSession.h b/test/RPCSession.h index 6e1391b4..92f9da4a 100644 --- a/test/RPCSession.h +++ b/test/RPCSession.h @@ -136,9 +136,6 @@ private: IPCSocket m_ipcSocket; size_t m_rpcSequence = 1; - unsigned m_maxMiningTime = 6000000; // 600 seconds - unsigned m_sleepTime = 10; // 10 milliseconds - unsigned m_successfulMineRuns = 0; bool m_receiptHasStatusField = false; std::vector<std::string> m_accounts; diff --git a/test/libsolidity/GasMeter.cpp b/test/libsolidity/GasMeter.cpp index 5535bd74..12c22604 100644 --- a/test/libsolidity/GasMeter.cpp +++ b/test/libsolidity/GasMeter.cpp @@ -62,7 +62,7 @@ public: ); } - void testCreationTimeGas(string const& _sourceCode) + void testCreationTimeGas(string const& _sourceCode, u256 const& _tolerance = u256(0)) { compileAndRun(_sourceCode); auto state = make_shared<KnownState>(); @@ -75,12 +75,13 @@ public: gas += gasForTransaction(m_compiler.object(m_compiler.lastContractName()).bytecode, true); BOOST_REQUIRE(!gas.isInfinite); - BOOST_CHECK_EQUAL(gas.value, m_gasUsed); + BOOST_CHECK_LE(m_gasUsed, gas.value); + BOOST_CHECK_LE(gas.value - _tolerance, m_gasUsed); } /// Compares the gas computed by PathGasMeter for the given signature (but unknown arguments) /// against the actual gas usage computed by the VM on the given set of argument variants. - void testRunTimeGas(string const& _sig, vector<bytes> _argumentVariants) + void testRunTimeGas(string const& _sig, vector<bytes> _argumentVariants, u256 const& _tolerance = u256(0)) { u256 gasUsed = 0; GasMeter::GasConsumption gas; @@ -98,7 +99,8 @@ public: _sig ); BOOST_REQUIRE(!gas.isInfinite); - BOOST_CHECK_EQUAL(gas.value, m_gasUsed); + BOOST_CHECK_LE(m_gasUsed, gas.value); + BOOST_CHECK_LE(gas.value - _tolerance, m_gasUsed); } static GasMeter::GasConsumption gasForTransaction(bytes const& _data, bool _isCreation) @@ -186,7 +188,7 @@ BOOST_AUTO_TEST_CASE(updating_store) } } )"; - testCreationTimeGas(sourceCode); + testCreationTimeGas(sourceCode, m_evmVersion < EVMVersion::constantinople() ? u256(0) : u256(9600)); } BOOST_AUTO_TEST_CASE(branches) diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index dfa60fc5..8d219d16 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -3039,7 +3039,8 @@ BOOST_AUTO_TEST_CASE(gaslimit) } )"; compileAndRun(sourceCode); - ABI_CHECK(callContractFunction("f()"), encodeArgs(gasLimit())); + auto result = callContractFunction("f()"); + ABI_CHECK(result, encodeArgs(gasLimit())); } BOOST_AUTO_TEST_CASE(gasprice) diff --git a/test/solcjsTests.sh b/test/solcjsTests.sh index e0bbc5df..b9224862 100755 --- a/test/solcjsTests.sh +++ b/test/solcjsTests.sh @@ -60,7 +60,7 @@ DIR=$(mktemp -d) # Update version (needed for some tests) echo "Updating package.json to version $VERSION" - npm version --no-git-tag-version $VERSION + npm version --allow-same-version --no-git-tag-version $VERSION echo "Running solc-js tests..." npm run test |