-
Notifications
You must be signed in to change notification settings - Fork 145
Expand file tree
/
Copy pathdatastore_test.go
More file actions
80 lines (69 loc) · 2.34 KB
/
Copy pathdatastore_test.go
File metadata and controls
80 lines (69 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package datastore
import (
"testing"
"github.com/alicebob/miniredis/v2"
"github.com/flashbots/mev-boost-relay/common"
"github.com/flashbots/mev-boost-relay/database"
"github.com/stretchr/testify/require"
)
func setupTestDatastore(t *testing.T, mockDB *database.MockDB) *Datastore {
t.Helper()
redisTestServer, err := miniredis.Run()
require.NoError(t, err)
redisDs, err := NewRedisCache("", redisTestServer.Addr(), "")
require.NoError(t, err)
ds, err := NewDatastore(redisDs, nil, mockDB)
require.NoError(t, err)
return ds
}
func TestGetPayloadFailure(t *testing.T) {
ds := setupTestDatastore(t, &database.MockDB{})
_, err := ds.GetGetPayloadResponse(common.TestLog, 1, "a", "b")
require.ErrorIs(t, ErrExecutionPayloadNotFound, err)
}
func TestGetPayloadDatabaseFallback(t *testing.T) {
testCases := []struct {
description string
filename string
version string
blockHash string
}{
{
description: "Good Capella Payload",
filename: "../testdata/executionPayloadCapella_Goerli.json.gz",
version: common.ForkVersionStringCapella,
blockHash: "0x1bafdc454116b605005364976b134d761dd736cb4788d25c835783b46daeb121",
},
{
description: "Good Deneb Payload",
filename: "../testdata/executionPayloadAndBlobsBundleDeneb_Goerli.json.gz",
version: common.ForkVersionStringDeneb,
blockHash: "0xbd1ae4f7edb2315d2df70a8d9881fab8d6763fb1c00533ae729050928c38d05a",
}, {
description: "Good Electra Payload",
filename: "../testdata/executionPayloadAndBlobsBundleElectra_Goerli.json.gz",
version: common.ForkVersionStringElectra,
blockHash: "0x8bc5ee08e27659360187285be156c31daa8e37513a5df7e006322e1268f6b4e1",
},
}
for _, testCase := range testCases {
t.Run(testCase.description, func(t *testing.T) {
payloadBytes := common.LoadGzippedBytes(t, testCase.filename)
// prepare mock database with execution payload entry
mockDB := &database.MockDB{
ExecPayloads: map[string]*database.ExecutionPayloadEntry{
"1-a-b": {
Version: testCase.version,
Payload: string(payloadBytes),
},
},
}
ds := setupTestDatastore(t, mockDB)
payload, err := ds.GetGetPayloadResponse(common.TestLog, 1, "a", "b")
require.NoError(t, err)
blockHash, err := payload.BlockHash()
require.NoError(t, err)
require.Equal(t, testCase.blockHash, blockHash.String())
})
}
}