github.com/ava-labs/avalanchego@v1.11.11/database/encdb/db_test.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package encdb
     5  
     6  import (
     7  	"fmt"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/ava-labs/avalanchego/database"
    13  	"github.com/ava-labs/avalanchego/database/dbtest"
    14  	"github.com/ava-labs/avalanchego/database/memdb"
    15  )
    16  
    17  const testPassword = "lol totally a secure password" //nolint:gosec
    18  
    19  func TestInterface(t *testing.T) {
    20  	for name, test := range dbtest.Tests {
    21  		t.Run(name, func(t *testing.T) {
    22  			unencryptedDB := memdb.New()
    23  			db, err := New([]byte(testPassword), unencryptedDB)
    24  			require.NoError(t, err)
    25  
    26  			test(t, db)
    27  		})
    28  	}
    29  }
    30  
    31  func newDB(t testing.TB) database.Database {
    32  	unencryptedDB := memdb.New()
    33  	db, err := New([]byte(testPassword), unencryptedDB)
    34  	require.NoError(t, err)
    35  	return db
    36  }
    37  
    38  func FuzzKeyValue(f *testing.F) {
    39  	dbtest.FuzzKeyValue(f, newDB(f))
    40  }
    41  
    42  func FuzzNewIteratorWithPrefix(f *testing.F) {
    43  	dbtest.FuzzNewIteratorWithPrefix(f, newDB(f))
    44  }
    45  
    46  func FuzzNewIteratorWithStartAndPrefix(f *testing.F) {
    47  	dbtest.FuzzNewIteratorWithStartAndPrefix(f, newDB(f))
    48  }
    49  
    50  func BenchmarkInterface(b *testing.B) {
    51  	for _, size := range dbtest.BenchmarkSizes {
    52  		keys, values := dbtest.SetupBenchmark(b, size[0], size[1], size[2])
    53  		for name, bench := range dbtest.Benchmarks {
    54  			b.Run(fmt.Sprintf("encdb_%d_pairs_%d_keys_%d_values_%s", size[0], size[1], size[2], name), func(b *testing.B) {
    55  				bench(b, newDB(b), keys, values)
    56  			})
    57  		}
    58  	}
    59  }