@@ -1853,24 +1853,39 @@ func TestInclusionList(t *testing.T) {
1853
1853
ethservice .TxPool ().Add ([]* types.Transaction {validTx1 }, true )
1854
1854
1855
1855
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
1859
1861
}{
1860
1862
{
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 ,
1864
1868
},
1865
1869
{
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 ,
1869
1875
},
1870
1876
{
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 ,
1874
1889
},
1875
1890
} {
1876
1891
t .Run (tt .name , func (t * testing.T ) {
@@ -1901,14 +1916,22 @@ func TestInclusionList(t *testing.T) {
1901
1916
if resp .PayloadStatus .Status != engine .VALID {
1902
1917
t .Fatalf ("error preparing payload, invalid status=%v" , resp .PayloadStatus .Status )
1903
1918
}
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
+ }
1904
1926
1905
1927
// Get the payload.
1906
1928
if payload , err = api .getPayload (* resp .PayloadID , true ); err != nil {
1907
1929
t .Fatalf ("error getting payload, err=%v" , err )
1908
1930
}
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 ))
1912
1935
}
1913
1936
1914
1937
// Verify if the block satisfies the inclusion list constraints.
0 commit comments