github.com/prysmaticlabs/prysm@v1.4.4/validator/db/kv/graffiti_test.go (about)

     1  package kv
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/prysmaticlabs/prysm/shared/hashutil"
     8  	"github.com/prysmaticlabs/prysm/shared/testutil/require"
     9  )
    10  
    11  func TestStore_GraffitiOrderedIndex_ReadAndWrite(t *testing.T) {
    12  	ctx := context.Background()
    13  	db := setupDB(t, [][48]byte{})
    14  	tests := []struct {
    15  		name     string
    16  		want     uint64
    17  		write    uint64
    18  		fileHash [32]byte
    19  	}{
    20  		{
    21  			name:     "empty then write",
    22  			want:     0,
    23  			write:    15,
    24  			fileHash: hashutil.Hash([]byte("one")),
    25  		},
    26  		{
    27  			name:     "update with same file hash",
    28  			want:     15,
    29  			write:    20,
    30  			fileHash: hashutil.Hash([]byte("one")),
    31  		},
    32  		{
    33  			name:     "continued updates",
    34  			want:     20,
    35  			write:    21,
    36  			fileHash: hashutil.Hash([]byte("one")),
    37  		},
    38  		{
    39  			name:     "reset with new file hash",
    40  			want:     0,
    41  			write:    10,
    42  			fileHash: hashutil.Hash([]byte("two")),
    43  		},
    44  		{
    45  			name:     "read with new file hash",
    46  			want:     10,
    47  			fileHash: hashutil.Hash([]byte("two")),
    48  		},
    49  	}
    50  	for _, tt := range tests {
    51  		t.Run(tt.name, func(t *testing.T) {
    52  			got, err := db.GraffitiOrderedIndex(ctx, tt.fileHash)
    53  			require.NoError(t, err)
    54  			require.DeepEqual(t, tt.want, got)
    55  			err = db.SaveGraffitiOrderedIndex(ctx, tt.write)
    56  			require.NoError(t, err)
    57  		})
    58  	}
    59  }