Skip to content

Commit 6527a8a

Browse files
committed
refactor: refactor Redis test setup to use dynamic cluster containers
- Remove hardcoded Redis host addresses - Add function to set up a Redis cluster container using testcontainers - Update `TestRedisCluster` to use the new Redis cluster container setup - Replace individual Redis container setup with cluster container setup in tests - Dynamically map and assert Redis container ports and host IPs - Update hosts list in `TestRedisCluster` to use dynamically generated master and slave names Signed-off-by: appleboy <[email protected]>
1 parent dc04095 commit 6527a8a

File tree

1 file changed

+41
-10
lines changed

1 file changed

+41
-10
lines changed

redis_test.go

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ import (
2121
"go.uber.org/goleak"
2222
)
2323

24-
var (
25-
host01 = "127.0.0.1:6379"
26-
host02 = "127.0.0.1:6380"
27-
)
28-
2924
func TestMain(m *testing.M) {
3025
goleak.VerifyTestMain(m)
3126
}
@@ -38,6 +33,33 @@ func (m mockMessage) Bytes() []byte {
3833
return []byte(m.Message)
3934
}
4035

36+
func setupRedisCluserContainer(ctx context.Context, t *testing.T) (testcontainers.Container, string) {
37+
req := testcontainers.ContainerRequest{
38+
Image: "vishnunair/docker-redis-cluster:latest",
39+
ExposedPorts: []string{
40+
"6379/tcp",
41+
"6380/tcp",
42+
"6381/tcp",
43+
"6382/tcp",
44+
"6383/tcp",
45+
"6384/tcp",
46+
},
47+
WaitingFor: wait.NewExecStrategy(
48+
[]string{"redis-cli", "-h", "localhost", "-p", "6379", "cluster", "info"},
49+
),
50+
}
51+
redisC, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
52+
ContainerRequest: req,
53+
Started: true,
54+
})
55+
require.NoError(t, err)
56+
57+
endpoint, err := redisC.Endpoint(ctx, "")
58+
require.NoError(t, err)
59+
60+
return redisC, endpoint
61+
}
62+
4163
func setupRedisContainer(ctx context.Context, t *testing.T) (testcontainers.Container, string) {
4264
req := testcontainers.ContainerRequest{
4365
Image: "redis:6",
@@ -145,17 +167,26 @@ func TestRedisCluster(t *testing.T) {
145167
t.Helper()
146168

147169
ctx := context.Background()
148-
redisC01, endpoint01 := setupRedisContainer(ctx, t)
149-
defer testcontainers.CleanupContainer(t, redisC01)
170+
redisC, _ := setupRedisCluserContainer(ctx, t)
171+
defer testcontainers.CleanupContainer(t, redisC)
150172

151-
redisC02, endpoint02 := setupRedisContainer(ctx, t)
152-
defer testcontainers.CleanupContainer(t, redisC02)
173+
masterPort, err := redisC.MappedPort(ctx, "6379")
174+
assert.NoError(t, err)
175+
176+
slavePort, err := redisC.MappedPort(ctx, "6382")
177+
assert.NoError(t, err)
178+
179+
hostIP, err := redisC.Host(ctx)
180+
assert.NoError(t, err)
153181

154182
m := &mockMessage{
155183
Message: "foo",
156184
}
157185

158-
hosts := []string{endpoint01, endpoint02}
186+
masterName := fmt.Sprintf("%s:%s", hostIP, masterPort.Port())
187+
slaveName := fmt.Sprintf("%s:%s", hostIP, slavePort.Port())
188+
189+
hosts := []string{masterName, slaveName}
159190

160191
w := NewWorker(
161192
WithAddr(strings.Join(hosts, ",")),

0 commit comments

Comments
 (0)