github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/store/cache/cache_test.go (about) 1 package cache_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store/cache" 8 iavlstore "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store/iavl" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store/types" 10 11 "github.com/fibonacci-chain/fbc/libs/iavl" 12 dbm "github.com/fibonacci-chain/fbc/libs/tm-db" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestGetOrSetStoreCache(t *testing.T) { 17 db := dbm.NewMemDB() 18 mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize) 19 20 sKey := types.NewKVStoreKey("test") 21 tree, err := iavl.NewMutableTree(db, 100) 22 require.NoError(t, err) 23 store := iavlstore.UnsafeNewStore(tree) 24 store2 := mngr.GetStoreCache(sKey, store) 25 26 require.NotNil(t, store2) 27 require.Equal(t, store2, mngr.GetStoreCache(sKey, store)) 28 } 29 30 func TestUnwrap(t *testing.T) { 31 db := dbm.NewMemDB() 32 mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize) 33 34 sKey := types.NewKVStoreKey("test") 35 tree, err := iavl.NewMutableTree(db, 100) 36 require.NoError(t, err) 37 store := iavlstore.UnsafeNewStore(tree) 38 _ = mngr.GetStoreCache(sKey, store) 39 40 require.Equal(t, store, mngr.Unwrap(sKey)) 41 require.Nil(t, mngr.Unwrap(types.NewKVStoreKey("test2"))) 42 } 43 44 func TestStoreCache(t *testing.T) { 45 db := dbm.NewMemDB() 46 mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize) 47 48 sKey := types.NewKVStoreKey("test") 49 tree, err := iavl.NewMutableTree(db, 100) 50 require.NoError(t, err) 51 store := iavlstore.UnsafeNewStore(tree) 52 kvStore := mngr.GetStoreCache(sKey, store) 53 54 for i := uint(0); i < cache.DefaultCommitKVStoreCacheSize*2; i++ { 55 key := []byte(fmt.Sprintf("key_%d", i)) 56 value := []byte(fmt.Sprintf("value_%d", i)) 57 58 kvStore.Set(key, value) 59 60 res := kvStore.Get(key) 61 require.Equal(t, res, value) 62 require.Equal(t, res, store.Get(key)) 63 64 kvStore.Delete(key) 65 66 require.Nil(t, kvStore.Get(key)) 67 require.Nil(t, store.Get(key)) 68 } 69 }