6a2542dacf
No more concept of "anonymous endpoints". The equivalent is now an endpoint with no DNSNames set. Some of the code removed by this commit was mutating user-supplied endpoint's Aliases to add container's short ID to that list. In order to preserve backward compatibility for the ContainerInspect endpoint, this commit also takes care of adding that short ID (and the container hostname) to `EndpointSettings.Aliases` before returning the response. Signed-off-by: Albin Kerouanton <albinker@gmail.com>
117 lines
3.3 KiB
Go
117 lines
3.3 KiB
Go
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))
|
|
}
|