Skip to content

Commit 60c7eac

Browse files
authored
fix(etcd): single node etcd cluster access (testcontainers#3149)
Added --listen-client-urls and --advertise-client-urls to provide access to a single node etcd cluster.
1 parent a11fa34 commit 60c7eac

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

modules/etcd/cmd_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
func Test_configureCMD(t *testing.T) {
1010
t.Run("default", func(t *testing.T) {
1111
got := configureCMD(options{})
12-
want := []string{"etcd", "--name=default"}
12+
want := []string{"etcd", "--name=default", "--listen-client-urls=http://0.0.0.0:2379", "--advertise-client-urls=http://0.0.0.0:2379"}
1313
require.Equal(t, want, got)
1414
})
1515

modules/etcd/etcd.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,10 @@ func configureCMD(settings options) []string {
166166
cmds := []string{"etcd"}
167167

168168
if len(settings.nodeNames) == 0 {
169-
cmds = append(cmds, "--name=default")
169+
cmds = append(cmds, "--name=default",
170+
"--listen-client-urls="+scheme+"://0.0.0.0:"+clientPort,
171+
"--advertise-client-urls="+scheme+"://0.0.0.0:"+clientPort,
172+
)
170173
} else {
171174
clusterCmds := []string{
172175
"--name=" + settings.nodeNames[settings.currentNode],

modules/etcd/etcd_test.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,26 @@ func TestRun(t *testing.T) {
3030
require.Contains(t, string(output), "default")
3131
}
3232

33-
func TestRun_PutGet(t *testing.T) {
34-
ctx := context.Background()
33+
func TestPutGet(t *testing.T) {
34+
t.Run("single_node", func(t *testing.T) {
35+
ctr, err := etcd.Run(context.Background(), "gcr.io/etcd-development/etcd:v3.5.14")
36+
testPutGet(t, ctr, err)
37+
})
38+
t.Run("multiple_nodes", func(t *testing.T) {
39+
ctr, err := etcd.Run(context.Background(), "gcr.io/etcd-development/etcd:v3.5.14", etcd.WithNodes("etcd-1", "etcd-2", "etcd-3"))
40+
testPutGet(t, ctr, err)
41+
})
42+
}
43+
44+
func testPutGet(t *testing.T, ctr *etcd.EtcdContainer, err error) {
45+
t.Helper()
3546

36-
ctr, err := etcd.Run(ctx, "gcr.io/etcd-development/etcd:v3.5.14", etcd.WithNodes("etcd-1", "etcd-2", "etcd-3"))
3747
testcontainers.CleanupContainer(t, ctr)
48+
3849
require.NoError(t, err)
3950

51+
ctx := context.Background()
52+
4053
clientEndpoints, err := ctr.ClientEndpoints(ctx)
4154
require.NoError(t, err)
4255

@@ -45,7 +58,9 @@ func TestRun_PutGet(t *testing.T) {
4558
DialTimeout: 5 * time.Second,
4659
})
4760
require.NoError(t, err)
48-
defer cli.Close()
61+
defer func() {
62+
require.NoError(t, cli.Close())
63+
}()
4964

5065
ctx, cancel := context.WithTimeout(ctx, 2*time.Second)
5166
defer cancel()

0 commit comments

Comments
 (0)