Commit Graph

210 Commits

Author SHA1 Message Date
andri lim 99a5eefcce simplifies code, remove globals and double layer macro, employ macrocache 2019-01-31 20:16:47 +02:00
andri lim fff049abe8 fix path again 2019-01-31 20:16:47 +02:00
andri lim c92bc7c4e4 fix path when load test data 2019-01-31 20:16:47 +02:00
andri lim 58b5aa5f39 implement macro_assembler and opcodes test suite 2019-01-31 20:16:47 +02:00
Ștefan Talpalaru 60d2867b2e disable Chronicles colors on Windows 2019-01-16 14:17:26 +02:00
Ștefan Talpalaru a431ceed11 add "--threads:on" to tests and main binary
- some "funcs" were no longer considered side-effect free, so I made
  them procs
- added {.base.} to some base methods to avoid a deprecation warning
2019-01-15 18:59:24 +02:00
andri lim fbb03fb9b2 update test data 2019-01-15 15:30:25 +02:00
Yuriy Glukhov 58ad0e472c Moved db backends to eth_trie 2019-01-13 15:31:59 +02:00
Ștefan Talpalaru 7c7260552d
rebase and various fixes
- port to new APIs
- added copyright headers
- bumped the copyright interval in modified files
- fixed tests
- reorganised imports
- normalised function names
- deleted some trailing space
- added test_rpc to all_tests
- assert() -> doAssert()
- moved the RPC port in a constant for the test suite
2019-01-06 20:19:48 +01:00
coffeepots d19a7f7c04
Add simple test for eth_estimateGas 2019-01-06 19:03:35 +01:00
coffeepots 2c1c3d6c76
Update eth_estimateGas sig for testing 2019-01-06 19:03:35 +01:00
coffeepots c2fae69318
Add assertion to check for canonical head 2019-01-06 19:03:34 +01:00
andri lim 281b7dffac implement debug_setHead 2019-01-06 13:17:08 +02:00
andri lim 74d728f962 pass additional 15 general state tests 2019-01-06 13:16:45 +02:00
andri lim 96b18cfce3 add select_backend module 2019-01-06 11:43:38 +02:00
andri lim 3a10f99694 add persistblock test 2019-01-06 11:43:38 +02:00
andri lim 5cf43c2909 implement dumpDebuggingMetaData 2019-01-06 11:43:38 +02:00
andri lim 5fc134ac2a add lmdb backend 2019-01-06 11:43:38 +02:00
andri lim a6bf970b1b some cleanup 2019-01-06 11:43:38 +02:00
andri lim 9db4e9296a add tracer test 2019-01-06 11:43:38 +02:00
andri lim 83e01994df add total count to test helpers 2018-12-26 23:45:57 +02:00
andri lim d3380f6cf0 fix test 2018-12-16 15:38:51 +02:00
Ștefan Talpalaru f91e69f7c7
more VM tracing
The existing vmState tracing is plugged into chronicles, at the TRACE
level, to facilitate state test debugging.

Some useful chronicles defines are added to "tests/nim.cfg" to simplify
the compile-and-run command for individual tests.
2018-12-12 11:47:10 +01:00
Ștefan Talpalaru 115843487c
general-state testsuite changes and better fork selection
- skipped the tests in allowedFailInCurrentBuild()
- replaced doAssert() with check() in testFixtureIndexes() so we can see
  both hash values on failure
- checking filename extension for JSON tests to avoid editor swap files
- replaced the duplicated block values in the main net's ChainConfig
  with values from forkBlocks
- allowed overriding the current fork in computations, because the old
  strategy of only looking at the block number doesn't work with JSON tests
  where the block number is usually 1
- explicitly pass the fork to gasCosts() and use it for conditional cost
  calculation
- fixed a logic error in the CREATE opcode
- fixed VM selection based on current fork in updateOpcodeExec()
- single point of control for supported forks in tests (just one fork, at the
  moment)
- 44 new test failures (that were probably passing for the wrong reasons)
2018-12-07 18:18:29 +01:00
coffeepots 86853ea97c
Merge pull request #187 from status-im/modexp-fixes
Modexp fixes
2018-12-06 10:10:59 +00:00
andri lim c954dc7d62 fix tests 2018-12-05 22:01:29 +07:00
mratsim 4d07d99f66 Add precompiles to all tests to prevent regressions 2018-12-04 16:32:11 +01:00
mratsim f50bb57eb6 Reactivate the precompiles test + consume gas 2018-12-04 15:52:59 +01:00
mratsim 29f8a8a066 modExp fixed! 2018-12-04 15:46:33 +01:00
mratsim 949c5a1dc6 Modexp fix example 1 (returned to early for ints of length 1) 2018-12-04 12:49:48 +01:00
coffeepots 184143ba65 Update return types 2018-11-28 22:27:15 +00:00
coffeepots b57427e3ee Add genesis block 2018-11-28 21:57:10 +00:00
coffeepots 3557567a1b Moch test for eth_call but needs working header fetching 2018-11-26 18:16:58 +00:00
coffeepots 0899634b6d Update signatures for eth_call 2018-11-26 18:13:24 +00:00
coffeepots f7d858d58b Add missing .json 2018-11-13 19:45:34 +00:00
coffeepots 6dcb639e64 Add 32 bit failures to GST CI exclusion 2018-11-13 19:45:34 +00:00
coffeepots e5551bb3f7 Update memDB/chain use with eth_trie changes 2018-11-13 19:45:34 +00:00
coffeepots eceaa58ebb Update failing tests list 2018-11-13 19:45:34 +00:00
coffeepots f99138dca6 Merge branch 'call-fixes-precompiles' 2018-11-12 15:57:54 +00:00
coffeepots 0366dd47d9 Remove irrelevant comments 2018-11-08 18:54:21 +00:00
Dustin Brody 5095bfa8d8 add missing module import 2018-10-19 09:42:32 -07:00
Zahary Karadjov 41adca1abb Minimal changes required for building the LES branch 2018-10-16 03:10:01 +03:00
coffeepots 4ca4a859ad Remove bogus sha256 tests 2018-10-10 18:47:54 +01:00
coffeepots e53222c7ab Test suite for precompiles 2018-10-10 17:27:00 +01:00
coffeepots 7c778867a2 Allow simpler json files to be processed, add dir sep for echo 2018-10-10 17:26:32 +01:00
coffeepots 2ee9861a9e Precompile test data 2018-10-10 17:25:54 +01:00
Zahary Karadjov 343cc4fa43 Populate the persistent databases with the empty RLP key.
Also implements transactional block persistence. Two issues
in the transaction processing code have been discovered that
might affect other usages such as the CALL instruction.

The main fix gets us past block 49000.

You may need to clean up your database.
2018-10-05 03:36:48 +03:00
Dustin Brody 7459650663 only disable 32-bit-failing tests in 32-bit builds 2018-10-04 17:52:58 +00:00
Dustin Brody 7aa0c386dd some simplification and cleanup 2018-10-04 17:52:58 +00:00
coffeepots e2087f0922 Remove precompile hash table 2018-10-02 15:55:28 +01:00
tersec 4f04332205
Refactor contract creation into transaction code from P2P code; get 14 new GSTs working (#163)
* checkpoint where refactoring and calling from GST runner doesn't break anything

* 14 new GSTs pass by refactoring contract creation out of p2p/chain and using from GST test runner

* 2 of 14 new tests fail in 32-bit builds

* switch from CREATE_CONTRACT_ADDRESS to isContractCreation

* switch another CREATE_CONTRACT_ADDRESS to isContactCreation
2018-09-29 15:36:42 +00:00
tersec d4e95fae94
refactor aspects of transaction processing out of GeneralStateTests handler; get p2p/chain runnning through block 48680; combine/deduplicate two different but equivalent methods of caulculating transaction intrinsic gas cost; fix BaseTransaction references to just Transaction references in hitherto unreferenced stubbed out source so it builds; clean up some imports from refactoring (#161) 2018-09-27 19:09:26 +00:00
Zahary Karadjov 74f6f0b738 Deal with the refactoring in status-im/nim-rlp#20 2018-09-26 12:58:23 +03:00
Zahary Karadjov 4e323df363 Implement a --datadir command-line options
By default, the database files will be written in the
platform-specific application data folder:

$HOME/AppData/Roaming/Nimbus/DB
$HOME/Library/Application Support/Nimbus/DB
$HOME/.cache/nimbus/db
2018-09-25 02:06:20 +03:00
Dustin Brody c468bcd713 clean up VMTests and remove some scaffolding 2018-09-24 21:46:53 +03:00
tersec 690ce2cf97
Partly fix state_db getCode for 20 new working GeneralStateTests (#156)
* partly fix state_db getCode to get 20 new working GeneralStateTests; remove 2 functions which existed as workarounds; switch all remaining setBalance calls in GeneralStateTestRunner to subBalance (addBalance calls already changed)

* two of the 20 new tests don't work in 32-bit builds
2018-09-20 21:36:57 +00:00
Dustin Brody 8e231b566c
set to allow-fail another dozen or so tests which have 32-bit issues and integrate with CI (#154) 2018-09-19 17:57:45 +00:00
Dustin Brody 8f4e1a4445
integrate GeneralStateTest runner into CI with 775 running tests (#153)
* fix 32-bit issue in AppVeyor

* allow another dozen or so GeneralStateTest fixtures which work on 64-bit, but not on 32-bit platforms, to safely-fail, but demarcate them separately to facilitate debugging

* steal fa672600eb from @coffeepots fix-int32-high-zero branch
2018-09-19 16:46:14 +00:00
Yuriy Glukhov 0adfaf0f31 s/increaseBalance/addBalance 2018-09-19 18:41:17 +03:00
Yuriy Glukhov 75f973e654 Fixed test 2018-09-19 18:41:17 +03:00
Dustin Brody 048921b045 20 new working GeneralStateTests 2018-09-18 14:00:30 +00:00
coffeepots 4f03c9cf2a
Merge pull request #139 from status-im/callOpCodeWork
Flesh out call op
2018-09-18 14:09:00 +01:00
coffeepots 4a944398c9 More newMemoryDb updates 2018-09-18 12:18:59 +01:00
coffeepots 760e4f9685 Adjust trie creation to properly init transactional tries 2018-09-18 12:02:34 +01:00
Dustin Brody fe761cd4ff 14 additional GeneralStateTests and clean up some empty hex string parsing kludginess 2018-09-17 13:41:32 +00:00
Dustin Brody beb1befc6e 13 additional GeneralStateTests working; remove commented auto-ported Py-EVM validations which are implicit in UInt256; address comments to last commit (toSeq, hoising vmState.readOnlyStateDB, deltaBalance -> increaseBalance) 2018-09-17 13:41:32 +00:00
Dustin Brody 7ba90fda54
48 new working GeneralStateTests, via fixing some overflows/underflows, creating a rudimentary balance commit/revert scheme, and implementing account deletion for the selfdestruct instruction (#146) 2018-09-14 13:43:40 +00:00
Dustin Brody 22882edf4d
get 106 more generalstatetests working by detecting computation errors and allowing empty code accounts (#145) 2018-09-13 15:00:23 +00:00
Dustin Brody 3cc7e9d8fd
skip 1000+ tests which either are slow (quadratic tests) or don't support Homestead; add ~50 new working tests (#143) 2018-09-12 16:33:53 +00:00
Yuriy Glukhov 62260c786d Caching DB backend 2018-09-12 17:53:15 +03:00
Dustin Brody 00c4df6153
detect erronous transactions and roll back to previous state, without refunding any gas, per yellow paper (#141) 2018-09-11 13:15:59 +00:00
Dustin Brody e24f7fe144 unskip some other (failing) tests 2018-09-10 19:42:45 +03:00
Dustin Brody fd07d6fed1 A simple/basic GeneralStateTest runner which gets 400+ of them correct 2018-09-10 19:42:45 +03:00
Yuriy Glukhov 3a1ec035b3 Various fixes towards state reconstruction 2018-09-07 14:00:37 +03:00
Dustin Brody 9e1be6438e Extract transaction senders from GeneralStateTest fixtures 2018-09-06 11:20:43 +03:00
Dustin Brody 4262ea8670 fix (1) overflow/signed confusion when reading large-valued storage entries; (2) adjust test fixture validity for GeneralStateTests; (3) remove incorrect usage of state trie for code (not codehash) storage; add ability to display state; (4) avoid double-hashing keys for already-hashed SecureHexaryTrie for storage; (5) add intentionally local workaround for empty code in GeneralStateTest fixtures lacking 0x prefix; (6) fix nonce parsing, which is always hex string in test fixtures 2018-09-04 17:55:30 +03:00
coffeepots bda219f8fe Make tests green (AccountNonce) 2018-09-02 03:26:22 +01:00
Jacek Sieka db202dc35f
replace logging module with nim-chronicles (fixes #38)
This blindly changes logging to nim-chronicles - issues that ensue:

* keeps gas cost computation logs hidden behind flag
* unclear if logScope is practical - for example, since vm is split over
many files, topics get lost when using simple top-level per-module
topics
* when passing named object around, scope should incliude the name of
the object but this is caught neither by logScope nor by dynamicLogScope
2018-08-29 16:13:03 -06:00
Yuriy Glukhov e3be8ca30a Separate Chain from ChainDB 2018-08-29 11:49:01 +03:00
coffeepots fd7062fecb Fix VMTest message creation in 32 bits, also duplicated word in comment 2018-08-17 17:16:40 +03:00
coffeepots 5cd81ef3ac Update doAssert to display the correct contents of stint values 2018-08-17 17:16:40 +03:00
coffeepots 1bf432fd46 Fix for VMTest parseHex in 32 bit 2018-08-17 17:16:40 +03:00
Dustin Brody a12b0771d6 remove superflous when true block, retained from when VMTests wasn't passing 2018-08-16 16:07:45 -04:00
coffeepots fb185b7965 Update RPC signatures 2018-08-13 19:26:34 +01:00
coffeepots 0b5d8d53be Added EthHashStr tests 2018-08-13 19:03:09 +01:00
coffeepots d1f283b004 Updated test_rpc to use EthAddressStr 2018-08-13 17:34:54 +01:00
coffeepots 6aab8b05c5 Included tests for EthAddressStr 2018-08-13 17:34:14 +01:00
Dustin Brody 3c0d27021e
remove callcreates-handling code in VMTests harness (#102)
(1) callcreates, empirically, is always missing or empty in VMTests
(2) by policy, callcreates will not be in new VMTests
(3) the code was broken regardless, in a couple of since-removed VMTests which had non-empty callcreates
2018-08-09 21:58:51 +00:00
coffeepots ac2de74d8f Standardised test between data and quantity, added tests for "0x" 2018-08-09 13:50:49 +03:00
coffeepots a0833475d4 Rename test suite 2018-08-09 13:50:49 +03:00
coffeepots a48e1e96c5 Rename test suite 2018-08-09 13:50:49 +03:00
coffeepots f3ccd72f91 Remove redundant account creation, already done in mutateStateDb 2018-08-09 13:50:49 +03:00
coffeepots 155457d47f Basic eth node setup for RPC testing (WIP) 2018-08-09 13:50:49 +03:00
coffeepots c5514155ee Add tests for JSON RPC hex strings 2018-08-09 13:50:49 +03:00
coffeepots 79abeafa41 Setup test rpc server, initial call to eth_getBalance 2018-08-09 13:50:49 +03:00
Dustin Brody 7fd2fa6184 Run VMTests as part of nimble tests, as well as Appveyor and Travis CI 2018-08-07 13:15:56 -07:00
Dustin Brody 21fcaeb8ef add inexpensive vmPerformanceTests, especially Ackermann and Fibonacci tests; whole suite still runs in a few seconds 2018-08-07 12:24:37 -07:00
Dustin Brody ea2f3b71bf
Complete VM Test sync, with EXP(0, 0) defined as 1 now (#98) 2018-08-07 18:41:01 +00:00
Yuriy Glukhov 467a9c3d7a
Merge pull request #93 from status-im/genesis
Added genesis initialization
2018-08-06 18:02:39 +03:00
Dustin Brody 6a3fa4cb22
Merge pull request #94 from status-im/FixLog3Log4CallDataCopyRandomTestFixtures
fix assorted test fixtures which have been un-skipped
2018-08-03 21:07:36 +00:00