github.com/MetalBlockchain/metalgo@v1.11.9/x/merkledb/metrics_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 merkledb 5 6 import ( 7 "context" 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 func Test_Metrics_Basic_Usage(t *testing.T) { 17 config := newDefaultConfig() 18 // Set to nil so that we use a mockMetrics instead of the real one inside 19 // merkledb. 20 config.Reg = nil 21 22 db, err := newDB( 23 context.Background(), 24 memdb.New(), 25 config, 26 ) 27 require.NoError(t, err) 28 29 db.metrics.(*mockMetrics).nodeReadCount = 0 30 db.metrics.(*mockMetrics).nodeWriteCount = 0 31 db.metrics.(*mockMetrics).hashCount = 0 32 33 require.NoError(t, db.Put([]byte("key"), []byte("value"))) 34 35 require.Equal(t, int64(1), db.metrics.(*mockMetrics).nodeReadCount) 36 require.Equal(t, int64(1), db.metrics.(*mockMetrics).nodeWriteCount) 37 require.Equal(t, int64(1), db.metrics.(*mockMetrics).hashCount) 38 39 require.NoError(t, db.Delete([]byte("key"))) 40 41 require.Equal(t, int64(1), db.metrics.(*mockMetrics).nodeReadCount) 42 require.Equal(t, int64(2), db.metrics.(*mockMetrics).nodeWriteCount) 43 require.Equal(t, int64(1), db.metrics.(*mockMetrics).hashCount) 44 45 _, err = db.Get([]byte("key2")) 46 require.ErrorIs(t, err, database.ErrNotFound) 47 48 require.Equal(t, int64(2), db.metrics.(*mockMetrics).nodeReadCount) 49 require.Equal(t, int64(2), db.metrics.(*mockMetrics).nodeWriteCount) 50 require.Equal(t, int64(1), db.metrics.(*mockMetrics).hashCount) 51 } 52 53 func Test_Metrics_Initialize(t *testing.T) { 54 db, err := New( 55 context.Background(), 56 memdb.New(), 57 newDefaultConfig(), 58 ) 59 require.NoError(t, err) 60 61 require.NoError(t, db.Put([]byte("key"), []byte("value"))) 62 63 val, err := db.Get([]byte("key")) 64 require.NoError(t, err) 65 require.Equal(t, []byte("value"), val) 66 67 require.NoError(t, db.Delete([]byte("key"))) 68 }