Skip to content

Commit 1ef257e

Browse files
committed
cardano-testnet | fix tests due to new cardano-cli
1 parent 8b2ec86 commit 1ef257e

File tree

7 files changed

+45
-50
lines changed

7 files changed

+45
-50
lines changed

cardano-testnet/src/Testnet/Process/Cli/Transaction.hs

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
{-# LANGUAGE DataKinds #-}
2+
{-# LANGUAGE OverloadedStrings #-}
23
{-# LANGUAGE ScopedTypeVariables #-}
4+
{-# LANGUAGE TypeApplications #-}
35

46
module Testnet.Process.Cli.Transaction
57
( mkSimpleSpendOutputsOnlyTx
@@ -23,21 +25,25 @@ import Prelude
2325

2426
import Control.Monad (void)
2527
import Control.Monad.Catch (MonadCatch)
28+
import qualified Data.Aeson.Lens as A
2629
import Data.List (isInfixOf)
30+
import Data.String (fromString)
2731
import qualified Data.Text as T
2832
import Data.Typeable (Typeable)
33+
import qualified Data.Yaml as A
2934
import GHC.IO.Exception (ExitCode (..))
3035
import GHC.Stack
36+
import Lens.Micro
3137
import System.FilePath ((</>))
3238

33-
import Hedgehog (MonadTest)
34-
import qualified Hedgehog.Extras as H
35-
3639
import Testnet.Components.Query (EpochStateView, findLargestUtxoForPaymentKey)
3740
import Testnet.Process.Run (execCli')
3841
import Testnet.Start.Types (anyEraToString)
3942
import Testnet.Types
4043

44+
import Hedgehog (MonadTest)
45+
import qualified Hedgehog.Extras as H
46+
4147
-- Transaction signing
4248
data VoteFile
4349

@@ -231,5 +237,6 @@ retrieveTransactionId execConfig signedTxBody = do
231237
[ "latest", "transaction", "txid"
232238
, "--tx-file", unFile signedTxBody
233239
]
234-
return $ mconcat $ lines txidOutput
240+
result <- H.leftFail $ A.decodeEither' @A.Value $ fromString txidOutput
241+
H.nothingFail . fmap T.unpack $ result ^? A.key "txhash" . A._String
235242

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Plutus/CostCalculation.hs

+11-11
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,6 @@ import System.Directory (makeAbsolute)
4040
import System.FilePath ((</>))
4141
import qualified System.Info as SYS
4242

43-
import Hedgehog (Property)
44-
import qualified Hedgehog as H
45-
import qualified Hedgehog.Extras.Test.Base as H
46-
import qualified Hedgehog.Extras.Test.File as H
47-
import qualified Hedgehog.Extras.Test.Golden as H
48-
import qualified Hedgehog.Extras.Test.TestWatchdog as H
49-
5043
import Testnet.Components.Query (findLargestUtxoForPaymentKey, getEpochStateView, getTxIx,
5144
watchEpochStateUpdate)
5245
import Testnet.Process.Cli.Transaction (TxOutAddress (..), mkSpendOutputsOnlyTx,
@@ -57,6 +50,13 @@ import Testnet.Start.Types (eraToString)
5750
import Testnet.Types (PaymentKeyInfo (paymentKeyInfoAddr), paymentKeyInfoPair,
5851
verificationKey)
5952

53+
import Hedgehog (Property)
54+
import qualified Hedgehog as H
55+
import qualified Hedgehog.Extras.Test.Base as H
56+
import qualified Hedgehog.Extras.Test.File as H
57+
import qualified Hedgehog.Extras.Test.Golden as H
58+
import qualified Hedgehog.Extras.Test.TestWatchdog as H
59+
6060
-- @DISABLE_RETRIES=1 cabal run cardano-testnet-test -- -p "/Spec.hs.Spec.Ledger Events.Plutus.Cost Calc.Ref Script/"@
6161
hprop_ref_plutus_cost_calculation :: Property
6262
hprop_ref_plutus_cost_calculation = integrationRetryWorkspace 2 "ref plutus script" $ \tempAbsBasePath' -> H.runWithDefaultWatchdog_ $ do
@@ -183,7 +183,7 @@ hprop_ref_plutus_cost_calculation = integrationRetryWorkspace 2 "ref plutus scri
183183
execCli'
184184
execConfig
185185
[ eraName
186-
, "transaction", "calculate-plutus-script-cost"
186+
, "transaction", "calculate-plutus-script-cost", "online"
187187
, "--tx-file", unFile signedUnlockTx
188188
, "--out-file", unFile txCostOutput
189189
]
@@ -199,7 +199,7 @@ hprop_ref_plutus_cost_calculation = integrationRetryWorkspace 2 "ref plutus scri
199199
execCli'
200200
execConfig
201201
[ eraName
202-
, "transaction", "calculate-plutus-script-cost"
202+
, "transaction", "calculate-plutus-script-cost", "online"
203203
, "--tx-file", unFile signedUnlockTx
204204
]
205205

@@ -306,7 +306,7 @@ hprop_included_plutus_cost_calculation = integrationRetryWorkspace 2 "included p
306306
execCli'
307307
execConfig
308308
[ eraName
309-
, "transaction", "calculate-plutus-script-cost"
309+
, "transaction", "calculate-plutus-script-cost", "online"
310310
, "--tx-file", unFile signedIncludedScript
311311
, "--out-file", unFile includedScriptCostOutput
312312
]
@@ -421,7 +421,7 @@ hprop_included_simple_script_cost_calculation = integrationRetryWorkspace 2 "inc
421421
execCli'
422422
execConfig
423423
[ eraName
424-
, "transaction", "calculate-plutus-script-cost"
424+
, "transaction", "calculate-plutus-script-cost", "online"
425425
, "--tx-file", unFile signedScriptUnlock
426426
]
427427

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Cli/Query.hs

+12-17
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
{-# LANGUAGE OverloadedStrings #-}
99
{-# LANGUAGE ScopedTypeVariables #-}
1010
{-# LANGUAGE TupleSections #-}
11+
{-# LANGUAGE TypeApplications #-}
1112

1213
module Cardano.Testnet.Test.Cli.Query (
1314
hprop_cli_queries
@@ -36,10 +37,10 @@ import qualified Data.Aeson.Encode.Pretty as Aeson
3637
import qualified Data.Aeson.Key as Aeson
3738
import qualified Data.Aeson.KeyMap as Aeson
3839
import qualified Data.Aeson.Lens as Aeson
39-
import Data.Bifunctor (bimap)
4040
import qualified Data.ByteString.Lazy as LBS
4141
import Data.Default.Class
4242
import qualified Data.Map as Map
43+
import Data.Map.Strict (Map)
4344
import Data.String (IsString (fromString))
4445
import Data.Text (Text)
4546
import qualified Data.Text as T
@@ -179,10 +180,11 @@ hprop_cli_queries = integrationWorkspace "cli-queries" $ \tempAbsBasePath' -> H.
179180
do
180181
-- to stdout
181182
stakePoolsOut <- execCli' execConfig [ eraName, "query", "stake-pools" ]
182-
H.assertWith stakePoolsOut $ \pools ->
183-
NumPools (length $ lines pools) == nPools
183+
stakePools <- H.noteShowM $ H.leftFail $ Aeson.eitherDecode @[String] $ fromString stakePoolsOut
184+
H.assertWith stakePools $ \pools ->
185+
NumPools (length pools) == nPools
184186
-- Light test of the query's answer, the ids should exist:
185-
forM_ (lines stakePoolsOut) $ \stakePoolId -> do
187+
forM_ stakePools $ \stakePoolId -> do
186188
execCli' execConfig [ eraName, "query", "pool-state"
187189
, "--stake-pool-id", stakePoolId ]
188190
-- to a file
@@ -199,22 +201,15 @@ hprop_cli_queries = integrationWorkspace "cli-queries" $ \tempAbsBasePath' -> H.
199201
do
200202
-- to stdout
201203
stakeDistrOut <- execCli' execConfig [ eraName, "query", "stake-distribution" ]
202-
-- stake addresses with stake
203-
let stakeAddresses :: [(Text, Text)] =
204-
map
205-
( bimap T.strip T.strip
206-
. T.breakOn " " -- separate address and stake
207-
. T.strip
208-
. fromString )
209-
. drop 2 -- drop header
210-
. lines
211-
$ stakeDistrOut
212-
H.assertWith stakeAddresses $ \sa ->
204+
stakeDistr <- H.leftFail $ Aeson.eitherDecode @(Map String Aeson.Value) $ fromString stakeDistrOut
205+
H.note_ stakeDistrOut
206+
let stakePools = Map.keys stakeDistr
207+
H.assertWith stakePools $ \sa ->
213208
NumPools (length sa) == nPools
214209
-- Light test of the query's answer, the ids should exist:
215-
forM_ stakeAddresses $ \(stakePoolId, _) -> do
210+
forM_ stakePools $ \stakePoolId -> do
216211
execCli' execConfig [ eraName, "query", "pool-state"
217-
, "--stake-pool-id", T.unpack stakePoolId ]
212+
, "--stake-pool-id", stakePoolId ]
218213
-- to a file
219214
let stakePoolsOutFile = work </> "stake-distribution-out.json"
220215
H.noteM_ $ execCli' execConfig [ eraName, "query", "stake-distribution"

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/CommitteeAddNew.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import qualified Testnet.Process.Cli.DRep as DRep
4444
import Testnet.Process.Cli.Keys
4545
import qualified Testnet.Process.Cli.SPO as SPO
4646
import Testnet.Process.Cli.SPO (createStakeKeyRegistrationCertificate)
47-
import Testnet.Process.Cli.Transaction
47+
import Testnet.Process.Cli.Transaction (retrieveTransactionId, signTx, submitTx)
4848
import Testnet.Process.Run (addEnvVarsToConfig, execCli', mkExecConfig)
4949
import Testnet.Property.Util (integrationWorkspace)
5050
import Testnet.Start.Types (GenesisOptions (..), cardanoNumPools)

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/InfoAction.hs

+4-6
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import Testnet.Components.Query
3939
import Testnet.Defaults
4040
import Testnet.Process.Cli.Keys
4141
import Testnet.Process.Cli.SPO (createStakeKeyRegistrationCertificate)
42+
import Testnet.Process.Cli.Transaction (retrieveTransactionId)
4243
import Testnet.Process.Run (addEnvVarsToConfig, execCli', mkExecConfig)
4344
import Testnet.Property.Util (integrationRetryWorkspace)
4445
import Testnet.Start.Types
@@ -189,14 +190,11 @@ hprop_ledger_events_info_action = integrationRetryWorkspace 2 "info-hash" $ \tem
189190
, "--tx-file", txbodySignedFp
190191
]
191192

192-
txidString <- mconcat . lines <$> execCli' execConfig
193-
[ "latest", "transaction", "txid"
194-
, "--tx-file", txbodySignedFp
195-
]
193+
txIdString <- H.noteShowM $ retrieveTransactionId execConfig (File txbodySignedFp)
196194

197195
governanceActionIndex <-
198196
H.nothingFailM $ watchEpochStateUpdate epochStateView (EpochInterval 1) $ \(anyNewEpochState, _, _) ->
199-
pure $ maybeExtractGovernanceActionIndex (fromString txidString) anyNewEpochState
197+
pure $ maybeExtractGovernanceActionIndex (fromString txIdString) anyNewEpochState
200198

201199
let voteFp :: Int -> FilePath
202200
voteFp n = work </> gov </> "vote-" <> show n
@@ -206,7 +204,7 @@ hprop_ledger_events_info_action = integrationRetryWorkspace 2 "info-hash" $ \tem
206204
execCli' execConfig
207205
[ eraName, "governance", "vote", "create"
208206
, "--yes"
209-
, "--governance-action-tx-id", txidString
207+
, "--governance-action-tx-id", txIdString
210208
, "--governance-action-index", show @Word16 governanceActionIndex
211209
, "--drep-verification-key-file", verificationKeyFp $ defaultDRepKeyPair n
212210
, "--out-file", voteFp n

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/ProposeNewConstitution.hs

+3-6
Original file line numberDiff line numberDiff line change
@@ -248,10 +248,7 @@ hprop_ledger_events_propose_new_constitution = integrationWorkspace "propose-new
248248

249249
waitForGovActionVotes epochStateView (EpochInterval 1)
250250

251-
txid <- execCli' execConfig [ eraName, "transaction", "txid", "--tx-file", unFile signedProposalTx ]
252-
253-
let txNoNewline = Text.unpack (Text.strip (Text.pack txid))
254-
H.noteShow_ txNoNewline
251+
txId <- H.noteShowM $ retrieveTransactionId execConfig signedProposalTx
255252

256253
-- Count votes before checking for ratification. It may happen that the proposal gets removed after
257254
-- ratification because of a long waiting time, so we won't be able to access votes.
@@ -275,7 +272,7 @@ hprop_ledger_events_propose_new_constitution = integrationWorkspace "propose-new
275272
(\epochState _ _ -> foldBlocksCheckConstitutionWasRatified constitutionHash constitutionScriptHash epochState)
276273

277274
proposalsJSON :: Aeson.Value <- execCliStdoutToJson execConfig
278-
[ eraName, "query", "proposals", "--governance-action-tx-id", txNoNewline
275+
[ eraName, "query", "proposals", "--governance-action-tx-id", txId
279276
, "--governance-action-index", "0"
280277
]
281278

@@ -289,7 +286,7 @@ hprop_ledger_events_propose_new_constitution = integrationWorkspace "propose-new
289286

290287
-- Check TxId returned is the same as the one we used
291288
proposalsTxId <- H.evalMaybe $ proposal ^? Aeson.key "actionId" . Aeson.key "txId" . Aeson._String
292-
proposalsTxId === Text.pack txNoNewline
289+
proposalsTxId === Text.pack txId
293290

294291
-- Check that committeeVotes is an empty object
295292
proposalsCommitteeVotes <- H.evalMaybe $ proposal ^? Aeson.key "committeeVotes" . Aeson._Object

cardano-testnet/test/cardano-testnet-test/Cardano/Testnet/Test/Gov/TreasuryWithdrawal.hs

+3-5
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import Testnet.Components.Query
4242
import Testnet.Defaults
4343
import Testnet.Process.Cli.Keys (cliStakeAddressKeyGen)
4444
import Testnet.Process.Cli.SPO (createStakeKeyRegistrationCertificate)
45+
import Testnet.Process.Cli.Transaction (retrieveTransactionId)
4546
import Testnet.Process.Run (addEnvVarsToConfig, execCli', mkExecConfig)
4647
import Testnet.Property.Util (integrationRetryWorkspace)
4748
import Testnet.Start.Types
@@ -195,10 +196,7 @@ hprop_ledger_events_treasury_withdrawal = integrationRetryWorkspace 2 "treasury
195196
]
196197
-- }}}
197198

198-
txidString <- mconcat . lines <$> execCli' execConfig
199-
[ "latest", "transaction", "txid"
200-
, "--tx-file", txbodySignedFp
201-
]
199+
txIdString <- H.noteShowM $ retrieveTransactionId execConfig (File txbodySignedFp)
202200

203201
currentEpoch <- getCurrentEpochNo epochStateView
204202
let terminationEpoch = succ . succ $ currentEpoch
@@ -213,7 +211,7 @@ hprop_ledger_events_treasury_withdrawal = integrationRetryWorkspace 2 "treasury
213211
execCli' execConfig
214212
[ eraName, "governance", "vote", "create"
215213
, "--yes"
216-
, "--governance-action-tx-id", txidString
214+
, "--governance-action-tx-id", txIdString
217215
, "--governance-action-index", show governanceActionIndex
218216
, "--drep-verification-key-file", verificationKeyFp $ defaultDRepKeyPair n
219217
, "--out-file", voteFp n

0 commit comments

Comments
 (0)