github.com/decred/dcrlnd@v0.7.6/kvdb/readwrite_tx_test.go (about) 1 package kvdb 2 3 import ( 4 "testing" 5 6 "github.com/btcsuite/btcwallet/walletdb" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func testTxManualCommit(t *testing.T, db walletdb.DB) { 11 tx, err := db.BeginReadWriteTx() 12 require.NoError(t, err) 13 require.NotNil(t, tx) 14 15 committed := false 16 17 tx.OnCommit(func() { 18 committed = true 19 }) 20 21 apple, err := tx.CreateTopLevelBucket([]byte("apple")) 22 require.NoError(t, err) 23 require.NotNil(t, apple) 24 require.NoError(t, apple.Put([]byte("testKey"), []byte("testVal"))) 25 26 banana, err := tx.CreateTopLevelBucket([]byte("banana")) 27 require.NoError(t, err) 28 require.NotNil(t, banana) 29 require.NoError(t, banana.Put([]byte("testKey"), []byte("testVal"))) 30 require.NoError(t, tx.DeleteTopLevelBucket([]byte("banana"))) 31 32 require.NoError(t, tx.Commit()) 33 require.True(t, committed) 34 } 35 36 func testTxRollback(t *testing.T, db walletdb.DB) { 37 tx, err := db.BeginReadWriteTx() 38 require.Nil(t, err) 39 require.NotNil(t, tx) 40 41 apple, err := tx.CreateTopLevelBucket([]byte("apple")) 42 require.Nil(t, err) 43 require.NotNil(t, apple) 44 45 require.NoError(t, apple.Put([]byte("testKey"), []byte("testVal"))) 46 47 require.NoError(t, tx.Rollback()) 48 require.Error(t, walletdb.ErrTxClosed, tx.Commit()) 49 }