Skip to content

Commit d8d3d08

Browse files
committed
Don't crash when UTxO is too small
1 parent e87943f commit d8d3d08

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

libs/ledger-state/bench/Performance.hs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import Cardano.Ledger.Val
2727
import Cardano.Slotting.EpochInfo (fixedEpochInfo)
2828
import Cardano.Slotting.Time (mkSlotLength)
2929
import Control.DeepSeq
30+
import Control.Monad (when)
3031
import Criterion.Main
3132
import Data.Aeson
3233
import Data.Bifunctor (first)
@@ -41,6 +42,7 @@ import qualified Data.Set as Set
4142
import GHC.Stack (HasCallStack)
4243
import Lens.Micro ((^.))
4344
import System.Environment (getEnv)
45+
import System.Exit (die)
4446
import System.Random.Stateful
4547
import Test.Cardano.Ledger.Api.State.Query (getFilteredDelegationsAndRewardAccounts)
4648
import Test.Cardano.Ledger.Core.Arbitrary (uniformSubSet)
@@ -67,9 +69,13 @@ main = do
6769
putStrLn $ "Importing NewEpochState from: " ++ show ledgerStateFilePath
6870
es <- readNewEpochState ledgerStateFilePath
6971
putStrLn "Done importing NewEpochState"
70-
let largeKeysNum = 100000
72+
let utxoMap = unUTxO $ getUTxO es
73+
utxoSize = Map.size utxoMap
74+
largeKeysNum = 100000
7175
stdGen = mkStdGen 2022
72-
largeKeys <- selectRandomMapKeys 100000 stdGen (unUTxO (getUTxO es))
76+
when (utxoSize < largeKeysNum) $
77+
die $ "UTxO size is too small (" <> show utxoSize <> " < " <> show largeKeysNum <> ")"
78+
largeKeys <- selectRandomMapKeys 100000 stdGen utxoMap
7379
defaultMain
7480
[ env (pure (mkMempoolEnv es slotNo, toMempoolState es)) $ \ ~(mempoolEnv, mempoolState) ->
7581
bgroup
@@ -109,9 +115,8 @@ main = do
109115
bench "areAllAdaOnly" . nf areAllAdaOnly
110116
]
111117
, env (pure es) $ \newEpochState ->
112-
let utxo = getUTxO es
113-
(_, minTxOut) = Map.findMin $ unUTxO utxo
114-
(_, maxTxOut) = Map.findMax $ unUTxO utxo
118+
let (_, minTxOut) = Map.findMin utxoMap
119+
(_, maxTxOut) = Map.findMax utxoMap
115120
setAddr =
116121
Set.fromList [minTxOut ^. addrTxOutL, maxTxOut ^. addrTxOutL]
117122
in bgroup
@@ -141,10 +146,10 @@ main = do
141146
]
142147
, bgroup
143148
"DeleteTxOuts"
144-
[ extractKeysBench (unUTxO (getUTxO es)) largeKeysNum largeKeys
145-
, extractKeysBench (unUTxO (getUTxO es)) 9 (Set.take 9 largeKeys)
146-
, extractKeysBench (unUTxO (getUTxO es)) 5 (Set.take 5 largeKeys)
147-
, extractKeysBench (unUTxO (getUTxO es)) 2 (Set.take 2 largeKeys)
149+
[ extractKeysBench utxoMap largeKeysNum largeKeys
150+
, extractKeysBench utxoMap 9 (Set.take 9 largeKeys)
151+
, extractKeysBench utxoMap 5 (Set.take 5 largeKeys)
152+
, extractKeysBench utxoMap 2 (Set.take 2 largeKeys)
148153
]
149154
]
150155

0 commit comments

Comments
 (0)