mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 05:21:50 +08:00
68 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|