| package service // import "github.com/docker/docker/integration/service" | |
| import ( | |
| "testing" | |
| containertypes "github.com/docker/docker/api/types/container" | |
| "github.com/docker/docker/api/types/network" | |
| "github.com/docker/docker/client" | |
| "github.com/docker/docker/integration/internal/container" | |
| net "github.com/docker/docker/integration/internal/network" | |
| "github.com/docker/docker/integration/internal/swarm" | |
| "gotest.tools/v3/assert" | |
| is "gotest.tools/v3/assert/cmp" | |
| "gotest.tools/v3/skip" | |
| ) | |
| func TestDockerNetworkConnectAliasPreV144(t *testing.T) { | |
| skip.If(t, testEnv.DaemonInfo.OSType == "windows") | |
| ctx := setupTest(t) | |
| d := swarm.NewSwarm(ctx, t, testEnv) | |
| defer d.Stop(t) | |
| client := d.NewClientT(t, client.WithVersion("1.43")) | |
| defer client.Close() | |
| name := t.Name() + "test-alias" | |
| net.CreateNoError(ctx, t, client, name, | |
| net.WithDriver("overlay"), | |
| net.WithAttachable(), | |
| ) | |
| cID1 := container.Create(ctx, t, client, func(c *container.TestContainerConfig) { | |
| c.NetworkingConfig = &network.NetworkingConfig{ | |
| EndpointsConfig: map[string]*network.EndpointSettings{ | |
| name: {}, | |
| }, | |
| } | |
| }) | |
| err := client.NetworkConnect(ctx, name, cID1, &network.EndpointSettings{ | |
| Aliases: []string{ | |
| "aaa", | |
| }, | |
| }) | |
| assert.NilError(t, err) | |
| err = client.ContainerStart(ctx, cID1, containertypes.StartOptions{}) | |
| assert.NilError(t, err) | |
| ng1, err := client.ContainerInspect(ctx, cID1) | |
| assert.NilError(t, err) | |
| assert.Check(t, is.Equal(len(ng1.NetworkSettings.Networks[name].Aliases), 2)) | |
| assert.Check(t, is.Equal(ng1.NetworkSettings.Networks[name].Aliases[0], "aaa")) | |
| cID2 := container.Create(ctx, t, client, func(c *container.TestContainerConfig) { | |
| c.NetworkingConfig = &network.NetworkingConfig{ | |
| EndpointsConfig: map[string]*network.EndpointSettings{ | |
| name: {}, | |
| }, | |
| } | |
| }) | |
| err = client.NetworkConnect(ctx, name, cID2, &network.EndpointSettings{ | |
| Aliases: []string{ | |
| "bbb", | |
| }, | |
| }) | |
| assert.NilError(t, err) | |
| err = client.ContainerStart(ctx, cID2, containertypes.StartOptions{}) | |
| assert.NilError(t, err) | |
| ng2, err := client.ContainerInspect(ctx, cID2) | |
| assert.NilError(t, err) | |
| assert.Check(t, is.Equal(len(ng2.NetworkSettings.Networks[name].Aliases), 2)) | |
| assert.Check(t, is.Equal(ng2.NetworkSettings.Networks[name].Aliases[0], "bbb")) | |
| } | |
| func TestDockerNetworkReConnect(t *testing.T) { | |
| skip.If(t, testEnv.DaemonInfo.OSType == "windows") | |
| ctx := setupTest(t) | |
| d := swarm.NewSwarm(ctx, t, testEnv) | |
| defer d.Stop(t) | |
| client := d.NewClientT(t) | |
| defer client.Close() | |
| name := t.Name() + "dummyNet" | |
| net.CreateNoError(ctx, t, client, name, | |
| net.WithDriver("overlay"), | |
| net.WithAttachable(), | |
| ) | |
| c1 := container.Create(ctx, t, client, func(c *container.TestContainerConfig) { | |
| c.NetworkingConfig = &network.NetworkingConfig{ | |
| EndpointsConfig: map[string]*network.EndpointSettings{ | |
| name: {}, | |
| }, | |
| } | |
| }) | |
| err := client.NetworkConnect(ctx, name, c1, &network.EndpointSettings{}) | |
| assert.NilError(t, err) | |
| err = client.ContainerStart(ctx, c1, containertypes.StartOptions{}) | |
| assert.NilError(t, err) | |
| n1, err := client.ContainerInspect(ctx, c1) | |
| assert.NilError(t, err) | |
| err = client.NetworkConnect(ctx, name, c1, &network.EndpointSettings{}) | |
| assert.ErrorContains(t, err, "is already attached to network") | |
| n2, err := client.ContainerInspect(ctx, c1) | |
| assert.NilError(t, err) | |
| assert.Check(t, is.DeepEqual(n1, n2)) | |
| } |