@@ -190,6 +190,57 @@ spec = around (showLogsOnFailure "EndToEndSpec") $ do
190
190
waitMatch 10 bobNode $ \ v -> do
191
191
guard $ v ^? key " tag" == Just " SnapshotConfirmed"
192
192
193
+ it " supports multiple etcd clusters" $ \ tracer -> do
194
+ withClusterTempDir $ \ tmpDir -> do
195
+ (aliceCardanoVk, _) <- keysFor Alice
196
+ (bobCardanoVk, _) <- keysFor Bob
197
+ (carolCardanoVk, _) <- keysFor Carol
198
+
199
+ initialUTxO <- generate $ do
200
+ a <- genUTxOFor aliceCardanoVk
201
+ b <- genUTxOFor bobCardanoVk
202
+ c <- genUTxOFor carolCardanoVk
203
+ pure $ a <> b <> c
204
+
205
+ initialUTxO' <- generate $ do
206
+ b <- genUTxOFor bobCardanoVk
207
+ c <- genUTxOFor carolCardanoVk
208
+ pure $ b <> c
209
+
210
+ Aeson. encodeFile (tmpDir </> " utxo.json" ) initialUTxO
211
+ Aeson. encodeFile (tmpDir </> " utxo2.json" ) initialUTxO'
212
+
213
+ let offlineConfig =
214
+ Offline
215
+ OfflineChainConfig
216
+ { offlineHeadSeed = " test"
217
+ , initialUTxOFile = tmpDir </> " utxo.json"
218
+ , ledgerGenesisFile = Nothing
219
+ }
220
+
221
+ let offlineConfig' =
222
+ Offline
223
+ OfflineChainConfig
224
+ { offlineHeadSeed = " test2"
225
+ , initialUTxOFile = tmpDir </> " utxo2.json"
226
+ , ledgerGenesisFile = Nothing
227
+ }
228
+
229
+ let hydraTracer = contramap FromHydraNode tracer
230
+
231
+ withHydraNode hydraTracer offlineConfig tmpDir 1 aliceSk [bobVk, carolVk] [1 , 2 , 3 ] $ \ n1 -> do
232
+ withHydraNode hydraTracer offlineConfig tmpDir 2 bobSk [aliceVk, carolVk] [1 , 2 , 3 ] $ \ n2 -> do
233
+ withHydraNode hydraTracer offlineConfig tmpDir 3 carolSk [aliceVk, bobVk] [1 , 2 , 3 ] $ \ n3 -> do
234
+ waitForNodesConnected hydraTracer 30 $ n1 :| [n2, n3]
235
+
236
+ withHydraNode hydraTracer offlineConfig' tmpDir 2 bobSk [carolVk] [2 , 3 ] $ \ n2 -> do
237
+ withHydraNode hydraTracer offlineConfig' tmpDir 3 carolSk [bobVk] [2 , 3 ] $ \ n3 -> do
238
+ waitForNodesConnected hydraTracer 30 $ n2 :| [n3]
239
+
240
+ withHydraNode hydraTracer offlineConfig tmpDir 2 bobSk [aliceVk, carolVk] [1 , 2 , 3 ] $ \ n2 -> do
241
+ withHydraNode hydraTracer offlineConfig tmpDir 3 carolSk [aliceVk, bobVk] [1 , 2 , 3 ] $ \ n3 -> do
242
+ waitForNodesConnected hydraTracer 30 $ n1 :| [n2, n3]
243
+
193
244
describe " End-to-end on Cardano devnet" $ do
194
245
describe " single party hydra head" $ do
195
246
it " full head life-cycle" $ \ tracer -> do
0 commit comments