github.com/Finschia/finschia-sdk@v0.49.1/store/cache/cache_test.go (about) 1 package cache_test 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/cosmos/iavl" 8 "github.com/stretchr/testify/require" 9 dbm "github.com/tendermint/tm-db" 10 11 "github.com/Finschia/finschia-sdk/store/cache" 12 iavlstore "github.com/Finschia/finschia-sdk/store/iavl" 13 "github.com/Finschia/finschia-sdk/store/types" 14 ) 15 16 func TestGetOrSetStoreCache(t *testing.T) { 17 db := dbm.NewMemDB() 18 mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize, cache.NopMetricsProvider()) 19 20 sKey := types.NewKVStoreKey("test") 21 tree, err := iavl.NewMutableTree(db, 100, false) 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, cache.NopMetricsProvider()) 33 34 sKey := types.NewKVStoreKey("test") 35 tree, err := iavl.NewMutableTree(db, 100, false) 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, cache.NopMetricsProvider()) 47 48 sKey := types.NewKVStoreKey("test") 49 tree, err := iavl.NewMutableTree(db, 100, false) 50 require.NoError(t, err) 51 store := iavlstore.UnsafeNewStore(tree) 52 kvStore := mngr.GetStoreCache(sKey, store) 53 54 for i := uint(0); i < 10000; 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 }