@@ -13,6 +13,7 @@ import (
1313 "testing"
1414 "time"
1515
16+ tastoradocker "github.com/celestiaorg/tastora/framework/docker"
1617 "github.com/ethereum/go-ethereum/common"
1718 "github.com/ethereum/go-ethereum/ethclient"
1819 "github.com/rs/zerolog"
@@ -77,13 +78,14 @@ func setupSequencerWithForceInclusion(t *testing.T, sut *SystemUnderTest, nodeHo
7778 t .Helper ()
7879
7980 // Use common setup (no full node needed initially)
80- jwtSecret , _ , genesisHash , endpoints , _ := setupCommonEVMTest (t , sut , false )
81+ dcli , netID := tastoradocker .Setup (t )
82+ env := setupCommonEVMEnv (t , sut , dcli , netID )
8183
8284 // Create passphrase file
8385 passphraseFile := createPassphraseFile (t , nodeHome )
8486
8587 // Create JWT secret file
86- jwtSecretFile := createJWTSecretFile (t , nodeHome , jwtSecret )
88+ jwtSecretFile := createJWTSecretFile (t , nodeHome , env . SequencerJWT )
8789
8890 // Initialize sequencer node
8991 output , err := sut .RunCmd (evmSingleBinaryPath ,
@@ -102,25 +104,25 @@ func setupSequencerWithForceInclusion(t *testing.T, sut *SystemUnderTest, nodeHo
102104 args := []string {
103105 "start" ,
104106 "--evm.jwt-secret-file" , jwtSecretFile ,
105- "--evm.genesis-hash" , genesisHash ,
107+ "--evm.genesis-hash" , env . GenesisHash ,
106108 "--evnode.node.block_time" , DefaultBlockTime ,
107109 "--evnode.node.aggregator=true" ,
108110 "--evnode.signer.passphrase_file" , passphraseFile ,
109111 "--home" , nodeHome ,
110112 "--evnode.da.block_time" , DefaultDABlockTime ,
111- "--evnode.da.address" , endpoints .GetDAAddress (),
113+ "--evnode.da.address" , env . Endpoints .GetDAAddress (),
112114 "--evnode.da.namespace" , DefaultDANamespace ,
113115 "--evnode.da.forced_inclusion_namespace" , "forced-inc" ,
114- "--evnode.rpc.address" , endpoints .GetRollkitRPCListen (),
115- "--evnode.p2p.listen_address" , endpoints .GetRollkitP2PAddress (),
116- "--evm.engine-url" , endpoints .GetSequencerEngineURL (),
117- "--evm.eth-url" , endpoints .GetSequencerEthURL (),
116+ "--evnode.rpc.address" , env . Endpoints .GetRollkitRPCListen (),
117+ "--evnode.p2p.listen_address" , env . Endpoints .GetRollkitP2PAddress (),
118+ "--evm.engine-url" , env . Endpoints .GetSequencerEngineURL (),
119+ "--evm.eth-url" , env . Endpoints .GetSequencerEthURL (),
118120 "--force-inclusion-server" , fiAddr ,
119121 }
120122 sut .ExecCmd (evmSingleBinaryPath , args ... )
121- sut .AwaitNodeUp (t , endpoints .GetRollkitRPCAddress (), NodeStartupTimeout )
123+ sut .AwaitNodeUp (t , env . Endpoints .GetRollkitRPCAddress (), NodeStartupTimeout )
122124
123- return genesisHash , endpoints .GetSequencerEthURL ()
125+ return env . GenesisHash , env . Endpoints .GetSequencerEthURL ()
124126}
125127
126128func TestEvmSequencerForceInclusionE2E (t * testing.T ) {
@@ -192,10 +194,11 @@ func TestEvmFullNodeForceInclusionE2E(t *testing.T) {
192194 // --- Start Sequencer Setup ---
193195 // We manually setup sequencer here because we need the force inclusion flag,
194196 // and we need to capture variables for full node setup.
195- jwtSecret , fullNodeJwtSecret , genesisHash , endpoints , _ := setupCommonEVMTest (t , sut , true )
197+ dockerClient , networkID := tastoradocker .Setup (t )
198+ env := setupCommonEVMEnv (t , sut , dockerClient , networkID , WithFullNode ())
196199
197200 passphraseFile := createPassphraseFile (t , sequencerHome )
198- jwtSecretFile := createJWTSecretFile (t , sequencerHome , jwtSecret )
201+ jwtSecretFile := createJWTSecretFile (t , sequencerHome , env . SequencerJWT )
199202
200203 output , err := sut .RunCmd (evmSingleBinaryPath ,
201204 "init" ,
@@ -212,38 +215,38 @@ func TestEvmFullNodeForceInclusionE2E(t *testing.T) {
212215 seqArgs := []string {
213216 "start" ,
214217 "--evm.jwt-secret-file" , jwtSecretFile ,
215- "--evm.genesis-hash" , genesisHash ,
218+ "--evm.genesis-hash" , env . GenesisHash ,
216219 "--evnode.node.block_time" , DefaultBlockTime ,
217220 "--evnode.node.aggregator=true" ,
218221 "--evnode.signer.passphrase_file" , passphraseFile ,
219222 "--home" , sequencerHome ,
220223 "--evnode.da.block_time" , DefaultDABlockTime ,
221- "--evnode.da.address" , endpoints .GetDAAddress (),
224+ "--evnode.da.address" , env . Endpoints .GetDAAddress (),
222225 "--evnode.da.namespace" , DefaultDANamespace ,
223226 "--evnode.da.forced_inclusion_namespace" , "forced-inc" ,
224- "--evnode.rpc.address" , endpoints .GetRollkitRPCListen (),
225- "--evnode.p2p.listen_address" , endpoints .GetRollkitP2PAddress (),
226- "--evm.engine-url" , endpoints .GetSequencerEngineURL (),
227- "--evm.eth-url" , endpoints .GetSequencerEthURL (),
227+ "--evnode.rpc.address" , env . Endpoints .GetRollkitRPCListen (),
228+ "--evnode.p2p.listen_address" , env . Endpoints .GetRollkitP2PAddress (),
229+ "--evm.engine-url" , env . Endpoints .GetSequencerEngineURL (),
230+ "--evm.eth-url" , env . Endpoints .GetSequencerEthURL (),
228231 "--force-inclusion-server" , fiAddr ,
229232 }
230233 sut .ExecCmd (evmSingleBinaryPath , seqArgs ... )
231- sut .AwaitNodeUp (t , endpoints .GetRollkitRPCAddress (), NodeStartupTimeout )
234+ sut .AwaitNodeUp (t , env . Endpoints .GetRollkitRPCAddress (), NodeStartupTimeout )
232235 t .Log ("Sequencer is up with force inclusion enabled" )
233236 // --- End Sequencer Setup ---
234237
235238 // --- Start Full Node Setup ---
236239 // Reuse setupFullNode helper which handles genesis copying and node startup
237- setupFullNode (t , sut , fullNodeHome , sequencerHome , fullNodeJwtSecret , genesisHash , endpoints . GetRollkitP2PAddress (), endpoints )
240+ setupFullNode (t , sut , fullNodeHome , sequencerHome , env . FullNodeJWT , env . GenesisHash , env . Endpoints . GetRollkitP2PAddress (), env . Endpoints )
238241 t .Log ("Full node is up" )
239242 // --- End Full Node Setup ---
240243
241244 // Connect to clients
242- seqClient , err := ethclient .Dial (endpoints .GetSequencerEthURL ())
245+ seqClient , err := ethclient .Dial (env . Endpoints .GetSequencerEthURL ())
243246 require .NoError (t , err )
244247 defer seqClient .Close ()
245248
246- fnClient , err := ethclient .Dial (endpoints .GetFullNodeEthURL ())
249+ fnClient , err := ethclient .Dial (env . Endpoints .GetFullNodeEthURL ())
247250 require .NoError (t , err )
248251 defer fnClient .Close ()
249252
@@ -284,10 +287,12 @@ func setupMaliciousSequencer(t *testing.T, sut *SystemUnderTest, nodeHome string
284287 t .Helper ()
285288
286289 // Use common setup with full node support
287- jwtSecret , fullNodeJwtSecret , genesisHash , endpoints , _ := setupCommonEVMTest (t , sut , true )
290+ dockerClient , networkID := tastoradocker .Setup (t )
291+ env := setupCommonEVMEnv (t , sut , dockerClient , networkID , WithFullNode ())
292+ // Use env fields inline below to reduce local vars
288293
289294 passphraseFile := createPassphraseFile (t , nodeHome )
290- jwtSecretFile := createJWTSecretFile (t , nodeHome , jwtSecret )
295+ jwtSecretFile := createJWTSecretFile (t , nodeHome , env . SequencerJWT )
291296
292297 output , err := sut .RunCmd (evmSingleBinaryPath ,
293298 "init" ,
@@ -303,25 +308,25 @@ func setupMaliciousSequencer(t *testing.T, sut *SystemUnderTest, nodeHome string
303308 seqArgs := []string {
304309 "start" ,
305310 "--evm.jwt-secret-file" , jwtSecretFile ,
306- "--evm.genesis-hash" , genesisHash ,
311+ "--evm.genesis-hash" , env . GenesisHash ,
307312 "--evnode.node.block_time" , DefaultBlockTime ,
308313 "--evnode.node.aggregator=true" ,
309314 "--evnode.signer.passphrase_file" , passphraseFile ,
310315 "--home" , nodeHome ,
311316 "--evnode.da.block_time" , DefaultDABlockTime ,
312- "--evnode.da.address" , endpoints .GetDAAddress (),
317+ "--evnode.da.address" , env . Endpoints .GetDAAddress (),
313318 "--evnode.da.namespace" , DefaultDANamespace ,
314319 // CRITICAL: Set sequencer to listen to WRONG namespace - it won't see forced txs
315320 "--evnode.da.forced_inclusion_namespace" , "wrong-namespace" ,
316- "--evnode.rpc.address" , endpoints .GetRollkitRPCListen (),
317- "--evnode.p2p.listen_address" , endpoints .GetRollkitP2PAddress (),
318- "--evm.engine-url" , endpoints .GetSequencerEngineURL (),
319- "--evm.eth-url" , endpoints .GetSequencerEthURL (),
321+ "--evnode.rpc.address" , env . Endpoints .GetRollkitRPCListen (),
322+ "--evnode.p2p.listen_address" , env . Endpoints .GetRollkitP2PAddress (),
323+ "--evm.engine-url" , env . Endpoints .GetSequencerEngineURL (),
324+ "--evm.eth-url" , env . Endpoints .GetSequencerEthURL (),
320325 }
321326 sut .ExecCmd (evmSingleBinaryPath , seqArgs ... )
322- sut .AwaitNodeUp (t , endpoints .GetRollkitRPCAddress (), NodeStartupTimeout )
327+ sut .AwaitNodeUp (t , env . Endpoints .GetRollkitRPCAddress (), NodeStartupTimeout )
323328
324- return genesisHash , fullNodeJwtSecret , endpoints
329+ return env . GenesisHash , env . FullNodeJWT , env . Endpoints
325330}
326331
327332// setupFullNodeWithForceInclusionCheck sets up a full node that WILL verify forced inclusion txs
0 commit comments