github.com/MetalBlockchain/metalgo@v1.11.9/database/pebbledb/batch_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 pebbledb 5 6 import ( 7 "testing" 8 9 "github.com/prometheus/client_golang/prometheus" 10 "github.com/stretchr/testify/require" 11 12 "github.com/MetalBlockchain/metalgo/utils/logging" 13 ) 14 15 // Note: TestInterface tests other batch functionality. 16 func TestBatch(t *testing.T) { 17 require := require.New(t) 18 dirName := t.TempDir() 19 20 db, err := New(dirName, nil, logging.NoLog{}, prometheus.NewRegistry()) 21 require.NoError(err) 22 23 batchIntf := db.NewBatch() 24 batch, ok := batchIntf.(*batch) 25 require.True(ok) 26 27 require.False(batch.written) 28 29 key1, value1 := []byte("key1"), []byte("value1") 30 require.NoError(batch.Put(key1, value1)) 31 require.Equal(len(key1)+len(value1)+pebbleByteOverHead, batch.Size()) 32 33 require.NoError(batch.Write()) 34 35 require.True(batch.written) 36 37 got, err := db.Get(key1) 38 require.NoError(err) 39 require.Equal(value1, got) 40 41 batch.Reset() 42 require.False(batch.written) 43 require.Zero(batch.Size()) 44 45 require.NoError(db.Close()) 46 }