Update ethereum/tests / Reintroduce VM debug logger with safe guard#1269
Conversation
Codecov Report
Flags with carried forward coverage won't be shown. Click here to find out more. |
|
Calling a contract with an undefined opcode as first byte of the code from here ethereum/tests#836 is currently failing, can be run with |
|
I will reintroduce the |
|
for the debug logger, could you guard it within an if clause to skip if undefined? like |
|
@ryanio is it guaranteed that this doesn't execute the string literal then? Then I can do for sure. |
|
@ryanio ok, I will do. The current guard will break in the browser though since |
|
Phew, what an impressively shitty work to re-add all this stuff one had already done months ago. 😬 So happy when I'm through with this. |
|
Ok, this is side-tracking too much and the bug here is unrelated to the 1559 changes and not really very important and in the VM for a long time. I have opened a dedicated issue which we can handle separately and will add to the skipped tests and continue here. |
|
London tests are currently all failing, see e.g. This is due to a difference in the naming of the base fee field, in the tests this is called The base fee on our side therefore defaults to |
|
Update: I've now fixed this (at least temporarily) for both state and blockchain tests. This should now provide a basis to start with the real thing and do fixes on failing tests. @ryanio @jochem-brouwer I would ask you to really prioritize this, I likely can't continue with this today any more, so that we are getting not too much into delay! Thanks! |
|
Current failing tests: State TestsRun all with: 2 failures (total 150)
Blockchain Tests10 failures (total 1275)
|
|
@holgerd77 thanks for working on this, i can help triage these bugs the rest of today after our call. i had one more idea for the debug logger guard, if we don't want to make every 1 debug line into 3 with an if statement, i just tried this experiment: const DEBUG = true
const debug = console.debug ?? createDebugLogger('vm:state')
let didRun = false
const evaluate = () => {
didRun = true
return 'hello'
}
let debugGuard = (fn: Function) => {
if (DEBUG) {
debug(fn())
}
}
debugGuard(() => `${evaluate()}`)
console.log('didRun: ', didRun)
didRun = false
debugGuard = () => {} // set to no-op
console.log('---')
debugGuard(() => `${evaluate()}`)
console.log('didRun: ', didRun)returns so what we could do is wrap all the debug with e.g. debugGuard and execute the string literal in a function that would never be called in non-debug by setting debugGuard to no-op. |
|
Failing state tests should be resolved with 8ba316d For the blockchain tests, I described the issue in further detail in ethereum/tests#837 (comment) |
ad01bdb to
e7649d7
Compare
|
rebased on master, updated ethereum-tests submodule to ethereum/tests@1bb7d82 |
e7649d7 to
5d77354
Compare
|
Rebased this. |
5d77354 to
6a04f31
Compare
|
Rebased and updated to ethereum/tests v9.0.1 |
|
This is slowly getting urgent (will add a respective label) and we should prioritize here to get the tests up and running, since So open for anyone to pick up. I've asked Dimitry on the #tooling Discord channel on the state of the |
…integrate base fee in state tests
4f32fb3 to
a5522f2
Compare
|
Rebased this on top of the new config PR #1297 |
…ogic (has simply thrown before), more execution info on state test output
1841da3 to
45b9bec
Compare
|
Ok, I guess this is working now. This needed a fix to include failed tx validation into the test runs (before it was just throwing within the test runner and going out of the test execution context), see 45b9bec. Ready for review. 😄 |
|
@alcuadrado just a note we reintroduced the vm Our benchmarks didn't seem to report a deviation but let us know in a next release if you notice any slow down. Benchmark result from this PR: |
| 'refundMax', | ||
| 'refundSSTORE', | ||
| 'CreateTransactionEOF1', | ||
| 'Opcodes_TransactionInit', |
There was a problem hiding this comment.
Oh nice, wasn't aware of these skipped tests any more.
This PR updates
ethereum/tests.It will do this two steps:
CI is run with the
type: test all hardforkslabel.