github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/test/docker/redis/redis.go (about) 1 package redis 2 3 import ( 4 "context" 5 "log" 6 "net" 7 8 "github.com/ory/dockertest" 9 "github.com/redis/go-redis/v9" 10 ) 11 12 func GenerateInstance(pool *dockertest.Pool) (*redis.Client, *dockertest.Resource) { 13 var redisClient *redis.Client 14 15 // Run the Docker container 16 resource, err := pool.Run("redis", "latest", nil) 17 if err != nil { 18 log.Fatalf("Could not start resource: %s", err) 19 } 20 21 // Exponential retry to connect to redis while it is booting 22 if err := pool.Retry(func() error { 23 redisClient = redis.NewClient(&redis.Options{ 24 Addr: net.JoinHostPort("localhost", resource.GetPort("6379/tcp")), 25 Password: "", // no password set 26 DB: 0, // use default DB 27 }) 28 29 ping := redisClient.Ping(context.Background()) 30 return ping.Err() 31 }); err != nil { 32 log.Fatalf("Could not connect to Docker: %s", err) 33 } 34 35 return redisClient, resource 36 }