@@ -110,18 +110,17 @@ import Prelude qualified
110
110
allNodeIds :: [Int ]
111
111
allNodeIds = [1 .. 3 ]
112
112
113
- -- | Like 'withTempDir', busing a common prefix to keep hydra-cluster logs more
114
- -- easily on CI.
113
+ -- | Like 'withTempDir', but using a common template to archive logs more easily
114
+ -- on CI.
115
115
--
116
116
-- NOTE: The ci-nix.yaml workflow depends on this.
117
- withClusterTempDir :: MonadIO m => String -> (FilePath -> m a ) -> m a
118
- withClusterTempDir name =
119
- withTempDir (" hydra-cluster-e2e-" <> name)
117
+ withClusterTempDir :: MonadIO m => (FilePath -> m a ) -> m a
118
+ withClusterTempDir = withTempDir " hydra-cluster"
120
119
121
120
spec :: Spec
122
121
spec = around (showLogsOnFailure " EndToEndSpec" ) $ do
123
122
it " End-to-end offline mode" $ \ tracer -> do
124
- withTempDir " offline-mode-e2e " $ \ tmpDir -> do
123
+ withClusterTempDir $ \ tmpDir -> do
125
124
(aliceCardanoVk, aliceCardanoSk) <- keysFor Alice
126
125
(bobCardanoVk, _) <- keysFor Bob
127
126
initialUTxO <- generate $ do
@@ -164,59 +163,59 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
164
163
describe " End-to-end on Cardano devnet" $ do
165
164
describe " single party hydra head" $ do
166
165
it " full head life-cycle" $ \ tracer -> do
167
- withClusterTempDir " single-full-life-cycle " $ \ tmpDir -> do
166
+ withClusterTempDir $ \ tmpDir -> do
168
167
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
169
168
publishHydraScriptsAs node Faucet
170
169
>>= singlePartyHeadFullLifeCycle tracer tmpDir node
171
170
it " can close with long deadline" $ \ tracer -> do
172
- withClusterTempDir " close-long-deadline " $ \ tmpDir -> do
171
+ withClusterTempDir $ \ tmpDir -> do
173
172
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
174
173
publishHydraScriptsAs node Faucet
175
174
>>= canCloseWithLongContestationPeriod tracer tmpDir node
176
175
it " can submit a timed tx" $ \ tracer -> do
177
- withClusterTempDir " timed-tx " $ \ tmpDir -> do
176
+ withClusterTempDir $ \ tmpDir -> do
178
177
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
179
178
publishHydraScriptsAs node Faucet
180
179
>>= timedTx tmpDir tracer node
181
180
it " commits from external with script utxo" $ \ tracer -> do
182
- withClusterTempDir " single-commits-script-from-external " $ \ tmpDir -> do
181
+ withClusterTempDir $ \ tmpDir -> do
183
182
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
184
183
publishHydraScriptsAs node Faucet
185
184
>>= singlePartyCommitsFromExternalScript tracer tmpDir node
186
185
it " commit external wallet utxo with inline datum in the script" $ \ tracer -> do
187
- withClusterTempDir " single-commits-script-from-external " $ \ tmpDir -> do
186
+ withClusterTempDir $ \ tmpDir -> do
188
187
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
189
188
publishHydraScriptsAs node Faucet
190
189
>>= singlePartyCommitsExternalScriptWithInlineDatum tracer tmpDir node
191
190
it " can't commit externally with internal wallet utxo" $ \ tracer -> do
192
- withClusterTempDir " commit-internal-wallet-utxo " $ \ tmpDir -> do
191
+ withClusterTempDir $ \ tmpDir -> do
193
192
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
194
193
publishHydraScriptsAs node Faucet
195
194
>>= singlePartyCannotCommitExternallyWalletUtxo tracer tmpDir node
196
195
it " can submit a signed user transaction" $ \ tracer -> do
197
- withClusterTempDir " submit-a-signed-user-transaction " $ \ tmpDir -> do
196
+ withClusterTempDir $ \ tmpDir -> do
198
197
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
199
198
publishHydraScriptsAs node Faucet
200
199
>>= canSubmitTransactionThroughAPI tracer tmpDir node
201
200
202
201
describe " three hydra nodes scenario" $ do
203
202
it " does not error when all nodes open the head concurrently" $ \ tracer ->
204
203
failAfter 60 $
205
- withClusterTempDir " three-no-errors " $ \ tmpDir -> do
204
+ withClusterTempDir $ \ tmpDir -> do
206
205
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node -> do
207
206
publishHydraScriptsAs node Faucet
208
207
>>= threeNodesNoErrorsOnOpen tracer tmpDir node
209
208
210
209
it " inits a Head, processes a single Cardano transaction and closes it again" $ \ tracer ->
211
210
failAfter 60 $
212
- withClusterTempDir " three-full-life-cycle " $ \ tmpDir -> do
211
+ withClusterTempDir $ \ tmpDir -> do
213
212
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node -> do
214
213
hydraScriptsTxId <- publishHydraScriptsAs node Faucet
215
214
initAndClose tmpDir tracer 1 hydraScriptsTxId node
216
215
217
216
it " inits a Head and closes it immediately" $ \ tracer ->
218
217
failAfter 60 $
219
- withClusterTempDir " three-init-close-immediately " $ \ tmpDir -> do
218
+ withClusterTempDir $ \ tmpDir -> do
220
219
let clusterIx = 0
221
220
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node@ RunningNode {nodeSocket} -> do
222
221
aliceKeys@ (aliceCardanoVk, _) <- generate genKeyPair
@@ -279,25 +278,25 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
279
278
280
279
describe " restarting nodes" $ do
281
280
it " can abort head after restart" $ \ tracer -> do
282
- withClusterTempDir " abort-after-restart " $ \ tmpDir -> do
281
+ withClusterTempDir $ \ tmpDir -> do
283
282
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
284
283
publishHydraScriptsAs node Faucet
285
284
>>= restartedNodeCanAbort tracer tmpDir node
286
285
287
286
it " can observe a commit tx after a restart, even when a tx happened while down" $ \ tracer -> do
288
- withClusterTempDir " commit-after-restart " $ \ tmpDir -> do
287
+ withClusterTempDir $ \ tmpDir -> do
289
288
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
290
289
publishHydraScriptsAs node Faucet
291
290
>>= restartedNodeCanObserveCommitTx tracer tmpDir node
292
291
293
292
it " prevent resuming a head after reconfiguring a peer" $ \ tracer -> do
294
- withClusterTempDir " prevent-resume-reconfiguring-peer " $ \ tmpDir -> do
293
+ withClusterTempDir $ \ tmpDir -> do
295
294
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node ->
296
295
publishHydraScriptsAs node Faucet
297
296
>>= testPreventResumeReconfiguredPeer tracer tmpDir node
298
297
299
298
it " can start chain from the past and replay on-chain events" $ \ tracer ->
300
- withClusterTempDir " replay-chain-events " $ \ tmp ->
299
+ withClusterTempDir $ \ tmp ->
301
300
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmp $ \ node@ RunningNode {nodeSocket, networkId} -> do
302
301
(aliceCardanoVk, _aliceCardanoSk) <- keysFor Alice
303
302
let contestationPeriod = UnsafeContestationPeriod 10
@@ -325,7 +324,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
325
324
headId' `shouldBe` aliceHeadId
326
325
327
326
it " close of an initial snapshot from re-initialized node is contested" $ \ tracer ->
328
- withClusterTempDir " contest-after-restart " $ \ tmp ->
327
+ withClusterTempDir $ \ tmp ->
329
328
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmp $ \ node@ RunningNode {nodeSocket, networkId} -> do
330
329
hydraScriptsTxId <- publishHydraScriptsAs node Faucet
331
330
@@ -407,7 +406,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
407
406
describe " two hydra heads scenario" $ do
408
407
it " two heads on the same network do not conflict" $ \ tracer ->
409
408
failAfter 60 $
410
- withClusterTempDir " two-heads-no-conflict " $ \ tmpDir -> do
409
+ withClusterTempDir $ \ tmpDir -> do
411
410
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node -> do
412
411
hydraScriptsTxId <- publishHydraScriptsAs node Faucet
413
412
concurrently_
@@ -416,14 +415,14 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
416
415
417
416
it " alice inits a Head with incorrect keys preventing bob from observing InitTx" $ \ tracer ->
418
417
failAfter 60 $
419
- withClusterTempDir " incorrect-cardano-keys " $ \ tmpDir -> do
418
+ withClusterTempDir $ \ tmpDir -> do
420
419
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node -> do
421
420
publishHydraScriptsAs node Faucet
422
421
>>= initWithWrongKeys tmpDir tracer node
423
422
424
423
it " bob cannot abort alice's head" $ \ tracer -> do
425
424
failAfter 60 $
426
- withClusterTempDir " two-heads-cant-abort " $ \ tmpDir -> do
425
+ withClusterTempDir $ \ tmpDir -> do
427
426
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node@ RunningNode {nodeSocket} -> do
428
427
(aliceCardanoVk, _aliceCardanoSk) <- keysFor Alice
429
428
(bobCardanoVk, _bobCardanoSk) <- keysFor Bob
@@ -457,7 +456,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
457
456
458
457
describe " Monitoring" $ do
459
458
it " Node exposes Prometheus metrics on port 6001" $ \ tracer -> do
460
- withClusterTempDir " prometheus-metrics " $ \ tmpDir -> do
459
+ withClusterTempDir $ \ tmpDir -> do
461
460
(aliceCardanoVk, _) <- keysFor Alice
462
461
withCardanoNodeDevnet (contramap FromCardanoNode tracer) tmpDir $ \ node@ RunningNode {nodeSocket} -> do
463
462
hydraScriptsTxId <- publishHydraScriptsAs node Faucet
@@ -480,7 +479,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
480
479
481
480
describe " hydra-node executable" $ do
482
481
it " logs its command line arguments" $ \ tracer -> do
483
- withClusterTempDir " logs-options " $ \ dir -> do
482
+ withClusterTempDir $ \ dir -> do
484
483
withCardanoNodeDevnet (contramap FromCardanoNode tracer) dir $ \ node@ RunningNode {nodeSocket} -> do
485
484
let hydraTracer = contramap FromHydraNode tracer
486
485
hydraScriptsTxId <- publishHydraScriptsAs node Faucet
@@ -490,7 +489,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
490
489
line ^? key " message" . key " tag" == Just (Aeson. String " NodeOptions" )
491
490
492
491
it " logs to a logfile" $ \ tracer -> do
493
- withClusterTempDir " logs-to-logfile " $ \ dir -> do
492
+ withClusterTempDir $ \ dir -> do
494
493
withCardanoNodeDevnet (contramap FromCardanoNode tracer) dir $ \ node@ RunningNode {nodeSocket} -> do
495
494
let hydraTracer = contramap FromHydraNode tracer
496
495
hydraScriptsTxId <- publishHydraScriptsAs node Faucet
@@ -507,7 +506,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
507
506
describe " forking eras" $ do
508
507
it " does report on unsupported era" $ \ tracer -> do
509
508
pendingWith " Currently supporting Conway era no future upcoming"
510
- withClusterTempDir " unsupported-era " $ \ tmpDir -> do
509
+ withClusterTempDir $ \ tmpDir -> do
511
510
args <- setupCardanoDevnet tmpDir
512
511
forkIntoConwayInEpoch tmpDir args 1
513
512
withCardanoNode (contramap FromCardanoNode tracer) tmpDir args $ \ node@ RunningNode {nodeSocket} -> do
@@ -527,7 +526,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
527
526
528
527
it " does report on unsupported era on startup" $ \ tracer -> do
529
528
pendingWith " Currently supporting Conway era no future upcoming"
530
- withClusterTempDir " unsupported-era-startup " $ \ tmpDir -> do
529
+ withClusterTempDir $ \ tmpDir -> do
531
530
args <- setupCardanoDevnet tmpDir
532
531
forkIntoConwayInEpoch tmpDir args 1
533
532
withCardanoNode (contramap FromCardanoNode tracer) tmpDir args $ \ node@ RunningNode {nodeSocket} -> do
@@ -544,7 +543,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
544
543
errorOutputs `shouldContain` " upgrade your hydra-node"
545
544
546
545
it " support new era" $ \ tracer -> do
547
- withClusterTempDir " support-new-era " $ \ tmpDir -> do
546
+ withClusterTempDir $ \ tmpDir -> do
548
547
args <- setupCardanoDevnet tmpDir
549
548
550
549
forkIntoConwayInEpoch tmpDir args 10
@@ -580,7 +579,7 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
580
579
guard $ snapshotNumber == Aeson. Number 0
581
580
582
581
it " support new era on restart" $ \ tracer -> do
583
- withClusterTempDir " support-new-era-restart " $ \ tmpDir -> do
582
+ withClusterTempDir $ \ tmpDir -> do
584
583
args <- setupCardanoDevnet tmpDir
585
584
586
585
forkIntoConwayInEpoch tmpDir args 10
0 commit comments