Eject db-synthesizer and adopt cardano-config - #2141
Conversation
ba65746 to
97dac2a
Compare
| blockCountCreate > 0 @? "no blocks have been forged during create step" | ||
| resultCreate <- | ||
| DBSynthesizer.synthesize genTxs testSynthOptionsCreate epochSize chainDB protocol | ||
| resultForged resultCreate > 0 @? "no blocks have been forged during create step" |
There was a problem hiding this comment.
With the analyse step gone, this test now only checks resultForged > 0 per step, and I think it leaves the whole cardano-config parsing path (resolveNodeConfiguration, mkHardForkTriggers, mkProtocolInfo) with no in-repo caller at all, since the only remaining tool test builds the ProtocolInfo in-process. That path is the part this PR changes most.
I understand the config-driven pipeline is moving downstream. Still, could we keep a lighter check here that pins the count rather than just "> 0"? Something like asserting resultForged resultCreate equals the number of blocks we expect for 40 slots, so a regression in the forging loop does not slip through.
There was a problem hiding this comment.
I am not sure if that number is even deterministic
97dac2a to
9c97459
Compare
13f3edd to
488f7a4
Compare
Replace db-analyser's locally-implemented CardanoConfig JSON parser with the shared cardano-config package. The genesis file paths, byron network magic, genesis hashes and hard-fork triggers are now read from cardano-config's NodeConfigurationFromFile, with small boundary conversions for the hash/network-magic representations. db-immutaliser reuses this path via CardanoBlockArgs, so it migrates too. No behavioural change: the tools-test integration test (synthesise -> immutalise -> analyse) still passes with matching block counts.
Replace db-synthesizer's locally-implemented config parser with the shared cardano-config package. 'initialize' now parses the node config with cardano-config and adapts it into the Node*ProtocolConfiguration records that mkConsensusProtocolCardano consumes: byron-era settings, genesis file paths (including Dijkstra via the testing config's experimental genesis) and the hard-fork triggers. Removes the local parser entirely: the NodeConfigStub type, the FromJSON/AdjustFilePaths orphan instances (Orphans.hs) and the confConfigStub field. Forging credentials still come from the tool's own CLI NodeCredentials; the byron software version is hard-coded, mirroring the node, since cardano-config does not model it. tools-test still passes (synthesise -> immutalise -> analyse).
…utable Reshape 'synthesize' to accept the (ProtocolInfo, block-forgers) pair produced by 'protocolInfoCardano', plus the forge options, epoch size and ChainDB directory directly. Constructing the protocol from a node configuration is now the caller's responsibility, so 'synthesize' no longer touches CardanoProtocolParams or the configuration filesystem. Also remove the standalone db-synthesizer executable (app + CLI parser + cabal stanza); it will be provided downstream. The tools-test integration test now builds the protocol itself (initialize + protocolInfoCardano) and still exercises the full synthesise -> immutalise -> analyse pipeline. No behavioural change; tools-test still passes.
With the config parsing now handled by cardano-config and synthesize taking a ready-made ProtocolInfo, db-synthesizer no longer needs the vendored node/api machinery in-repo. Remove it entirely: - 'initialize' and its adapters (the genesis/credential reading and protocol assembly) leave; they belong downstream, built on cardano-api. - Delete the vendored Cardano.Api.*, Cardano.Node.Protocol.* and Cardano.Node.Types modules (no remaining consumers), and prune the now-unused build-depends (base16-bytestring, cardano-crypto, transformers-except). - Trim DBSynthesizer.Types to the node/api-free option types. The tools-test integration test becomes synthesis-only: it builds a forging-capable protocol via the testlib (new mkSimpleTestProtocolInfoForging, which also returns the block forgers and genesis) instead of a node configuration file, and forges within the testlib's KES validity window. The config-driven synthesise -> immutalise -> analyse pipeline (and the executable) move downstream. Drop the now-unused config fixtures. All tool executables, cardano-test and tools-test still build and pass.
--in-mem/--lsm are now optional; when neither is given, the backend and its settings come from the LedgerDB section of the node configuration file. The protocol info and the backend are read in one go so the configuration is only resolved once.
Exports every snapshot taken with --store-ledger into <db>/lsm-exported.
488f7a4 to
81e4645
Compare
This PR removes the vendored parser for cardano configuration and instead makes use of cardano-config.
We also eject db-synthesizer which will need to be implemented downstream (cardano-api? ouroboros-consensus-tools?)