github.com/argoproj/argo-cd/v2@v2.10.5/util/cache/redis_hook_test.go (about)

     1  package cache
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/alicebob/miniredis/v2"
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	"github.com/redis/go-redis/v9"
    11  )
    12  
    13  func Test_ReconnectCallbackHookCalled(t *testing.T) {
    14  	mr, err := miniredis.Run()
    15  	if err != nil {
    16  		panic(err)
    17  	}
    18  	defer mr.Close()
    19  
    20  	called := false
    21  	hook := NewArgoRedisHook(func() {
    22  		called = true
    23  	})
    24  
    25  	faultyDNSRedisClient := redis.NewClient(&redis.Options{Addr: "invalidredishost.invalid:12345"})
    26  	faultyDNSRedisClient.AddHook(hook)
    27  
    28  	faultyDNSClient := NewRedisCache(faultyDNSRedisClient, 60*time.Second, RedisCompressionNone)
    29  	err = faultyDNSClient.Set(&Item{Key: "baz", Object: "foo"})
    30  	assert.Equal(t, called, true)
    31  	assert.Error(t, err)
    32  }
    33  
    34  func Test_ReconnectCallbackHookNotCalled(t *testing.T) {
    35  	mr, err := miniredis.Run()
    36  	if err != nil {
    37  		panic(err)
    38  	}
    39  	defer mr.Close()
    40  
    41  	called := false
    42  	hook := NewArgoRedisHook(func() {
    43  		called = true
    44  	})
    45  
    46  	redisClient := redis.NewClient(&redis.Options{Addr: mr.Addr()})
    47  	redisClient.AddHook(hook)
    48  	client := NewRedisCache(redisClient, 60*time.Second, RedisCompressionNone)
    49  
    50  	err = client.Set(&Item{Key: "foo", Object: "bar"})
    51  	assert.Equal(t, called, false)
    52  	assert.NoError(t, err)
    53  }