Files
grafana/pkg/services/live/managedstream/cache_redis_test.go
2024-09-26 08:41:47 -04:00

68 lines
1.3 KiB
Go

package managedstream
import (
"os"
"strings"
"testing"
"github.com/go-redis/redis/v8"
"github.com/google/uuid"
"github.com/stretchr/testify/require"
)
func TestIntegrationRedisCacheStorage(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
u, ok := os.LookupEnv("REDIS_URL")
if !ok || u == "" {
t.Skip("No redis URL supplied")
}
addr := u
db := 0
parsed, err := redis.ParseURL(u)
if err == nil {
addr = parsed.Addr
db = parsed.DB
}
redisClient := redis.NewClient(&redis.Options{
Addr: addr,
DB: db,
})
prefix := uuid.New().String()
t.Cleanup(redisCleanup(t, redisClient, prefix))
c := NewRedisFrameCache(redisClient, prefix)
require.NotNil(t, c)
testFrameCache(t, c)
keys, err := redisClient.Keys(redisClient.Context(), "*").Result()
if err != nil {
require.NoError(t, err)
}
require.NotZero(t, len(keys))
for _, key := range keys {
require.True(t, strings.HasPrefix(key, prefix))
}
}
func redisCleanup(t *testing.T, redisClient *redis.Client, prefix string) func() {
return func() {
keys, err := redisClient.Keys(redisClient.Context(), prefix+"*").Result()
if err != nil {
require.NoError(t, err)
}
for _, key := range keys {
_, err := redisClient.Del(redisClient.Context(), key).Result()
require.NoError(t, err)
}
}
}