@@ -2,13 +2,15 @@ package stategen
2
2
3
3
import (
4
4
"context"
5
+ "strings"
5
6
"testing"
6
7
7
8
"github.com/gogo/protobuf/proto"
8
9
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
9
10
"github.com/prysmaticlabs/go-ssz"
10
11
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
11
12
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
13
+ "github.com/prysmaticlabs/prysm/shared/params"
12
14
"github.com/prysmaticlabs/prysm/shared/testutil"
13
15
)
14
16
@@ -132,6 +134,79 @@ func TestLoadColdStateByRoot_IntermediatePlayback(t *testing.T) {
132
134
}
133
135
}
134
136
137
+ func TestLoadColdStateBySlotIntermediatePlayback_BeforeCutoff (t * testing.T ) {
138
+ ctx := context .Background ()
139
+ db := testDB .SetupDB (t )
140
+ defer testDB .TeardownDB (t , db )
141
+
142
+ service := New (db )
143
+ service .slotsPerArchivedPoint = params .BeaconConfig ().SlotsPerEpoch * 2
144
+
145
+ beaconState , _ := testutil .DeterministicGenesisState (t , 32 )
146
+ if err := service .beaconDB .SaveArchivedPointState (ctx , beaconState , 0 ); err != nil {
147
+ t .Fatal (err )
148
+ }
149
+ if err := service .beaconDB .SaveArchivedPointRoot (ctx , [32 ]byte {}, 0 ); err != nil {
150
+ t .Fatal (err )
151
+ }
152
+ if err := service .beaconDB .SaveArchivedPointState (ctx , beaconState , 1 ); err != nil {
153
+ t .Fatal (err )
154
+ }
155
+ if err := service .beaconDB .SaveArchivedPointRoot (ctx , [32 ]byte {}, 1 ); err != nil {
156
+ t .Fatal (err )
157
+ }
158
+
159
+ slot := uint64 (20 )
160
+ loadedState , err := service .loadColdIntermediateStateBySlot (ctx , slot )
161
+ if err != nil {
162
+ t .Fatal (err )
163
+ }
164
+ if loadedState .Slot () != slot {
165
+ t .Error ("Did not correctly save state" )
166
+ }
167
+ }
168
+
169
+ func TestLoadColdStateBySlotIntermediatePlayback_AfterCutoff (t * testing.T ) {
170
+ ctx := context .Background ()
171
+ db := testDB .SetupDB (t )
172
+ defer testDB .TeardownDB (t , db )
173
+
174
+ service := New (db )
175
+ service .slotsPerArchivedPoint = params .BeaconConfig ().SlotsPerEpoch
176
+
177
+ beaconState , _ := testutil .DeterministicGenesisState (t , 32 )
178
+ if err := service .beaconDB .SaveArchivedPointState (ctx , beaconState , 0 ); err != nil {
179
+ t .Fatal (err )
180
+ }
181
+ if err := service .beaconDB .SaveArchivedPointRoot (ctx , [32 ]byte {}, 0 ); err != nil {
182
+ t .Fatal (err )
183
+ }
184
+
185
+ slot := uint64 (10 )
186
+ loadedState , err := service .loadColdIntermediateStateBySlot (ctx , slot )
187
+ if err != nil {
188
+ t .Fatal (err )
189
+ }
190
+ if loadedState .Slot () != slot {
191
+ t .Error ("Did not correctly save state" )
192
+ }
193
+ }
194
+
195
+
196
+ func TestLoadColdStateByRoot_UnknownArchivedState (t * testing.T ) {
197
+ ctx := context .Background ()
198
+ db := testDB .SetupDB (t )
199
+ defer testDB .TeardownDB (t , db )
200
+
201
+ service := New (db )
202
+ service .slotsPerArchivedPoint = 1
203
+ if _ , err := service .loadColdIntermediateStateBySlot (ctx , 0 );
204
+ ! strings .Contains (err .Error (), errUnknownArchivedState .Error ()) {
205
+ t .Log (err )
206
+ t .Error ("Did not get wanted error" )
207
+ }
208
+ }
209
+
135
210
func TestArchivedPointByIndex_HasPoint (t * testing.T ) {
136
211
ctx := context .Background ()
137
212
db := testDB .SetupDB (t )
0 commit comments