github.com/sequix/cortex@v1.1.6/pkg/chunk/cache/memcached_client_test.go (about)

     1  package cache_test
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/bradfitz/gomemcache/memcache"
     7  )
     8  
     9  type mockMemcache struct {
    10  	sync.RWMutex
    11  	contents map[string][]byte
    12  }
    13  
    14  func newMockMemcache() *mockMemcache {
    15  	return &mockMemcache{
    16  		contents: map[string][]byte{},
    17  	}
    18  }
    19  
    20  func (m *mockMemcache) GetMulti(keys []string) (map[string]*memcache.Item, error) {
    21  	m.RLock()
    22  	defer m.RUnlock()
    23  	result := map[string]*memcache.Item{}
    24  	for _, k := range keys {
    25  		if c, ok := m.contents[k]; ok {
    26  			result[k] = &memcache.Item{
    27  				Value: c,
    28  			}
    29  		}
    30  	}
    31  	return result, nil
    32  }
    33  
    34  func (m *mockMemcache) Set(item *memcache.Item) error {
    35  	m.Lock()
    36  	defer m.Unlock()
    37  	m.contents[item.Key] = item.Value
    38  	return nil
    39  }