Skip to content

Commit 9f03028

Browse files
committed
eth/catalyst: add an unit test for updating payload with inclusion list
1 parent c5b634e commit 9f03028

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
@@ -1853,24 +1853,39 @@ func TestInclusionList(t *testing.T) {
18531853
ethservice.TxPool().Add([]*types.Transaction{validTx1}, true)
18541854

18551855
for i, tt := range []*struct {
1856-
name string
1857-
inclusionList engine.InclusionList
1858-
expectedStatus string
1856+
name string
1857+
inclusionList engine.InclusionList
1858+
updateInclusionList bool
1859+
expectedTransactions int
1860+
expectedStatus string
18591861
}{
18601862
{
1861-
name: "Block contains all transactions in the inclusion list",
1862-
inclusionList: engine.TransactionsToInclusionList([]*types.Transaction{validTx1}),
1863-
expectedStatus: engine.VALID,
1863+
name: "Payload misses one transaction in the inclusion list, which could have been included",
1864+
inclusionList: engine.TransactionsToInclusionList([]*types.Transaction{validTx1, validTx2}),
1865+
updateInclusionList: false,
1866+
expectedTransactions: 1,
1867+
expectedStatus: engine.INVALID_INCLUSION_LIST,
18641868
},
18651869
{
1866-
name: "Block misses one transaction in the inclusion list, which could have been included",
1867-
inclusionList: engine.TransactionsToInclusionList([]*types.Transaction{validTx1, validTx2}),
1868-
expectedStatus: engine.INVALID_INCLUSION_LIST,
1870+
name: "All transactions in the inclusion list are already included in the payload before update",
1871+
inclusionList: engine.TransactionsToInclusionList([]*types.Transaction{validTx1}),
1872+
updateInclusionList: true,
1873+
expectedTransactions: 1,
1874+
expectedStatus: engine.VALID,
18691875
},
18701876
{
1871-
name: "Block misses only invalid transactions in the inclusion list",
1872-
inclusionList: engine.TransactionsToInclusionList([]*types.Transaction{validTx1, invalidTx}),
1873-
expectedStatus: engine.VALID,
1877+
name: "All transactions in the inclusion list that are not included in the payload before update",
1878+
inclusionList: engine.TransactionsToInclusionList([]*types.Transaction{validTx2}),
1879+
updateInclusionList: true,
1880+
expectedTransactions: 2, // `validTx1` from the pool and `validTx2` from the inclusion list
1881+
expectedStatus: engine.VALID,
1882+
},
1883+
{
1884+
name: "Payload includes all valid transactions in the inclusion list",
1885+
inclusionList: engine.TransactionsToInclusionList([]*types.Transaction{validTx1, validTx2, invalidTx}),
1886+
updateInclusionList: true,
1887+
expectedTransactions: 2,
1888+
expectedStatus: engine.VALID,
18741889
},
18751890
} {
18761891
t.Run(tt.name, func(t *testing.T) {
@@ -1901,14 +1916,22 @@ func TestInclusionList(t *testing.T) {
19011916
if resp.PayloadStatus.Status != engine.VALID {
19021917
t.Fatalf("error preparing payload, invalid status=%v", resp.PayloadStatus.Status)
19031918
}
1919+
time.Sleep(250 * time.Millisecond)
1920+
1921+
if tt.updateInclusionList {
1922+
// Update the payload with the inclusion list.
1923+
api.UpdatePayloadWithInclusionListV1(*resp.PayloadID, tt.inclusionList)
1924+
time.Sleep(250 * time.Millisecond)
1925+
}
19041926

19051927
// Get the payload.
19061928
if payload, err = api.getPayload(*resp.PayloadID, true); err != nil {
19071929
t.Fatalf("error getting payload, err=%v", err)
19081930
}
1909-
// The payload is expected to have 1 transaction, which is `validTx1`.
1910-
if len(payload.ExecutionPayload.Transactions) != 1 {
1911-
t.Fatalf("expected 1 transaction but got %d", len(payload.ExecutionPayload.Transactions))
1931+
1932+
// Verify if the block contains all valid transactions in the inclusion list.
1933+
if len(payload.ExecutionPayload.Transactions) != tt.expectedTransactions {
1934+
t.Fatalf("expected %d transactions but got %d", tt.expectedTransactions, len(payload.ExecutionPayload.Transactions))
19121935
}
19131936

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

0 commit comments

Comments
 (0)