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  }