Skip to content

Commit 3cd7a6f

Browse files
committed
test: add Redis Sentinel container setup for testing
- Add `setupRedisSentinelContainer` function to set up a Redis Sentinel container for testing - Add Redis Sentinel setup steps in `TestRedisSentinel` test function - Remove hardcoded Redis Sentinel hosts in `TestRedisSentinel` and dynamically generate them based on container setup Signed-off-by: appleboy <[email protected]>
1 parent f9eb0d8 commit 3cd7a6f

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

redis_test.go

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,39 @@ func (m mockMessage) Bytes() []byte {
3333
return []byte(m.Message)
3434
}
3535

36+
func setupRedisSentinelContainer(
37+
ctx context.Context,
38+
t *testing.T,
39+
masterHost string,
40+
masterPort string,
41+
) (testcontainers.Container, string) {
42+
req := testcontainers.ContainerRequest{
43+
Image: "bitnami/redis-sentinel:7.4-debian-12",
44+
ExposedPorts: []string{
45+
"26379/tcp",
46+
},
47+
WaitingFor: wait.NewExecStrategy(
48+
[]string{"redis-cli", "-h", "localhost", "-p", "26379", "ping"},
49+
),
50+
Env: map[string]string{
51+
"REDIS_MASTER_HOST": masterHost,
52+
"REDIS_MASTER_PORT_NUMBER": masterPort,
53+
"REDIS_MASTER_SET": "mymaster",
54+
"REDIS_SENTINEL_QUORUM": "1",
55+
},
56+
}
57+
redisC, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
58+
ContainerRequest: req,
59+
Started: true,
60+
})
61+
require.NoError(t, err)
62+
63+
endpoint, err := redisC.Endpoint(ctx, "")
64+
require.NoError(t, err)
65+
66+
return redisC, endpoint
67+
}
68+
3669
func setupRedisCluserContainer(ctx context.Context, t *testing.T) (testcontainers.Container, string) {
3770
req := testcontainers.ContainerRequest{
3871
Image: "vishnunair/docker-redis-cluster:latest",
@@ -213,10 +246,33 @@ func TestRedisCluster(t *testing.T) {
213246

214247
func TestRedisSentinel(t *testing.T) {
215248
t.Helper()
249+
250+
ctx := context.Background()
251+
252+
// create redis master
253+
redisC, _ := setupRedisContainer(ctx, t)
254+
defer testcontainers.CleanupContainer(t, redisC)
255+
masterPort, err := redisC.MappedPort(ctx, "6379")
256+
assert.NoError(t, err)
257+
masterHost, err := redisC.Host(ctx)
258+
assert.NoError(t, err)
259+
260+
sentinelC, _ := setupRedisSentinelContainer(ctx, t, masterHost, masterPort.Port())
261+
defer testcontainers.CleanupContainer(t, sentinelC)
262+
263+
sentinelPort, err := sentinelC.MappedPort(ctx, "26379")
264+
assert.NoError(t, err)
265+
266+
sentinelHost, err := sentinelC.Host(ctx)
267+
assert.NoError(t, err)
268+
216269
m := &mockMessage{
217270
Message: "foo",
218271
}
219-
hosts := []string{"127.0.0.1:26379", "127.0.0.1:26380"}
272+
273+
masterName := fmt.Sprintf("%s:%s", sentinelHost, sentinelPort.Port())
274+
275+
hosts := []string{masterName}
220276

221277
w := NewWorker(
222278
WithAddr(strings.Join(hosts, ",")),

0 commit comments

Comments
 (0)