From 7f72e3432382c73cc00cebbcc629c63e7bf46935 Mon Sep 17 00:00:00 2001 From: MarcFontaine Date: Tue, 19 Jan 2021 18:37:51 +0100 Subject: [PATCH] CAD-2335 remove Mode type --- .../cardano-tx-generator.cabal | 1 + .../src/Cardano/Benchmarking/GeneratorTx.hs | 74 ++++++------ .../Benchmarking/GeneratorTx/Callback.hs | 100 +++++++++++++++ .../Cardano/Benchmarking/GeneratorTx/Era.hs | 114 +----------------- .../Benchmarking/GeneratorTx/NodeToNode.hs | 32 +---- .../src/Cardano/Benchmarking/Run.hs | 23 ++-- 6 files changed, 158 insertions(+), 186 deletions(-) create mode 100644 cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Callback.hs diff --git a/cardano-tx-generator/cardano-tx-generator.cabal b/cardano-tx-generator/cardano-tx-generator.cabal index b1e2df17..e416a5d7 100644 --- a/cardano-tx-generator/cardano-tx-generator.cabal +++ b/cardano-tx-generator/cardano-tx-generator.cabal @@ -26,6 +26,7 @@ library Cardano.Benchmarking.GeneratorTx.Benchmark Cardano.Benchmarking.GeneratorTx.Error Cardano.Benchmarking.GeneratorTx.Era + Cardano.Benchmarking.GeneratorTx.Callback Cardano.Benchmarking.GeneratorTx.Genesis Cardano.Benchmarking.GeneratorTx.NodeToNode Cardano.Benchmarking.GeneratorTx.Tx diff --git a/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx.hs b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx.hs index 0f57bf8e..02ffd2d4 100644 --- a/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx.hs +++ b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx.hs @@ -32,7 +32,7 @@ module Cardano.Benchmarking.GeneratorTx ) where import Cardano.Prelude -import Prelude (error, id) +import Prelude (error, id, String) import Control.Monad (fail) import Control.Monad.Trans.Except.Extra (left, newExceptT, right) @@ -75,12 +75,12 @@ readSigningKey = secureFunds :: forall era. IsShelleyBasedEra era => Tracer IO (TraceBenchTxSubmit TxId) -> LocalNodeConnectInfo CardanoMode CardanoBlock - -> Benchmark -> NetworkId -> ShelleyGenesis StandardShelley + -> Benchmark -> GeneratorFunds -> ExceptT TxGenError IO (SigningKey PaymentKey, [(TxIn, TxOut era)]) -secureFunds submitTracer localConnectInfo benchmark networkId genesis funds = case funds of +secureFunds submitTracer localConnectInfo networkId genesis benchmark funds = case funds of FundsGenesis keyF -> do let Benchmark{bTxFee, bInitialTTL, bInitCooldown=InitCooldown cooldown} = benchmark key <- readSigningKey keyF @@ -262,28 +262,31 @@ splitFunds -- we have 1 Cardano tx and 10 fiscal txs. runBenchmark :: forall era . (ConfigSupportsTxGen CardanoMode era, IsShelleyBasedEra era) - => Benchmark - -> Mode + => Tracer IO (TraceBenchTxSubmit TxId) + -> Tracer IO NodeToNodeSubmissionTrace + -> NetworkId + -> ConnectClient + -> Benchmark -> (SigningKey PaymentKey, [(TxIn, TxOut era)]) -> ExceptT TxGenError IO () -runBenchmark b@Benchmark{ bTargets +runBenchmark traceSubmit + traceN2N + networkId + connectClient + b@Benchmark{ bTargets , bTps , bInitCooldown=InitCooldown initCooldown } - m (fundsKey, fundsWithSufficientCoins) = do + (fundsKey, fundsWithSufficientCoins) = do let - networkId = modeNetworkIdOverridable m recipientAddress = keyAddress networkId fundsKey + traceDebug :: String -> ExceptT TxGenError IO () + traceDebug = liftIO . traceWith traceSubmit . TraceBenchTxSubDebug - liftIO . traceWith (trTxSubmit m) . TraceBenchTxSubDebug - $ "******* Tx generator: waiting " ++ show initCooldown ++ "s *******" + traceDebug $ "******* Tx generator: waiting " ++ show initCooldown ++ "s *******" liftIO $ threadDelay (initCooldown*1000*1000) - liftIO . traceWith (trTxSubmit m) . TraceBenchTxSubDebug - $ "******* Tx generator, phase 2: pay to recipients *******" - - let localAddr :: Maybe Network.Socket.AddrInfo - localAddr = Nothing + traceDebug "******* Tx generator, phase 2: pay to recipients *******" remoteAddresses <- forM bTargets $ \targetNodeAddress -> do let targetNodeHost = @@ -306,16 +309,16 @@ runBenchmark b@Benchmark{ bTargets let numTargets :: Natural = fromIntegral $ NE.length bTargets txs :: [Tx era] <- txGenerator - b m + traceSubmit + b recipientAddress fundsKey (NE.length bTargets) fundsWithSufficientCoins + traceDebug $ "******* Tx generator, launching Tx peers: " ++ show (NE.length remoteAddresses) ++ " of them" liftIO $ do - traceWith (trTxSubmit m) . TraceBenchTxSubDebug - $ "******* Tx generator, launching Tx peers: " ++ show (NE.length remoteAddresses) ++ " of them" - submission :: Submission IO era <- mkSubmission (trTxSubmit m) $ + submission :: Submission IO era <- mkSubmission traceSubmit $ SubmissionParams { spTps = bTps , spTargets = numTargets @@ -325,15 +328,16 @@ runBenchmark b@Benchmark{ bTargets allAsyncs <- forM (zip [0..] $ NE.toList remoteAddresses) $ \(i, remoteAddr) -> launchTxPeer - m - localAddr + traceSubmit + traceN2N + connectClient remoteAddr submission i tpsFeeder <- async $ tpsLimitedTxFeeder submission txs -- Wait for all threads to complete. mapM_ wait (tpsFeeder : allAsyncs) - traceWith (trTxSubmit m) =<< + traceWith traceSubmit =<< TraceBenchTxSubSummary <$> mkSubmissionSummary submission -- | At this moment 'sourceAddress' contains a huge amount of money (lets call it A). @@ -348,30 +352,30 @@ runBenchmark b@Benchmark{ bTargets txGenerator :: forall era . (ConfigSupportsTxGen CardanoMode era, IsShelleyBasedEra era) - => Benchmark - -> Mode + => Tracer IO (TraceBenchTxSubmit TxId) + -> Benchmark -> AddressInEra era -> SigningKey PaymentKey -> Int -> [(TxIn, TxOut era)] -> ExceptT TxGenError IO [Tx era] -txGenerator Benchmark +txGenerator tracer Benchmark { bTxFee , bTxCount=NumberOfTxs numOfTransactions , bTxFanIn=NumberOfInputsPerTx numOfInsPerTx , bTxFanOut=NumberOfOutputsPerTx numOfOutsPerTx , bTxExtraPayload=txAdditionalSize } - m recipientAddress sourceKey numOfTargetNodes + recipientAddress sourceKey numOfTargetNodes fundsWithSufficientCoins = do - liftIO . traceWith (trTxSubmit m) . TraceBenchTxSubDebug + liftIO . traceWith tracer . TraceBenchTxSubDebug $ " Generating " ++ show numOfTransactions ++ " transactions, for " ++ show numOfTargetNodes ++ " peers, fee " ++ show bTxFee ++ ", value " ++ show valueForRecipient ++ ", totalValue " ++ show totalValue txs <- createMainTxs numOfTransactions numOfInsPerTx fundsWithSufficientCoins - liftIO . traceWith (trTxSubmit m) . TraceBenchTxSubDebug + liftIO . traceWith tracer . TraceBenchTxSubDebug $ " Done, " ++ show numOfTransactions ++ " were generated." pure txs where @@ -451,9 +455,9 @@ txGenerator Benchmark launchTxPeer :: forall era . (ConfigSupportsTxGen CardanoMode era, IsShelleyBasedEra era) - => Mode - -> Maybe Network.Socket.AddrInfo - -- local address binding (if wanted) + => Tracer IO (TraceBenchTxSubmit TxId) + -> Tracer IO NodeToNodeSubmissionTrace + -> ConnectClient -> Network.Socket.AddrInfo -- Remote address -> Submission IO era @@ -461,7 +465,7 @@ launchTxPeer -> Natural -- Thread index -> IO (Async ()) -launchTxPeer m localAddr remoteAddr sub tix = +launchTxPeer traceSubmit traceN2N connectClient remoteAddr sub tix = async $ handle (\(SomeException err) -> do @@ -472,7 +476,7 @@ launchTxPeer m localAddr remoteAddr sub tix = submitThreadReport sub tix (Left errDesc) case spErrorPolicy $ sParams sub of FailOnError -> throwIO err - LogErrors -> traceWith (trTxSubmit m) $ + LogErrors -> traceWith traceSubmit $ TraceBenchTxSubError (pack errDesc)) - $ benchmarkConnectTxSubmit m localAddr remoteAddr - (txSubmissionClient (trN2N m) (trTxSubmit m) sub tix) + $ connectClient remoteAddr + (txSubmissionClient traceN2N traceSubmit sub tix) diff --git a/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Callback.hs b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Callback.hs new file mode 100644 index 00000000..512e07f3 --- /dev/null +++ b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Callback.hs @@ -0,0 +1,100 @@ +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +module Cardano.Benchmarking.GeneratorTx.Callback + ( + mkCallback + ) where + +import Prelude (error) +import Cardano.Prelude hiding (TypeError, show) + +import qualified Ouroboros.Consensus.Cardano as Consensus +import Ouroboros.Consensus.Config + ( configBlock, configCodec) +import Ouroboros.Consensus.Config.SupportsNode + (ConfigSupportsNode(..), getNetworkMagic) +import Ouroboros.Consensus.Node.ProtocolInfo + (ProtocolInfo (..)) +import Ouroboros.Network.NodeToClient (IOManager) + +import Cardano.Chain.Slotting +import Cardano.Api +import Cardano.Api.Typed +import qualified Cardano.Api.Typed as Api + +-- Node imports +import Cardano.Node.Types (SocketPath(..)) +import Cardano.Tracing.OrphanInstances.Byron() +import Cardano.Tracing.OrphanInstances.Common() +import Cardano.Tracing.OrphanInstances.Consensus() +import Cardano.Tracing.OrphanInstances.Network() +import Cardano.Tracing.OrphanInstances.Shelley() + +import Cardano.Benchmarking.GeneratorTx.Benchmark +import Cardano.Benchmarking.GeneratorTx.Era +import Cardano.Benchmarking.GeneratorTx.NodeToNode +import Cardano.Benchmarking.GeneratorTx +import Cardano.Benchmarking.GeneratorTx.Genesis (GeneratorFunds) + +type Funding era = Benchmark -> GeneratorFunds -> ExceptT TxGenError IO (SigningKey PaymentKey, [(TxIn, TxOut era)]) +type BenchmarkAction era + = Benchmark -> (SigningKey PaymentKey, [(TxIn, TxOut era)]) -> ExceptT TxGenError IO () + +type Action era = Benchmark -> GeneratorFunds -> ExceptT TxGenError IO () + +mkCallback + :: forall blok ptcl era. + ( + IsShelleyBasedEra era + , ConfigSupportsTxGen CardanoMode era + ) + => Consensus.Protocol IO blok ptcl + -> Maybe NetworkMagic + -> Bool + -> IOManager + -> SocketPath + -> BenchTracers IO CardanoBlock + -> Proxy era + -> Action era + +mkCallback ptcl@(Consensus.ProtocolCardano + _ + Consensus.ProtocolParamsShelleyBased{Consensus.shelleyBasedGenesis} + _ _ _ _ _ _) + nmagic_opt is_addr_mn iom (SocketPath sock) tracers _proxy + = action + where + action benchmark fundOptions + = funding benchmark fundOptions >>= benchmarkAction benchmark + + ProtocolInfo{pInfoConfig} = Consensus.protocolInfo ptcl + localConnectInfo = LocalNodeConnectInfo + sock + (Api.Testnet . getNetworkMagic . configBlock $ pInfoConfig) + (CardanoMode (EpochSlots 21600)) -- TODO: get this from genesis + + connectClient :: ConnectClient + connectClient = benchmarkConnectTxSubmit + iom + (btConnect_ tracers) + (btSubmission_ tracers) + (configCodec pInfoConfig) + (getNetworkMagic $ configBlock pInfoConfig) + + funding :: Funding era + funding = secureFunds + (btTxSubmit_ tracers) + localConnectInfo + networkId + shelleyBasedGenesis + + benchmarkAction :: BenchmarkAction era + benchmarkAction = runBenchmark (btTxSubmit_ tracers) (btN2N_ tracers) networkId connectClient + + networkId = if is_addr_mn + then Mainnet + else Testnet $ getNetworkMagic $ configBlock pInfoConfig + +mkCallback _ _ _ _ _ _ _ = error "mkCallbacks" diff --git a/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Era.hs b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Era.hs index cb6360dd..30f69c11 100644 --- a/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Era.hs +++ b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/Era.hs @@ -26,7 +26,6 @@ module Cardano.Benchmarking.GeneratorTx.Era , GenTxIdOf , inject , project - , Mode(..) , CardanoBlock , InitCooldown(..) @@ -47,23 +46,8 @@ module Cardano.Benchmarking.GeneratorTx.Era , SubmissionSummary(..) - , mkMode - , modeGenesis - , modeCodecConfig - , modeIOManager - , modeLocalConnInfo - , modeNetworkId - , modeNetworkIdOverridable - , modeNetworkMagicOverride - , modeTopLevelConfig - , modeTracers - , trBase - , trTxSubmit + , btTxSubmit_ - , trConnect - , trSubmitMux - , trLowLevel - , trN2N , createTracers , BenchTraceConstraints @@ -172,53 +156,6 @@ type CardanoBlock = Consensus.CardanoBlock StandardCrypto type GenTxOf mode = GenTx CardanoBlock type GenTxIdOf mode = GenTxId CardanoBlock --- | System-level submission context (not parameters) --- TODO: rename the type to SubContext or something similar. -data Mode where - ModeCardanoShelley - :: TopLevelConfig CardanoBlock - -> Shelley.ShelleyGenesis StandardShelley - -> CodecConfig CardanoBlock - -> LocalNodeConnectInfo CardanoMode CardanoBlock - -> Maybe NetworkMagic - -> Bool - -> IOManager - -> BenchTracers IO CardanoBlock - -> Mode - -instance Show Mode where - show ModeCardanoShelley{} = "ModeCardanoShelley" - -mkMode - :: forall blok ptcl. - Consensus.Protocol IO blok ptcl - -> Maybe NetworkMagic - -> Bool - -> IOManager - -> SocketPath - -> BenchTracers IO CardanoBlock - -> Mode -mkMode ptcl@(Consensus.ProtocolCardano - _ - Consensus.ProtocolParamsShelleyBased{Consensus.shelleyBasedGenesis} - _ _ _ _ _ _) - nmagic_opt is_addr_mn iom (SocketPath sock) tracers = - ModeCardanoShelley - pInfoConfig - shelleyBasedGenesis - (configCodec pInfoConfig) - (LocalNodeConnectInfo - sock - (Api.Testnet . getNetworkMagic . configBlock $ pInfoConfig) - -- TODO: get this from genesis - (CardanoMode (EpochSlots 21600))) - nmagic_opt - is_addr_mn - iom - tracers - where - ProtocolInfo{pInfoConfig} = Consensus.protocolInfo ptcl -mkMode p _ _ _ _ _ = error $ "mkMode: unhandled protocol/era: " <> show p instance Show (Consensus.Protocol m blk p) where show Consensus.ProtocolByron{} = "ProtocolByron" @@ -227,55 +164,6 @@ instance Show (Consensus.Protocol m blk p) where show Consensus.ProtocolMary{} = "ProtocolMary" -- show Consensus.ProtocolLeaderSchedule{} = "ProtocolLeaderSchedule" - -modeTopLevelConfig :: Mode -> TopLevelConfig CardanoBlock -modeTopLevelConfig (ModeCardanoShelley x _ _ _ _ _ _ _) = x - -modeGenesis :: Mode -> ShelleyGenesis StandardShelley -modeGenesis (ModeCardanoShelley _ g _ _ _ _ _ _) = g - -modeCodecConfig :: Mode -> CodecConfig CardanoBlock -modeCodecConfig (ModeCardanoShelley _ _ x _ _ _ _ _) = x - -modeLocalConnInfo :: Mode -> LocalNodeConnectInfo CardanoMode CardanoBlock -modeLocalConnInfo (ModeCardanoShelley _ _ _ x _ _ _ _) = x - -modeNetworkMagicOverride :: Mode -> Maybe NetworkMagic -modeNetworkMagicOverride (ModeCardanoShelley _ _ _ _ x _ _ _) = x - -modeAddressMainnetOverride :: Mode -> Bool -modeAddressMainnetOverride (ModeCardanoShelley _ _ _ _ _ x _ _) = x - -modeIOManager :: Mode -> IOManager -modeIOManager (ModeCardanoShelley _ _ _ _ _ _ x _) = x - -modeTracers :: Mode -> BenchTracers IO CardanoBlock -modeTracers (ModeCardanoShelley _ _ _ _ _ _ _ x) = x - -modeNetworkId :: Mode -> NetworkId -modeNetworkId (modeAddressMainnetOverride -> True) = Mainnet -modeNetworkId m@ModeCardanoShelley{} = Testnet . getNetworkMagic . configBlock $ modeTopLevelConfig m - -modeNetworkIdOverridable :: Mode -> NetworkId -modeNetworkIdOverridable (modeAddressMainnetOverride -> True) = Mainnet -modeNetworkIdOverridable m = modeNetworkId m - ---type family GenesisOf era where --- GenesisOf ShelleyEra = Shelley.ShelleyGenesis StandardShelley - -trBase :: Mode -> Trace IO Text -trTxSubmit :: Mode -> Tracer IO (TraceBenchTxSubmit TxId) -trConnect :: Mode -> Tracer IO SendRecvConnect -trSubmitMux :: Mode -> Tracer IO (SendRecvTxSubmission CardanoBlock) -trLowLevel :: Mode -> Tracer IO TraceLowLevelSubmit -trN2N :: Mode -> Tracer IO NodeToNodeSubmissionTrace -trBase = btBase_ . modeTracers -trTxSubmit = btTxSubmit_ . modeTracers -trConnect = btConnect_ . modeTracers -trSubmitMux = btSubmission_ . modeTracers -trLowLevel = btLowLevel_ . modeTracers -trN2N = btN2N_ . modeTracers - {------------------------------------------------------------------------------- Tracers -------------------------------------------------------------------------------} diff --git a/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs index d7055ae1..2430e6b1 100644 --- a/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs +++ b/cardano-tx-generator/src/Cardano/Benchmarking/GeneratorTx/NodeToNode.hs @@ -12,7 +12,9 @@ {-# OPTIONS_GHC -fno-warn-orphans -Wno-unticked-promoted-constructors -Wno-all-missed-specialisations #-} module Cardano.Benchmarking.GeneratorTx.NodeToNode - ( benchmarkConnectTxSubmit + ( + ConnectClient + , benchmarkConnectTxSubmit ) where import Cardano.Prelude (atomically, forever, liftIO) @@ -58,44 +60,22 @@ import Ouroboros.Network.Snocket (socketSnocket) import Cardano.Benchmarking.GeneratorTx.Era +type ConnectClient = AddrInfo -> TxSubmissionClient (GenTxId CardanoBlock) (GenTx CardanoBlock) IO () -> IO () benchmarkConnectTxSubmit - :: (RunNode CardanoBlock ) - => Mode - -> Maybe AddrInfo - -- ^ local address information (typically local interface/port to use) - -> AddrInfo - -- ^ remote address information - -> TxSubmissionClient (GenTxId CardanoBlock) (GenTx CardanoBlock) IO () - -- ^ the particular txSubmission peer - -> IO () -benchmarkConnectTxSubmit p localAddr remoteAddr myTxSubClient - = benchmarkConnectTxSubmitC - (modeIOManager p) - (trConnect p) - (trSubmitMux p) - (modeCodecConfig p) - (fromMaybe (getNetworkMagic $ configBlock $ modeTopLevelConfig p) (modeNetworkMagicOverride p)) - localAddr - remoteAddr - myTxSubClient - -benchmarkConnectTxSubmitC :: forall blk. (blk ~ CardanoBlock, RunNode blk ) => IOManager -> Tracer IO SendRecvConnect -> Tracer IO (SendRecvTxSubmission blk) -> CodecConfig CardanoBlock -> NetworkMagic - -> Maybe AddrInfo - -- ^ local address information (typically local interface/port to use) -> AddrInfo -- ^ remote address information -> TxSubmissionClient (GenTxId blk) (GenTx blk) IO () -- ^ the particular txSubmission peer -> IO () -benchmarkConnectTxSubmitC ioManager handshakeTracer submissionTracer codecConfig networkMagic localAddr remoteAddr myTxSubClient = +benchmarkConnectTxSubmit ioManager handshakeTracer submissionTracer codecConfig networkMagic remoteAddr myTxSubClient = NtN.connectTo (socketSnocket ioManager) NetworkConnectTracers { @@ -103,7 +83,7 @@ benchmarkConnectTxSubmitC ioManager handshakeTracer submissionTracer codecConfig nctHandshakeTracer = handshakeTracer } peerMultiplex - (addrAddress <$> localAddr) + (addrAddress <$> Nothing) (addrAddress remoteAddr) where n2nVer :: NodeToNodeVersion diff --git a/cardano-tx-generator/src/Cardano/Benchmarking/Run.hs b/cardano-tx-generator/src/Cardano/Benchmarking/Run.hs index 6807ab21..ae581840 100644 --- a/cardano-tx-generator/src/Cardano/Benchmarking/Run.hs +++ b/cardano-tx-generator/src/Cardano/Benchmarking/Run.hs @@ -45,7 +45,7 @@ import Cardano.Benchmarking.GeneratorTx.Benchmark import Cardano.Benchmarking.GeneratorTx.Genesis import Cardano.Benchmarking.GeneratorTx.CLI.Parsers import Cardano.Benchmarking.GeneratorTx.Era - +import Cardano.Benchmarking.GeneratorTx.Callback data ProtocolError = IncorrectProtocolSpecified !Api.Protocol @@ -152,25 +152,24 @@ runCommand (GenerateTxs logConfigFp ptcl :: Protocol IO CardanoBlock ProtocolCardano <- firstExceptT (ProtocolInstantiationError . pack . show) $ mkConsensusProtocolCardano byC shC hfC Nothing loggingLayer <- mkLoggingLayer nc ptcl - let tracers = createTracers loggingLayer + let tracers :: BenchTracers IO CardanoBlock + tracers = createTracers loggingLayer myTracer msg = traceWith (btTxSubmit_ tracers) $ TraceBenchTxSubDebug msg - mode = mkMode ptcl nmagic_opt is_addr_mn iocp socketFp tracers - funding :: forall era. IsShelleyBasedEra era => ExceptT TxGenError IO (SigningKey PaymentKey, [(TxIn, TxOut era)]) - funding = secureFunds (btTxSubmit_ tracers) (modeLocalConnInfo mode) - benchmark (modeNetworkIdOverridable mode) (modeGenesis mode) fundOptions + runAll :: forall era. IsShelleyBasedEra era => Proxy era -> Benchmark -> GeneratorFunds -> ExceptT TxGenError IO () + runAll = mkCallback ptcl nmagic_opt is_addr_mn iocp socketFp tracers firstExceptT GenesisBenchmarkRunnerError $ case benchmarkEra of AnyCardanoEra ByronEra -> error "ByronEra not supported" AnyCardanoEra ShelleyEra -> do liftIO $ myTracer "runBenchmark :: ShelleyEra" - (funding @ ShelleyEra) >>= runBenchmark benchmark mode - AnyCardanoEra MaryEra -> do - liftIO $ myTracer "runBenchmark :: MaryEra" - (funding @ MaryEra) >>= runBenchmark benchmark mode + runAll (Proxy @ ShelleyEra) benchmark fundOptions AnyCardanoEra AllegraEra -> do liftIO $ myTracer "runBenchmark :: AllegraEra" - (funding @ AllegraEra) >>= runBenchmark benchmark mode - _ -> return () + runAll (Proxy @ AllegraEra) benchmark fundOptions + AnyCardanoEra MaryEra -> do + liftIO $ myTracer "runBenchmark :: MaryEra" + runAll (Proxy @ MaryEra) benchmark fundOptions + _ -> return () -- ???? redundant but type error if left out ?? liftIO $ do threadDelay (200*1000) -- Let the logging layer print out everything. shutdownLoggingLayer loggingLayer