From 4c48244cbbaefd2b5f66eeeb783b05b8d523f971 Mon Sep 17 00:00:00 2001 From: andri lim Date: Tue, 24 Sep 2019 20:18:48 +0700 Subject: [PATCH] fixes debugger --- tests/test_blockchain_json.nim | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/tests/test_blockchain_json.nim b/tests/test_blockchain_json.nim index e19abee63..06189d51b 100644 --- a/tests/test_blockchain_json.nim +++ b/tests/test_blockchain_json.nim @@ -49,6 +49,7 @@ type debugMode: bool trace: bool vmState: BaseVMState + debugData: JsonNode MiningHeader* = object parentHash*: Hash256 @@ -528,11 +529,22 @@ func shouldCheckSeal(tester: Tester): bool = if tester.sealEngine.isSome: result = tester.sealEngine.get() != NoProof +proc collectDebugData(tester: var Tester) = + let vmState = tester.vmState + let tracingResult = if tester.trace: vmState.getTracingResult() else: %[] + tester.debugData.add %{ + "blockNumber": %($vmState.blockNumber), + "structLogs": tracingResult, + } + proc runTester(tester: var Tester, chainDB: BaseChainDB, testStatusIMPL: var TestStatus) = discard chainDB.persistHeaderToDb(tester.genesisBlockHeader) check chainDB.getCanonicalHead().blockHash == tester.genesisBlockHeader.blockHash let checkSeal = tester.shouldCheckSeal + if tester.debugMode: + tester.debugData = newJArray() + for idx, testerBlock in tester.blocks: let shouldBeGoodBlock = testerBlock.blockHeader.isSome @@ -552,6 +564,9 @@ proc runTester(tester: var Tester, chainDB: BaseChainDB, testStatusIMPL: var Tes # Block should have caused a validation error check noError == false + if tester.debugMode: + tester.collectDebugData() + proc dumpAccount(accountDb: ReadOnlyStateDB, address: EthAddress, name: string): JsonNode = result = %{ "name": %name, @@ -572,9 +587,8 @@ proc dumpDebugData(tester: Tester, fixture: JsonNode, fixtureName: string, fixtu accounts[$account] = dumpAccount(vmState.readOnlyStateDB, account, "acc" & $i) inc i - let tracingResult = if tester.trace: vmState.getTracingResult() else: %[] let debugData = %{ - "structLogs": tracingResult, + "debugData": tester.debugData, "accounts": accounts }