github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/db/kv/state_summary_test.go (about) 1 package kv 2 3 import ( 4 "context" 5 "testing" 6 7 types "github.com/prysmaticlabs/eth2-types" 8 pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1" 9 "github.com/prysmaticlabs/prysm/shared/bytesutil" 10 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 11 "github.com/prysmaticlabs/prysm/shared/testutil/require" 12 ) 13 14 func TestStateSummary_CanSaveRretrieve(t *testing.T) { 15 db := setupDB(t) 16 ctx := context.Background() 17 r1 := bytesutil.ToBytes32([]byte{'A'}) 18 r2 := bytesutil.ToBytes32([]byte{'B'}) 19 s1 := &pb.StateSummary{Slot: 1, Root: r1[:]} 20 21 // State summary should not exist yet. 22 require.Equal(t, false, db.HasStateSummary(ctx, r1), "State summary should not be saved") 23 require.NoError(t, db.SaveStateSummary(ctx, s1)) 24 require.Equal(t, true, db.HasStateSummary(ctx, r1), "State summary should be saved") 25 26 saved, err := db.StateSummary(ctx, r1) 27 require.NoError(t, err) 28 assert.DeepEqual(t, s1, saved, "State summary does not equal") 29 30 // Save a new state summary. 31 s2 := &pb.StateSummary{Slot: 2, Root: r2[:]} 32 33 // State summary should not exist yet. 34 require.Equal(t, false, db.HasStateSummary(ctx, r2), "State summary should not be saved") 35 require.NoError(t, db.SaveStateSummary(ctx, s2)) 36 require.Equal(t, true, db.HasStateSummary(ctx, r2), "State summary should be saved") 37 38 saved, err = db.StateSummary(ctx, r2) 39 require.NoError(t, err) 40 assert.DeepEqual(t, s2, saved, "State summary does not equal") 41 } 42 43 func TestStateSummary_CacheToDB(t *testing.T) { 44 db := setupDB(t) 45 46 summaries := make([]*pb.StateSummary, stateSummaryCachePruneCount-1) 47 for i := range summaries { 48 summaries[i] = &pb.StateSummary{Slot: types.Slot(i), Root: bytesutil.PadTo(bytesutil.Uint64ToBytesLittleEndian(uint64(i)), 32)} 49 } 50 51 require.NoError(t, db.SaveStateSummaries(context.Background(), summaries)) 52 require.Equal(t, db.stateSummaryCache.len(), stateSummaryCachePruneCount-1) 53 54 require.NoError(t, db.SaveStateSummary(context.Background(), &pb.StateSummary{Slot: 1000, Root: []byte{'a', 'b'}})) 55 require.Equal(t, db.stateSummaryCache.len(), stateSummaryCachePruneCount) 56 57 require.NoError(t, db.SaveStateSummary(context.Background(), &pb.StateSummary{Slot: 1001, Root: []byte{'c', 'd'}})) 58 require.Equal(t, db.stateSummaryCache.len(), 1) 59 60 for i := range summaries { 61 r := bytesutil.Uint64ToBytesLittleEndian(uint64(i)) 62 require.Equal(t, true, db.HasStateSummary(context.Background(), bytesutil.ToBytes32(r))) 63 } 64 }