Skip to content

Commit 7d8f1b0

Browse files
committed
eth/catalyst: add an unit test for updating payload with inclusion list
1 parent 6126686 commit 7d8f1b0

File tree

1 file changed

+38
-15
lines changed

1 file changed

+38
-15
lines changed

eth/catalyst/api_test.go

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1848,24 +1848,39 @@ func TestInclusionList(t *testing.T) {
18481848
ethservice.TxPool().Add([]*types.Transaction{validTx1}, true)
18491849

18501850
for i, tt := range []*struct {
1851-
name string
1852-
inclusionList types.InclusionList
1853-
expectedStatus string
1851+
name string
1852+
inclusionList types.InclusionList
1853+
updateInclusionList bool
1854+
expectedTransactions int
1855+
expectedStatus string
18541856
}{
18551857
{
1856-
name: "Block contains all transactions in the inclusion list",
1857-
inclusionList: types.TransactionsToInclusionList([]*types.Transaction{validTx1}),
1858-
expectedStatus: engine.VALID,
1858+
name: "Payload misses one transaction in the inclusion list, which could have been included",
1859+
inclusionList: types.TransactionsToInclusionList([]*types.Transaction{validTx1, validTx2}),
1860+
updateInclusionList: false,
1861+
expectedTransactions: 1,
1862+
expectedStatus: engine.INVALID_INCLUSION_LIST,
18591863
},
18601864
{
1861-
name: "Block misses one transaction in the inclusion list, which could have been included",
1862-
inclusionList: types.TransactionsToInclusionList([]*types.Transaction{validTx1, validTx2}),
1863-
expectedStatus: engine.INVALID_INCLUSION_LIST,
1865+
name: "All transactions in the inclusion list are already included in the payload before update",
1866+
inclusionList: types.TransactionsToInclusionList([]*types.Transaction{validTx1}),
1867+
updateInclusionList: true,
1868+
expectedTransactions: 1,
1869+
expectedStatus: engine.VALID,
18641870
},
18651871
{
1866-
name: "Block misses only invalid transactions in the inclusion list",
1867-
inclusionList: types.TransactionsToInclusionList([]*types.Transaction{validTx1, invalidTx}),
1868-
expectedStatus: engine.VALID,
1872+
name: "All transactions in the inclusion list that are not included in the payload before update",
1873+
inclusionList: types.TransactionsToInclusionList([]*types.Transaction{validTx2}),
1874+
updateInclusionList: true,
1875+
expectedTransactions: 2, // `validTx1` from the pool and `validTx2` from the inclusion list
1876+
expectedStatus: engine.VALID,
1877+
},
1878+
{
1879+
name: "Payload includes all valid transactions in the inclusion list",
1880+
inclusionList: types.TransactionsToInclusionList([]*types.Transaction{validTx1, validTx2, invalidTx}),
1881+
updateInclusionList: true,
1882+
expectedTransactions: 2,
1883+
expectedStatus: engine.VALID,
18691884
},
18701885
} {
18711886
t.Run(tt.name, func(t *testing.T) {
@@ -1896,14 +1911,22 @@ func TestInclusionList(t *testing.T) {
18961911
if resp.PayloadStatus.Status != engine.VALID {
18971912
t.Fatalf("error preparing payload, invalid status=%v", resp.PayloadStatus.Status)
18981913
}
1914+
time.Sleep(250 * time.Millisecond)
1915+
1916+
if tt.updateInclusionList {
1917+
// Update the payload with the inclusion list.
1918+
api.UpdatePayloadWithInclusionListV1(*resp.PayloadID, tt.inclusionList)
1919+
time.Sleep(250 * time.Millisecond)
1920+
}
18991921

19001922
// Get the payload.
19011923
if payload, err = api.getPayload(*resp.PayloadID, true); err != nil {
19021924
t.Fatalf("error getting payload, err=%v", err)
19031925
}
1904-
// The payload is expected to have 1 transaction, which is `validTx1`.
1905-
if len(payload.ExecutionPayload.Transactions) != 1 {
1906-
t.Fatalf("expected 1 transaction but got %d", len(payload.ExecutionPayload.Transactions))
1926+
1927+
// Verify if the block contains all valid transactions in the inclusion list.
1928+
if len(payload.ExecutionPayload.Transactions) != tt.expectedTransactions {
1929+
t.Fatalf("expected %d transactions but got %d", tt.expectedTransactions, len(payload.ExecutionPayload.Transactions))
19071930
}
19081931

19091932
// Verify if the block satisfies the inclusion list constraints.

0 commit comments

Comments
 (0)