Skip to content

Commit

Permalink
Each client submit same number of transactions in benchmark
Browse files Browse the repository at this point in the history
Having widely different sequence length make interpretation of numbers
and graph difficult because the observed throughput and latency can
change dramatically if several clients stop feeding the nodes
  • Loading branch information
abailly-iohk committed Sep 10, 2021
1 parent 6bbdbc1 commit 81d1d48
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
6 changes: 6 additions & 0 deletions hydra-node/src/Hydra/Ledger/Cardano.hs
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,12 @@ genSequenceOfValidTransactions initialUtxo
| otherwise = do
n <- getSize
numTxs <- choose (1, n)
genFixedSizeSequenceOfValidTransactions numTxs initialUtxo

genFixedSizeSequenceOfValidTransactions :: Int -> Utxo CardanoTx -> Gen [CardanoTx]
genFixedSizeSequenceOfValidTransactions numTxs initialUtxo
| initialUtxo == mempty = pure []
| otherwise = do
reverse . snd <$> foldM newTx (initialUtxo, []) [1 .. numTxs]
where
newTx (utxos, acc) _ = do
Expand Down
8 changes: 4 additions & 4 deletions local-cluster/bench/Bench/EndToEnd.hs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import Data.Set ((\\))
import qualified Data.Set as Set
import Data.Time (nominalDiffTimeToSeconds)
import Hydra.Ledger (Tx, TxId, Utxo, txId)
import Hydra.Ledger.Cardano (CardanoTx, genSequenceOfValidTransactions, genUtxo)
import Hydra.Ledger.Cardano (CardanoTx, genFixedSizeSequenceOfValidTransactions, genUtxo)
import Hydra.Logging (showLogsOnFailure)
import HydraNode (
HydraClient,
Expand All @@ -49,7 +49,7 @@ import HydraNode (
withNewClient,
)
import System.FilePath ((</>))
import Test.QuickCheck (generate, scale)
import Test.QuickCheck (generate)
import Text.Printf (printf)

aliceSk, bobSk, carolSk :: SignKeyDSIGN MockDSIGN
Expand All @@ -69,9 +69,9 @@ data Dataset = Dataset
deriving (Eq, Show, Generic, ToJSON, FromJSON)

generateDataset :: Int -> IO Dataset
generateDataset scalingFactor = do
generateDataset sequenceLength = do
initialUtxo <- generate genUtxo
transactionsSequence <- generate $ scale (* scalingFactor) $ genSequenceOfValidTransactions initialUtxo
transactionsSequence <- generate $ genFixedSizeSequenceOfValidTransactions sequenceLength initialUtxo
pure Dataset{initialUtxo, transactionsSequence}

data Event = Event
Expand Down
4 changes: 3 additions & 1 deletion local-cluster/bench/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import Options.Applicative (
import System.Directory (createDirectory, doesDirectoryExist)
import System.Environment (withArgs)
import System.FilePath ((</>))
import Test.QuickCheck (generate, getSize, scale)

data Options = Options
{ outputDirectory :: Maybe FilePath
Expand Down Expand Up @@ -113,7 +114,8 @@ main =
run timeoutSeconds benchDir datasets clusterSize

play scalingFactor concurrency timeoutSeconds clusterSize benchDir = do
dataset <- replicateM concurrency (generateDataset scalingFactor)
numberOfTxs <- generate $ scale (* scalingFactor) getSize
dataset <- replicateM concurrency (generateDataset numberOfTxs)
saveDataset benchDir dataset
run timeoutSeconds benchDir dataset clusterSize

Expand Down

0 comments on commit 81d1d48

Please sign in to comment.