From c48df0c8f12ffe7b8690bca68535dc341d320273 Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Thu, 25 Jul 2019 16:56:58 -0700 Subject: [PATCH] Cleanup unused packages --- pkg/cache/redis.go | 117 --------------------------------------- pkg/cache/redis_test.go | 119 ---------------------------------------- 2 files changed, 236 deletions(-) delete mode 100644 pkg/cache/redis.go delete mode 100644 pkg/cache/redis_test.go diff --git a/pkg/cache/redis.go b/pkg/cache/redis.go deleted file mode 100644 index b93f042..0000000 --- a/pkg/cache/redis.go +++ /dev/null @@ -1,117 +0,0 @@ -package cache - -import ( - "time" - - "github.com/go-redis/redis" - "github.com/pkg/errors" - "github.com/vmihailenco/msgpack" -) - -var ErrNotFound = errors.New("not found") - -// RedisCache implements caching layer for feeds using Redis -// -// Inside docker can be connected as: -// docker exec -it redis redis-cli -// View available keys: -// 127.0.0.1:6379> keys * -// -type RedisCache struct { - client *redis.Client -} - -func NewRedisCache(redisURL string) (RedisCache, error) { - opts, err := redis.ParseURL(redisURL) - if err != nil { - return RedisCache{}, err - } - - client := redis.NewClient(opts) - if err := client.Ping().Err(); err != nil { - return RedisCache{}, err - } - - return RedisCache{client: client}, nil -} - -func (c RedisCache) Set(key, value string, ttl time.Duration) error { - return c.client.Set(key, value, ttl).Err() -} - -func (c RedisCache) Get(key string) (string, error) { - val, err := c.client.Get(key).Result() - if err == redis.Nil { - return "", ErrNotFound - } else { - return val, err - } -} - -func (c RedisCache) SaveItem(key string, item interface{}, exp time.Duration) error { - data, err := msgpack.Marshal(item) - if err != nil { - return err - } - - return c.client.Set(key, data, exp).Err() -} - -func (c RedisCache) GetItem(key string, item interface{}) error { - data, err := c.client.Get(key).Bytes() - if err == redis.Nil { - return ErrNotFound - } else if err != nil { - return err - } - - if err := msgpack.Unmarshal(data, item); err != nil { - return err - } - - return nil -} - -func (c RedisCache) SetMap(key string, fields map[string]interface{}, exp time.Duration) error { - if err := c.client.HMSet(key, fields).Err(); err != nil { - return err - } - - if err := c.client.TTL(key).Err(); err != nil { - return err - } - - return nil -} - -func (c RedisCache) GetMap(key string, fields ...string) (map[string]string, error) { - result, err := c.client.HMGet(key, fields...).Result() - if err == redis.Nil { - return nil, ErrNotFound - } else if err != nil { - return nil, err - } - - data := map[string]string{} - for idx, key := range fields { - if result[idx] == nil { - continue - } - - data[key] = result[idx].(string) - } - - if len(data) == 0 { - return nil, ErrNotFound - } - - return data, nil -} - -func (c RedisCache) Invalidate(key... string) error { - return c.client.Del(key...).Err() -} - -func (c RedisCache) Close() error { - return c.client.Close() -} diff --git a/pkg/cache/redis_test.go b/pkg/cache/redis_test.go deleted file mode 100644 index 1731eb9..0000000 --- a/pkg/cache/redis_test.go +++ /dev/null @@ -1,119 +0,0 @@ -package cache - -import ( - "testing" - "time" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/mxpv/podsync/pkg/model" -) - -func TestRedisCache_Get(t *testing.T) { - s := createRedisClient(t) - defer s.Close() - - err := s.Set("1", "value", 1*time.Minute) - assert.NoError(t, err) - - val, err := s.Get("1") - assert.NoError(t, err) - assert.Equal(t, "value", val) -} - -func TestRedisCache_GetInvalidKey(t *testing.T) { - s := createRedisClient(t) - defer s.Close() - - val, err := s.Get("1") - assert.Equal(t, ErrNotFound, err) - assert.Empty(t, val) -} - -func TestNewRedisCache_TTL(t *testing.T) { - s := createRedisClient(t) - defer s.Close() - - err := s.Set("1", "value", 500*time.Millisecond) - assert.NoError(t, err) - - val, err := s.Get("1") - assert.NoError(t, err) - assert.Equal(t, "value", val) - - time.Sleep(501 * time.Millisecond) - - _, err = s.Get("1") - assert.Equal(t, ErrNotFound, err) -} - -func TestRedisCache_SaveItem(t *testing.T) { - type test struct { - Feed []byte `msgpack:"feed"` - UpdatedAt model.Timestamp `msgpack:"updated_at"` - } - - s := createRedisClient(t) - defer s.Close() - - item := &test{ - Feed: []byte("123"), - UpdatedAt: model.Timestamp(time.Now().UTC()), - } - - err := s.SaveItem("test", item, time.Minute) - assert.NoError(t, err) - - var out test - err = s.GetItem("test", &out) - assert.NoError(t, err) - - assert.EqualValues(t, item.Feed, out.Feed) - assert.EqualValues(t, time.Time(item.UpdatedAt).Unix(), time.Time(out.UpdatedAt).Unix()) -} - -func TestRedisCache_Map(t *testing.T) { - s := createRedisClient(t) - defer s.Close() - - data := map[string]interface{}{ - "1": "123", - "2": "test", - } - - err := s.SetMap("2", data, time.Minute) - assert.NoError(t, err) - - out, err := s.GetMap("2", "1", "2") - assert.NoError(t, err) - assert.EqualValues(t, data, out) -} - -func TestRedisCache_GetMapInvalidKey(t *testing.T) { - s := createRedisClient(t) - defer s.Close() - - _, err := s.GetMap("unknown_key", "1", "2") - assert.Equal(t, ErrNotFound, err) -} - -// docker run -it --rm -p 6379:6379 redis -func createRedisClient(t *testing.T) RedisCache { - if testing.Short() { - t.Skip("run redis tests manually") - } - - client, err := NewRedisCache("redis://localhost") - require.NoError(t, err) - - keys, err := client.client.Keys("*").Result() - assert.NoError(t, err) - - if len(keys) > 0 { - err = client.client.Del(keys...).Err() - assert.NoError(t, err) - } - - return client -}