github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/services/cache/provider_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package cache 5 6 import ( 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func TestNewCache(t *testing.T) { 14 t.Run("with only size option given", func(t *testing.T) { 15 p := NewProvider() 16 17 size := 1 18 c := p.NewCache(&CacheOptions{ 19 Size: size, 20 }) 21 22 err := c.Set("key1", "val1") 23 require.Nil(t, err) 24 err = c.Set("key2", "val2") 25 require.Nil(t, err) 26 l, err := c.Len() 27 require.Nil(t, err) 28 require.Equal(t, size, l) 29 }) 30 31 t.Run("with all options specified", func(t *testing.T) { 32 p := NewProvider() 33 34 size := 1 35 expiry := 1 * time.Second 36 event := "clusterEvent" 37 c := p.NewCache(&CacheOptions{ 38 Size: size, 39 Name: "name", 40 DefaultExpiry: expiry, 41 InvalidateClusterEvent: event, 42 }) 43 44 require.Equal(t, event, c.GetInvalidateClusterEvent()) 45 46 err := c.SetWithDefaultExpiry("key1", "val1") 47 require.Nil(t, err) 48 err = c.SetWithDefaultExpiry("key2", "val2") 49 require.Nil(t, err) 50 l, err := c.Len() 51 require.Nil(t, err) 52 require.Equal(t, size, l) 53 54 time.Sleep(expiry + 1*time.Second) 55 56 var v string 57 err = c.Get("key1", &v) 58 require.Equal(t, ErrKeyNotFound, err) 59 err = c.Get("key2", &v) 60 require.Equal(t, ErrKeyNotFound, err) 61 }) 62 } 63 64 func TestConnectClose(t *testing.T) { 65 p := NewProvider() 66 67 err := p.Connect() 68 require.Nil(t, err) 69 70 err = p.Close() 71 require.Nil(t, err) 72 }