-
Notifications
You must be signed in to change notification settings - Fork 721
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Set NumThreads to 1 in cardano-testnet-test #5758
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,47 +24,50 @@ import qualified Cardano.Testnet.Test.SubmitApi.Babbage.Transaction | |
import Prelude | ||
|
||
import qualified System.Environment as E | ||
import qualified System.Exit as IO | ||
import qualified System.IO as IO | ||
import System.IO (BufferMode (LineBuffering), hSetBuffering, hSetEncoding, stdout, utf8) | ||
|
||
import qualified Testnet.Property.Run as H | ||
|
||
import qualified Test.Tasty as T | ||
import Test.Tasty (TestTree) | ||
import qualified Test.Tasty.Ingredients as T | ||
import qualified Test.Tasty.Options as T | ||
import qualified Test.Tasty.Runners as T | ||
|
||
tests :: IO TestTree | ||
tests = do | ||
testGroup <- runTestGroup <$> shouldRunInParallel | ||
pure $ testGroup "test/Spec.hs" | ||
[ testGroup "Spec" | ||
[ testGroup "Ledger Events" | ||
pure $ T.testGroup "test/Spec.hs" | ||
[ T.testGroup "Spec" | ||
[ T.testGroup "Ledger Events" | ||
[ H.ignoreOnWindows "Sanity Check" LedgerEvents.hprop_ledger_events_sanity_check | ||
, H.ignoreOnWindows "Treasury Growth" LedgerEvents.prop_check_if_treasury_is_growing | ||
-- TODO: Replace foldBlocks with checkLedgerStateCondition | ||
, testGroup "Governance" | ||
, T.testGroup "Governance" | ||
[ H.ignoreOnMacAndWindows "ProposeAndRatifyNewConstitution" Cardano.Testnet.Test.LedgerEvents.Gov.ProposeNewConstitution.hprop_ledger_events_propose_new_constitution | ||
-- FIXME Those tests are flaky | ||
-- , H.ignoreOnWindows "InfoAction" LedgerEvents.hprop_ledger_events_info_action | ||
, H.ignoreOnWindows "ProposeNewConstitutionSPO" LedgerEvents.hprop_ledger_events_propose_new_constitution_spo | ||
, H.ignoreOnWindows "DRepRetirement" DRepRetirement.hprop_drep_retirement | ||
] | ||
, testGroup "Plutus" | ||
, T.testGroup "Plutus" | ||
[ H.ignoreOnWindows "PlutusV3" Cardano.Testnet.Test.Cli.Conway.Plutus.hprop_plutus_v3] | ||
] | ||
, testGroup "CLI" | ||
, T.testGroup "CLI" | ||
[ H.ignoreOnWindows "Shutdown" Cardano.Testnet.Test.Node.Shutdown.hprop_shutdown | ||
-- ShutdownOnSigint fails on Mac with | ||
-- "Log file: /private/tmp/tmp.JqcjW7sLKS/kes-period-info-2-test-30c2d0d8eb042a37/logs/test-spo.stdout.log had no logs indicating the relevant node has minted blocks." | ||
, H.ignoreOnMacAndWindows "ShutdownOnSigint" Cardano.Testnet.Test.Node.Shutdown.hprop_shutdownOnSigint | ||
-- ShutdownOnSlotSynced FAILS Still. The node times out and it seems the "shutdown-on-slot-synced" flag does nothing | ||
-- , H.ignoreOnWindows "ShutdownOnSlotSynced" Cardano.Testnet.Test.Node.Shutdown.hprop_shutdownOnSlotSynced | ||
, testGroup "Babbage" | ||
, T.testGroup "Babbage" | ||
[ H.ignoreOnMacAndWindows "leadership-schedule" Cardano.Testnet.Test.Cli.Babbage.LeadershipSchedule.hprop_leadershipSchedule -- FAILS | ||
, H.ignoreOnWindows "stake-snapshot" Cardano.Testnet.Test.Cli.Babbage.StakeSnapshot.hprop_stakeSnapshot | ||
, H.ignoreOnWindows "transaction" Cardano.Testnet.Test.Cli.Babbage.Transaction.hprop_transaction | ||
] | ||
-- TODO: Conway - Re-enable when create-staked is working in conway again | ||
--, testGroup "Conway" | ||
--, T.testGroup "Conway" | ||
-- [ H.ignoreOnWindows "stake-snapshot" Cardano.Testnet.Test.Cli.Conway.StakeSnapshot.hprop_stakeSnapshot | ||
-- ] | ||
-- Ignored on Windows due to <stdout>: commitBuffer: invalid argument (invalid character) | ||
|
@@ -75,27 +78,27 @@ tests = do | |
, H.ignoreOnWindows "CliQueries" Cardano.Testnet.Test.Cli.Queries.hprop_cli_queries | ||
] | ||
] | ||
, testGroup "SubmitApi" | ||
[ testGroup "Babbage" | ||
, T.testGroup "SubmitApi" | ||
[ T.testGroup "Babbage" | ||
[ H.ignoreOnWindows "transaction" Cardano.Testnet.Test.SubmitApi.Babbage.Transaction.hprop_transaction | ||
] | ||
] | ||
] | ||
|
||
shouldRunInParallel :: IO Bool | ||
shouldRunInParallel = (== Just "1") <$> E.lookupEnv "PARALLEL_TESTNETS" | ||
defaultMainWithIngredientsAndOptions :: [T.Ingredient] -> T.OptionSet -> T.TestTree -> IO () | ||
defaultMainWithIngredientsAndOptions ins opts testTree = do | ||
T.installSignalHandlers | ||
parsedOpts <- T.parseOptions ins testTree | ||
let opts' = opts <> parsedOpts | ||
|
||
-- FIXME Right now when running tests concurrently it makes them flaky | ||
runTestGroup | ||
:: Bool -- ^ True to run in parallel | ||
-> T.TestName | ||
-> [TestTree] | ||
-> TestTree | ||
runTestGroup True name = T.testGroup name | ||
runTestGroup False name = T.sequentialTestGroup name T.AllFinish | ||
|
||
ingredients :: [T.Ingredient] | ||
ingredients = T.defaultIngredients | ||
case T.tryIngredients ins opts' testTree of | ||
Nothing -> do | ||
IO.hPutStrLn IO.stderr | ||
"No ingredients agreed to run. Something is wrong either with your ingredient set or the options." | ||
IO.exitFailure | ||
Just act -> do | ||
ok <- act | ||
if ok then IO.exitSuccess else IO.exitFailure | ||
|
||
main :: IO () | ||
main = do | ||
|
@@ -105,4 +108,6 @@ main = do | |
hSetEncoding stdout utf8 | ||
args <- E.getArgs | ||
|
||
E.withArgs args $ tests >>= T.defaultMainWithIngredients ingredients | ||
let opts = T.singleOption $ T.NumThreads 1 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we have an environment variable to override this? It's still useful to me to be able to run tests in parallel locally. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You should be able to do this:
Because all I've done is change the default. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The default is:
Whatever that works out to be. |
||
|
||
E.withArgs args $ tests >>= defaultMainWithIngredientsAndOptions T.defaultIngredients opts |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this just copied
defaultMainWithIngredients
with ability to changeOptionSet
or is there something else added here?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that is correct.