From 1fd2cfef622824e59daa3407f8e6afc8a15ade10 Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Mon, 1 Jun 2020 16:48:24 +0200 Subject: [PATCH] ncli_db: add validation flag, better ux --- ncli/ncli_db.nim | 82 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 25 deletions(-) diff --git a/ncli/ncli_db.nim b/ncli/ncli_db.nim index 7fd7e240b..10786e155 100644 --- a/ncli/ncli_db.nim +++ b/ncli/ncli_db.nim @@ -1,7 +1,7 @@ -import + import confutils, stats, chronicles, strformat, tables, ../beacon_chain/block_pool, - ../beacon_chain/spec/[crypto, datatypes], + ../beacon_chain/spec/[crypto, datatypes, helpers], ../beacon_chain/[beacon_chain_db, extras, state_transition, ssz], ../research/simutils, eth/db/[kvstore, kvstore_sqlite3] @@ -11,13 +11,35 @@ type Timers = enum tLoadBlock = "Load block from database" tLoadState = "Load state from database" tApplyBlock = "Apply block" + tApplyEpochBlock = "Apply epoch block" -cli do(databaseDir: string, cmd: string): +type + DbCmd* = enum + bench + + DbConf = object + databaseDir* {. + defaultValue: "" + desc: "Directory where `nbc.sqlite` is stored" + name: "db" }: InputDir + + case cmd* {. + command + desc: "Run benchmark by applying all blocks from database" + .}: DbCmd + + of bench: + validate* {. + defaultValue: true + desc: "Enable BLS validation" }: bool + +proc cmdBench(conf: DbConf) = var timers: array[Timers, RunningStat] echo "Opening database..." let - db = BeaconChainDB.init(kvStore SqStoreRef.init(databaseDir, "nbc").tryGet()) + db = BeaconChainDB.init( + kvStore SqStoreRef.init(conf.databaseDir.string, "nbc").tryGet()) if not BlockPool.isInitialized(db): echo "Database not initialized" @@ -29,30 +51,40 @@ cli do(databaseDir: string, cmd: string): echo &"Loaded {pool.blocks.len} blocks, head slot {pool.head.blck.slot}" - case cmd - of "bench": - var - blockRefs: seq[BlockRef] - blocks: seq[SignedBeaconBlock] - cur = pool.head.blck + var + blockRefs: seq[BlockRef] + blocks: seq[SignedBeaconBlock] + cur = pool.head.blck - while cur != nil: - blockRefs.add cur - cur = cur.parent + while cur != nil: + blockRefs.add cur + cur = cur.parent - for b in 1..