Skip to content
This repository was archived by the owner on May 11, 2024. It is now read-only.

Commit 069b8a5

Browse files
authored
test(testutils): update testutils (#565)
1 parent f5d1146 commit 069b8a5

File tree

10 files changed

+74
-90
lines changed

10 files changed

+74
-90
lines changed

driver/chain_syncer/calldata/syncer_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (s *CalldataSyncerTestSuite) TestProcessL1Blocks() {
9696

9797
func (s *CalldataSyncerTestSuite) TestProcessL1BlocksReorg() {
9898
head, err := s.s.rpc.L1.HeaderByNumber(context.Background(), nil)
99-
testutils.ProposeAndInsertEmptyBlocks(&s.ClientTestSuite, s.p, s.s)
99+
s.ProposeAndInsertEmptyBlocks(s.p, s.s)
100100
s.Nil(err)
101101
s.Nil(s.s.ProcessL1Blocks(context.Background(), head))
102102
}
@@ -156,7 +156,7 @@ func (s *CalldataSyncerTestSuite) TestTreasuryIncomeAllAnchors() {
156156
headBefore, err := s.RPCClient.L2.BlockNumber(context.Background())
157157
s.Nil(err)
158158

159-
testutils.ProposeAndInsertEmptyBlocks(&s.ClientTestSuite, s.p, s.s)
159+
s.ProposeAndInsertEmptyBlocks(s.p, s.s)
160160

161161
headAfter, err := s.RPCClient.L2.BlockNumber(context.Background())
162162
s.Nil(err)
@@ -178,8 +178,8 @@ func (s *CalldataSyncerTestSuite) TestTreasuryIncome() {
178178
headBefore, err := s.RPCClient.L2.BlockNumber(context.Background())
179179
s.Nil(err)
180180

181-
testutils.ProposeAndInsertEmptyBlocks(&s.ClientTestSuite, s.p, s.s)
182-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.s)
181+
s.ProposeAndInsertEmptyBlocks(s.p, s.s)
182+
s.ProposeAndInsertValidBlock(s.p, s.s)
183183

184184
headAfter, err := s.RPCClient.L2.BlockNumber(context.Background())
185185
s.Nil(err)

driver/chain_syncer/chain_syncer_test.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func (s *ChainSyncerTestSuite) TestSync() {
9191
func (s *ChainSyncerTestSuite) TestAheadOfProtocolVerifiedHead2() {
9292
s.TakeSnapshot()
9393
// propose a couple blocks
94-
testutils.ProposeAndInsertEmptyBlocks(&s.ClientTestSuite, s.p, s.s.calldataSyncer)
94+
s.ProposeAndInsertEmptyBlocks(s.p, s.s.calldataSyncer)
9595

9696
// NOTE: need to prove the proposed blocks to be verified, writing helper function
9797
// generate transactopts to interact with TaikoL1 contract with.
@@ -136,14 +136,12 @@ func TestChainSyncerTestSuite(t *testing.T) {
136136

137137
func (s *ChainSyncerTestSuite) TakeSnapshot() {
138138
// record snapshot state to revert to before changes
139-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &s.snapshotID, "evm_snapshot"))
139+
s.snapshotID = s.SetL1Snapshot()
140140
}
141141

142142
func (s *ChainSyncerTestSuite) RevertSnapshot() {
143143
// revert to the snapshot state so protocol configs are unaffected
144-
var revertRes bool
145-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &revertRes, "evm_revert", s.snapshotID))
146-
s.True(revertRes)
144+
s.RevertL1Snapshot(s.snapshotID)
147145
s.Nil(rpc.SetHead(context.Background(), s.RPCClient.L2, common.Big0))
148146
}
149147

driver/driver_test.go

+19-31
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,15 @@ func (s *DriverTestSuite) TestProcessL1Blocks() {
9595
s.Nil(s.d.ChainSyncer().CalldataSyncer().ProcessL1Blocks(context.Background(), l1Head1))
9696

9797
// Propose a valid L2 block
98-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
98+
s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().CalldataSyncer())
9999

100100
l2Head2, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil)
101101
s.Nil(err)
102102

103103
s.Greater(l2Head2.Number.Uint64(), l2Head1.Number.Uint64())
104104

105105
// Empty blocks
106-
testutils.ProposeAndInsertEmptyBlocks(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
106+
s.ProposeAndInsertEmptyBlocks(s.p, s.d.ChainSyncer().CalldataSyncer())
107107
s.Nil(err)
108108

109109
l2Head3, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil)
@@ -129,19 +129,17 @@ func (s *DriverTestSuite) TestProcessL1Blocks() {
129129
}
130130

131131
func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() {
132-
var testnetL1SnapshotID string
133-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &testnetL1SnapshotID, "evm_snapshot"))
134-
s.NotEmpty(testnetL1SnapshotID)
132+
var testnetL1SnapshotID = s.SetL1Snapshot()
135133

136134
l1Head1, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
137135
s.Nil(err)
138136
l2Head1, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil)
139137
s.Nil(err)
140138

141139
// Propose two L2 blocks
142-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
140+
s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().CalldataSyncer())
143141

144-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
142+
s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().CalldataSyncer())
145143

146144
l1Head2, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
147145
s.Nil(err)
@@ -159,9 +157,7 @@ func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() {
159157
s.False(reorged)
160158

161159
// Reorg back to l2Head1
162-
var revertRes bool
163-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &revertRes, "evm_revert", testnetL1SnapshotID))
164-
s.True(revertRes)
160+
s.RevertL1Snapshot(testnetL1SnapshotID)
165161

166162
l1Head3, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
167163
s.Nil(err)
@@ -170,7 +166,7 @@ func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() {
170166

171167
// Propose ten blocks on another fork
172168
for i := 0; i < 10; i++ {
173-
testutils.ProposeInvalidTxListBytes(&s.ClientTestSuite, s.p)
169+
s.ProposeInvalidTxListBytes(s.p)
174170
}
175171

176172
l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
@@ -192,19 +188,17 @@ func (s *DriverTestSuite) TestCheckL1ReorgToHigherFork() {
192188
}
193189

194190
func (s *DriverTestSuite) TestCheckL1ReorgToLowerFork() {
195-
var testnetL1SnapshotID string
196-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &testnetL1SnapshotID, "evm_snapshot"))
197-
s.NotEmpty(testnetL1SnapshotID)
191+
var testnetL1SnapshotID = s.SetL1Snapshot()
198192

199193
l1Head1, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
200194
s.Nil(err)
201195
l2Head1, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil)
202196
s.Nil(err)
203197

204198
// Propose two L2 blocks
205-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
199+
s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().CalldataSyncer())
206200
time.Sleep(3 * time.Second)
207-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
201+
s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().CalldataSyncer())
208202

209203
l1Head2, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
210204
s.Nil(err)
@@ -222,17 +216,15 @@ func (s *DriverTestSuite) TestCheckL1ReorgToLowerFork() {
222216
s.False(reorged)
223217

224218
// Reorg back to l2Head1
225-
var revertRes bool
226-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &revertRes, "evm_revert", testnetL1SnapshotID))
227-
s.True(revertRes)
219+
s.RevertL1Snapshot(testnetL1SnapshotID)
228220

229221
l1Head3, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
230222
s.Nil(err)
231223
s.Equal(l1Head3.Number.Uint64(), l1Head1.Number.Uint64())
232224
s.Equal(l1Head3.Hash(), l1Head1.Hash())
233225

234226
// Propose one blocks on another fork
235-
testutils.ProposeInvalidTxListBytes(&s.ClientTestSuite, s.p)
227+
s.ProposeInvalidTxListBytes(s.p)
236228

237229
l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
238230
s.Nil(err)
@@ -252,19 +244,17 @@ func (s *DriverTestSuite) TestCheckL1ReorgToLowerFork() {
252244
}
253245

254246
func (s *DriverTestSuite) TestCheckL1ReorgToSameHeightFork() {
255-
var testnetL1SnapshotID string
256-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &testnetL1SnapshotID, "evm_snapshot"))
257-
s.NotEmpty(testnetL1SnapshotID)
247+
var testnetL1SnapshotID = s.SetL1Snapshot()
258248

259249
l1Head1, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
260250
s.Nil(err)
261251
l2Head1, err := s.d.rpc.L2.HeaderByNumber(context.Background(), nil)
262252
s.Nil(err)
263253

264254
// Propose two L2 blocks
265-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
255+
s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().CalldataSyncer())
266256
time.Sleep(3 * time.Second)
267-
testutils.ProposeAndInsertValidBlock(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
257+
s.ProposeAndInsertValidBlock(s.p, s.d.ChainSyncer().CalldataSyncer())
268258

269259
l1Head2, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
270260
s.Nil(err)
@@ -282,19 +272,17 @@ func (s *DriverTestSuite) TestCheckL1ReorgToSameHeightFork() {
282272
s.False(reorged)
283273

284274
// Reorg back to l2Head1
285-
var revertRes bool
286-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &revertRes, "evm_revert", testnetL1SnapshotID))
287-
s.True(revertRes)
275+
s.RevertL1Snapshot(testnetL1SnapshotID)
288276

289277
l1Head3, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
290278
s.Nil(err)
291279
s.Equal(l1Head3.Number.Uint64(), l1Head1.Number.Uint64())
292280
s.Equal(l1Head3.Hash(), l1Head1.Hash())
293281

294282
// Propose two blocks on another fork
295-
testutils.ProposeInvalidTxListBytes(&s.ClientTestSuite, s.p)
283+
s.ProposeInvalidTxListBytes(s.p)
296284
time.Sleep(3 * time.Second)
297-
testutils.ProposeInvalidTxListBytes(&s.ClientTestSuite, s.p)
285+
s.ProposeInvalidTxListBytes(s.p)
298286

299287
l1Head4, err := s.d.rpc.L1.HeaderByNumber(context.Background(), nil)
300288
s.Nil(err)
@@ -326,7 +314,7 @@ func (s *DriverTestSuite) TestStartClose() {
326314

327315
func (s *DriverTestSuite) TestL1Current() {
328316
// propose and insert a block
329-
testutils.ProposeAndInsertEmptyBlocks(&s.ClientTestSuite, s.p, s.d.ChainSyncer().CalldataSyncer())
317+
s.ProposeAndInsertEmptyBlocks(s.p, s.d.ChainSyncer().CalldataSyncer())
330318
// reset L1 current with increased height
331319
s.Nil(s.d.state.ResetL1Current(s.d.ctx, common.Big1))
332320
}

internal/testutils/helper.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,13 @@ import (
2424
"github.com/taikoxyz/taiko-client/prover/server"
2525
)
2626

27-
func ProposeInvalidTxListBytes(s *ClientTestSuite, proposer Proposer) {
27+
func (s *ClientTestSuite) ProposeInvalidTxListBytes(proposer Proposer) {
2828
invalidTxListBytes := RandomBytes(256)
2929

3030
s.Nil(proposer.ProposeTxList(context.Background(), invalidTxListBytes, 1, nil))
3131
}
3232

33-
func ProposeAndInsertEmptyBlocks(
34-
s *ClientTestSuite,
33+
func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks(
3534
proposer Proposer,
3635
calldataSyncer CalldataSyncer,
3736
) []*bindings.TaikoL1ClientBlockProposed {
@@ -56,7 +55,7 @@ func ProposeAndInsertEmptyBlocks(
5655

5756
s.Nil(proposer.ProposeTxList(context.Background(), encoded, 0, nil))
5857

59-
ProposeInvalidTxListBytes(s, proposer)
58+
s.ProposeInvalidTxListBytes(proposer)
6059

6160
// Random bytes txList
6261
s.Nil(proposer.ProposeEmptyBlockOp(context.Background()))
@@ -85,8 +84,7 @@ func ProposeAndInsertEmptyBlocks(
8584

8685
// ProposeAndInsertValidBlock proposes an valid tx list and then insert it
8786
// into L2 execution engine's local chain.
88-
func ProposeAndInsertValidBlock(
89-
s *ClientTestSuite,
87+
func (s *ClientTestSuite) ProposeAndInsertValidBlock(
9088
proposer Proposer,
9189
calldataSyncer CalldataSyncer,
9290
) *bindings.TaikoL1ClientBlockProposed {
@@ -156,8 +154,7 @@ func ProposeAndInsertValidBlock(
156154

157155
// NewTestProverServer starts a new prover server that has channel listeners to respond and react
158156
// to requests for capacity, which provers can call.
159-
func NewTestProverServer(
160-
s *ClientTestSuite,
157+
func (s *ClientTestSuite) NewTestProverServer(
161158
proverPrivKey *ecdsa.PrivateKey,
162159
url *url.URL,
163160
) *server.ProverServer {

internal/testutils/suite.go

+16-6
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (s *ClientTestSuite) SetupTest() {
6464
s.Nil(err)
6565

6666
s.ProverEndpoints = []*url.URL{LocalRandomProverEndpoint()}
67-
s.proverServer = NewTestProverServer(s, l1ProverPrivKey, s.ProverEndpoints[0])
67+
s.proverServer = s.NewTestProverServer(l1ProverPrivKey, s.ProverEndpoints[0])
6868

6969
balance, err := rpcCli.TaikoToken.BalanceOf(nil, crypto.PubkeyToAddress(l1ProverPrivKey.PublicKey))
7070
s.Nil(err)
@@ -92,8 +92,7 @@ func (s *ClientTestSuite) SetupTest() {
9292
s.setAllowance(l1ProverPrivKey)
9393
s.setAllowance(ownerPrivKey)
9494
}
95-
s.Nil(rpcCli.L1.CallContext(context.Background(), &s.testnetL1SnapshotID, "evm_snapshot"))
96-
s.NotEmpty(s.testnetL1SnapshotID)
95+
s.testnetL1SnapshotID = s.SetL1Snapshot()
9796
}
9897

9998
func (s *ClientTestSuite) setAllowance(key *ecdsa.PrivateKey) {
@@ -124,9 +123,7 @@ func (s *ClientTestSuite) setAllowance(key *ecdsa.PrivateKey) {
124123
}
125124

126125
func (s *ClientTestSuite) TearDownTest() {
127-
var revertRes bool
128-
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &revertRes, "evm_revert", s.testnetL1SnapshotID))
129-
s.True(revertRes)
126+
s.RevertL1Snapshot(s.testnetL1SnapshotID)
130127

131128
s.Nil(rpc.SetHead(context.Background(), s.RPCClient.L2, common.Big0))
132129
s.Nil(s.proverServer.Shutdown(context.Background()))
@@ -141,3 +138,16 @@ func (s *ClientTestSuite) IncreaseTime(time uint64) {
141138
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &result, "evm_increaseTime", time))
142139
s.NotNil(result)
143140
}
141+
142+
func (s *ClientTestSuite) SetL1Snapshot() string {
143+
var snapshotID string
144+
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &snapshotID, "evm_snapshot"))
145+
s.NotEmpty(snapshotID)
146+
return snapshotID
147+
}
148+
149+
func (s *ClientTestSuite) RevertL1Snapshot(snapshotID string) {
150+
var revertRes bool
151+
s.Nil(s.RPCClient.L1.CallContext(context.Background(), &revertRes, "evm_revert", snapshotID))
152+
s.True(revertRes)
153+
}

pkg/rpc/methods.go

+17-2
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,6 @@ func (c *Client) WaitL1Origin(ctx context.Context, blockID *big.Int) (*rawdb.L1O
238238
func (c *Client) GetPoolContent(
239239
ctx context.Context,
240240
beneficiary common.Address,
241-
baseFee *big.Int,
242241
blockMaxGasLimit uint32,
243242
maxBytesPerTxList uint64,
244243
locals []common.Address,
@@ -247,13 +246,29 @@ func (c *Client) GetPoolContent(
247246
ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, defaultTimeout)
248247
defer cancel()
249248

249+
l2Head, err := c.L2.HeaderByNumber(ctx, nil)
250+
if err != nil {
251+
return nil, err
252+
}
253+
254+
baseFee, err := c.TaikoL2.GetBasefee(
255+
&bind.CallOpts{Context: ctx},
256+
uint64(time.Now().Unix())-l2Head.Time,
257+
uint32(l2Head.GasUsed),
258+
)
259+
if err != nil {
260+
return nil, err
261+
}
262+
263+
log.Info("Current base fee", "fee", baseFee)
264+
250265
var localsArg []string
251266
for _, local := range locals {
252267
localsArg = append(localsArg, local.Hex())
253268
}
254269

255270
var result []types.Transactions
256-
err := c.L2.CallContext(
271+
err = c.L2.CallContext(
257272
ctxWithTimeout,
258273
&result,
259274
"taiko_txPoolContent",

pkg/rpc/methods_test.go

-5
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,6 @@ func TestGetPoolContentValid(t *testing.T) {
158158
require.Nil(t, err)
159159
goldenTouchAddress, err := client.TaikoL2.GOLDENTOUCHADDRESS(nil)
160160
require.Nil(t, err)
161-
parent, err := client.L2.BlockByNumber(context.Background(), nil)
162-
require.Nil(t, err)
163-
baseFee, err := client.TaikoL2.GetBasefee(nil, 1, uint32(parent.GasUsed()))
164-
require.Nil(t, err)
165161
gasLimit := configs.BlockMaxGasLimit
166162
maxBytes := configs.BlockMaxTxListBytes
167163

@@ -170,7 +166,6 @@ func TestGetPoolContentValid(t *testing.T) {
170166
_, err2 := client.GetPoolContent(
171167
context.Background(),
172168
goldenTouchAddress,
173-
baseFee,
174169
gasLimit,
175170
maxBytes.Uint64(),
176171
txPools,

proposer/proposer.go

-17
Original file line numberDiff line numberDiff line change
@@ -194,26 +194,9 @@ func (p *Proposer) ProposeOp(ctx context.Context) error {
194194

195195
log.Info("Start fetching L2 execution engine's transaction pool content")
196196

197-
l2Head, err := p.rpc.L2.HeaderByNumber(ctx, nil)
198-
if err != nil {
199-
return err
200-
}
201-
202-
baseFee, err := p.rpc.TaikoL2.GetBasefee(
203-
&bind.CallOpts{Context: ctx},
204-
uint64(time.Now().Unix())-l2Head.Time,
205-
uint32(l2Head.GasUsed),
206-
)
207-
if err != nil {
208-
return err
209-
}
210-
211-
log.Info("Current base fee", "fee", baseFee)
212-
213197
txLists, err := p.rpc.GetPoolContent(
214198
ctx,
215199
p.proposerAddress,
216-
baseFee,
217200
p.protocolConfigs.BlockMaxGasLimit,
218201
p.protocolConfigs.BlockMaxTxListBytes.Uint64(),
219202
p.LocalAddresses,

0 commit comments

Comments
 (0)