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 }