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