github.com/evdatsion/aphelion-dpos-bft@v0.32.1/libs/db/go_level_db_test.go (about)

     1  package db
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	"github.com/syndtr/goleveldb/leveldb/opt"
     9  
    10  	cmn "github.com/evdatsion/aphelion-dpos-bft/libs/common"
    11  )
    12  
    13  func TestGoLevelDBNewGoLevelDB(t *testing.T) {
    14  	name := fmt.Sprintf("test_%x", cmn.RandStr(12))
    15  	defer cleanupDBDir("", name)
    16  
    17  	// Test we can't open the db twice for writing
    18  	wr1, err := NewGoLevelDB(name, "")
    19  	require.Nil(t, err)
    20  	_, err = NewGoLevelDB(name, "")
    21  	require.NotNil(t, err)
    22  	wr1.Close() // Close the db to release the lock
    23  
    24  	// Test we can open the db twice for reading only
    25  	ro1, err := NewGoLevelDBWithOpts(name, "", &opt.Options{ReadOnly: true})
    26  	defer ro1.Close()
    27  	require.Nil(t, err)
    28  	ro2, err := NewGoLevelDBWithOpts(name, "", &opt.Options{ReadOnly: true})
    29  	defer ro2.Close()
    30  	require.Nil(t, err)
    31  }
    32  
    33  func BenchmarkGoLevelDBRandomReadsWrites(b *testing.B) {
    34  	name := fmt.Sprintf("test_%x", cmn.RandStr(12))
    35  	db, err := NewGoLevelDB(name, "")
    36  	if err != nil {
    37  		b.Fatal(err)
    38  	}
    39  	defer func() {
    40  		db.Close()
    41  		cleanupDBDir("", name)
    42  	}()
    43  
    44  	benchmarkRandomReadsWrites(b, db)
    45  }