Skip to content

Commit 92b90d4

Browse files
rappieelopez
authored andcommitted
Distribute replay corpus across all fuzz workers
1 parent cdedbca commit 92b90d4

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

lib/Echidna/UI.hs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import Control.Monad.Catch
1313
import Control.Monad.Reader
1414
import Control.Monad.State.Strict hiding (state)
1515
import Data.ByteString.Lazy qualified as BS
16-
import Data.List.Split (chunksOf)
16+
import Data.List.Split (splitPlaces)
1717
import Data.Map (Map)
1818
import Data.Maybe (isJust, mapMaybe)
1919
import Data.Sequence ((|>))
@@ -89,9 +89,11 @@ ui vm dict initialCorpus cliSelectedContract = do
8989
perWorkerTestLimit = ceiling
9090
(fromIntegral conf.campaignConf.testLimit / fromIntegral nFuzzWorkers :: Double)
9191

92-
chunkSize = ceiling
93-
(fromIntegral (length initialCorpus) / fromIntegral nFuzzWorkers :: Double)
94-
corpusChunks = chunksOf chunkSize initialCorpus ++ repeat []
92+
(corpusChunkSize, largerCorpusChunks) = length initialCorpus `divMod` nFuzzWorkers
93+
corpusChunkSizes =
94+
replicate largerCorpusChunks (corpusChunkSize + 1) <>
95+
replicate (nFuzzWorkers - largerCorpusChunks) corpusChunkSize
96+
corpusChunks = splitPlaces corpusChunkSizes initialCorpus ++ repeat []
9597

9698
corpusSaverStopVar <- spawnListener (saveCorpusEvent env)
9799

0 commit comments

Comments
 (0)