go-micro.dev/v5@v5.12.0/cache/redis/redis_test.go (about) 1 package redis 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 "time" 8 9 "go-micro.dev/v5/cache" 10 ) 11 12 var ( 13 ctx = context.TODO() 14 key string = "redistestkey" 15 val interface{} = "hello go-micro" 16 addr = cache.WithAddress("redis://127.0.0.1:6379") 17 ) 18 19 // TestMemCache tests the in-memory cache implementation. 20 func TestCache(t *testing.T) { 21 if len(os.Getenv("LOCAL")) == 0 { 22 t.Skip() 23 } 24 25 t.Run("CacheGetMiss", func(t *testing.T) { 26 if _, _, err := NewRedisCache(addr).Get(ctx, key); err == nil { 27 t.Error("expected to get no value from cache") 28 } 29 }) 30 31 t.Run("CacheGetHit", func(t *testing.T) { 32 c := NewRedisCache(addr) 33 34 if err := c.Put(ctx, key, val, 0); err != nil { 35 t.Error(err) 36 } 37 38 if a, _, err := c.Get(ctx, key); err != nil { 39 t.Errorf("Expected a value, got err: %s", err) 40 } else if string(a.([]byte)) != val { 41 t.Errorf("Expected '%v', got '%v'", val, a) 42 } 43 }) 44 45 t.Run("CacheGetExpired", func(t *testing.T) { 46 c := NewRedisCache(addr) 47 d := 20 * time.Millisecond 48 49 if err := c.Put(ctx, key, val, d); err != nil { 50 t.Error(err) 51 } 52 53 <-time.After(25 * time.Millisecond) 54 if _, _, err := c.Get(ctx, key); err == nil { 55 t.Error("expected to get no value from cache") 56 } 57 }) 58 59 t.Run("CacheGetValid", func(t *testing.T) { 60 c := NewRedisCache(addr) 61 e := 25 * time.Millisecond 62 63 if err := c.Put(ctx, key, val, e); err != nil { 64 t.Error(err) 65 } 66 67 <-time.After(20 * time.Millisecond) 68 if _, _, err := c.Get(ctx, key); err != nil { 69 t.Errorf("expected a value, got err: %s", err) 70 } 71 }) 72 73 t.Run("CacheDeleteHit", func(t *testing.T) { 74 c := NewRedisCache(addr) 75 76 if err := c.Put(ctx, key, val, 0); err != nil { 77 t.Error(err) 78 } 79 80 if err := c.Delete(ctx, key); err != nil { 81 t.Errorf("Expected to delete an item, got err: %s", err) 82 } 83 84 if _, _, err := c.Get(ctx, key); err == nil { 85 t.Errorf("Expected error") 86 } 87 }) 88 }