github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/forensics/storage/cache_db_test.go (about)

     1  package storage
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	dbm "github.com/tendermint/tm-db"
     9  )
    10  
    11  func TestBatchCommit(t *testing.T) {
    12  	db := dbm.NewMemDB()
    13  	cdb := NewCacheDB(db)
    14  	foo := []byte("foo")
    15  	bam := []byte("bam")
    16  	bosh := []byte("bosh")
    17  	boom := []byte("boom")
    18  
    19  	db.Set(foo, bam)
    20  	result, err := cdb.Get(foo)
    21  	assert.NoError(t, err)
    22  	assert.Equal(t, bam, result, "underlying writes should be seen")
    23  	cdb.Set(foo, bosh)
    24  	result, err = cdb.Get(foo)
    25  	assert.NoError(t, err)
    26  	assert.Equal(t, bosh, result, "writes to CacheDB should be available")
    27  	batch := cdb.NewBatch()
    28  	batch.Set(foo, bam)
    29  	result, err = cdb.Get(foo)
    30  	assert.NoError(t, err)
    31  	assert.Equal(t, bosh, result, "write to batch should not be seen")
    32  	batch.WriteSync()
    33  	cdb.Commit(db)
    34  	result, err = db.Get(foo)
    35  	assert.NoError(t, err)
    36  	assert.Equal(t, bam, result, "changes should commit")
    37  	cdb.Set(foo, bosh)
    38  	result, err = db.Get(foo)
    39  	assert.NoError(t, err)
    40  	assert.Equal(t, bam, result, "uncommitted changes should not be seen in db")
    41  	cdb.Delete(foo)
    42  	result, err = cdb.Get(foo)
    43  	assert.NoError(t, err)
    44  	assert.Nil(t, result)
    45  	result, err = db.Get(foo)
    46  	assert.NoError(t, err)
    47  	assert.Equal(t, bam, result)
    48  	cdb.Commit(db)
    49  	result, err = db.Get(foo)
    50  	assert.NoError(t, err)
    51  
    52  	assert.Nil(t, result)
    53  	cdb.Set(foo, boom)
    54  	result, err = db.Get(foo)
    55  	assert.NoError(t, err)
    56  
    57  	assert.Nil(t, result)
    58  }
    59  
    60  func TestCacheDB_Iterator(t *testing.T) {
    61  	db := dbm.NewMemDB()
    62  	cdb := NewCacheDB(db)
    63  	foo := []byte("foo")
    64  	bam := []byte("bam")
    65  	bosh := []byte("bosh")
    66  	boom := []byte("boom")
    67  
    68  	db.Set(append(foo, foo...), foo)
    69  	db.Set(append(foo, bam...), bam)
    70  	cdb.Set(append(foo, bosh...), bosh)
    71  	cdb.Set(boom, boom)
    72  
    73  	it, err := cdb.Iterator(nil, nil)
    74  	assert.NoError(t, err)
    75  	kvp := collectIterator(it)
    76  	fmt.Println(kvp)
    77  	cdb.Commit(db)
    78  
    79  	it, err = db.Iterator(nil, nil)
    80  	assert.NoError(t, err)
    81  	assert.Equal(t, kvp, collectIterator(it))
    82  }