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  }