github.com/MetalBlockchain/metalgo@v1.11.9/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/MetalBlockchain/metalgo/database" 13 "github.com/MetalBlockchain/metalgo/database/memdb" 14 ) 15 16 const testPassword = "lol totally a secure password" //nolint:gosec 17 18 func TestInterface(t *testing.T) { 19 for name, test := range database.Tests { 20 t.Run(name, func(t *testing.T) { 21 unencryptedDB := memdb.New() 22 db, err := New([]byte(testPassword), unencryptedDB) 23 require.NoError(t, err) 24 25 test(t, db) 26 }) 27 } 28 } 29 30 func newDB(t testing.TB) database.Database { 31 unencryptedDB := memdb.New() 32 db, err := New([]byte(testPassword), unencryptedDB) 33 require.NoError(t, err) 34 return db 35 } 36 37 func FuzzKeyValue(f *testing.F) { 38 database.FuzzKeyValue(f, newDB(f)) 39 } 40 41 func FuzzNewIteratorWithPrefix(f *testing.F) { 42 database.FuzzNewIteratorWithPrefix(f, newDB(f)) 43 } 44 45 func FuzzNewIteratorWithStartAndPrefix(f *testing.F) { 46 database.FuzzNewIteratorWithStartAndPrefix(f, newDB(f)) 47 } 48 49 func BenchmarkInterface(b *testing.B) { 50 for _, size := range database.BenchmarkSizes { 51 keys, values := database.SetupBenchmark(b, size[0], size[1], size[2]) 52 for name, bench := range database.Benchmarks { 53 b.Run(fmt.Sprintf("encdb_%d_pairs_%d_keys_%d_values_%s", size[0], size[1], size[2], name), func(b *testing.B) { 54 bench(b, newDB(b), keys, values) 55 }) 56 } 57 } 58 }