github.com/ava-labs/avalanchego@v1.11.11/database/meterdb/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 meterdb 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/prometheus/client_golang/prometheus" 11 "github.com/stretchr/testify/require" 12 13 "github.com/ava-labs/avalanchego/database" 14 "github.com/ava-labs/avalanchego/database/dbtest" 15 "github.com/ava-labs/avalanchego/database/memdb" 16 ) 17 18 func TestInterface(t *testing.T) { 19 for name, test := range dbtest.Tests { 20 t.Run(name, func(t *testing.T) { 21 baseDB := memdb.New() 22 db, err := New(prometheus.NewRegistry(), baseDB) 23 require.NoError(t, err) 24 25 test(t, db) 26 }) 27 } 28 } 29 30 func newDB(t testing.TB) database.Database { 31 baseDB := memdb.New() 32 db, err := New(prometheus.NewRegistry(), baseDB) 33 require.NoError(t, err) 34 return db 35 } 36 37 func FuzzKeyValue(f *testing.F) { 38 dbtest.FuzzKeyValue(f, newDB(f)) 39 } 40 41 func FuzzNewIteratorWithPrefix(f *testing.F) { 42 dbtest.FuzzNewIteratorWithPrefix(f, newDB(f)) 43 } 44 45 func FuzzNewIteratorWithStartAndPrefix(f *testing.F) { 46 dbtest.FuzzNewIteratorWithStartAndPrefix(f, newDB(f)) 47 } 48 49 func BenchmarkInterface(b *testing.B) { 50 for _, size := range dbtest.BenchmarkSizes { 51 keys, values := dbtest.SetupBenchmark(b, size[0], size[1], size[2]) 52 for name, bench := range dbtest.Benchmarks { 53 b.Run(fmt.Sprintf("meterdb_%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 }