github.com/rish1988/moby@v25.0.2+incompatible/integration/service/network_test.go (about) 1 package service // import "github.com/docker/docker/integration/service" 2 3 import ( 4 "testing" 5 6 containertypes "github.com/docker/docker/api/types/container" 7 "github.com/docker/docker/api/types/network" 8 "github.com/docker/docker/client" 9 "github.com/docker/docker/integration/internal/container" 10 net "github.com/docker/docker/integration/internal/network" 11 "github.com/docker/docker/integration/internal/swarm" 12 "gotest.tools/v3/assert" 13 is "gotest.tools/v3/assert/cmp" 14 "gotest.tools/v3/skip" 15 ) 16 17 func TestDockerNetworkConnectAliasPreV144(t *testing.T) { 18 skip.If(t, testEnv.DaemonInfo.OSType == "windows") 19 ctx := setupTest(t) 20 21 d := swarm.NewSwarm(ctx, t, testEnv) 22 defer d.Stop(t) 23 client := d.NewClientT(t, client.WithVersion("1.43")) 24 defer client.Close() 25 26 name := t.Name() + "test-alias" 27 net.CreateNoError(ctx, t, client, name, 28 net.WithDriver("overlay"), 29 net.WithAttachable(), 30 ) 31 32 cID1 := container.Create(ctx, t, client, func(c *container.TestContainerConfig) { 33 c.NetworkingConfig = &network.NetworkingConfig{ 34 EndpointsConfig: map[string]*network.EndpointSettings{ 35 name: {}, 36 }, 37 } 38 }) 39 40 err := client.NetworkConnect(ctx, name, cID1, &network.EndpointSettings{ 41 Aliases: []string{ 42 "aaa", 43 }, 44 }) 45 assert.NilError(t, err) 46 47 err = client.ContainerStart(ctx, cID1, containertypes.StartOptions{}) 48 assert.NilError(t, err) 49 50 ng1, err := client.ContainerInspect(ctx, cID1) 51 assert.NilError(t, err) 52 assert.Check(t, is.Equal(len(ng1.NetworkSettings.Networks[name].Aliases), 2)) 53 assert.Check(t, is.Equal(ng1.NetworkSettings.Networks[name].Aliases[0], "aaa")) 54 55 cID2 := container.Create(ctx, t, client, func(c *container.TestContainerConfig) { 56 c.NetworkingConfig = &network.NetworkingConfig{ 57 EndpointsConfig: map[string]*network.EndpointSettings{ 58 name: {}, 59 }, 60 } 61 }) 62 63 err = client.NetworkConnect(ctx, name, cID2, &network.EndpointSettings{ 64 Aliases: []string{ 65 "bbb", 66 }, 67 }) 68 assert.NilError(t, err) 69 70 err = client.ContainerStart(ctx, cID2, containertypes.StartOptions{}) 71 assert.NilError(t, err) 72 73 ng2, err := client.ContainerInspect(ctx, cID2) 74 assert.NilError(t, err) 75 assert.Check(t, is.Equal(len(ng2.NetworkSettings.Networks[name].Aliases), 2)) 76 assert.Check(t, is.Equal(ng2.NetworkSettings.Networks[name].Aliases[0], "bbb")) 77 } 78 79 func TestDockerNetworkReConnect(t *testing.T) { 80 skip.If(t, testEnv.DaemonInfo.OSType == "windows") 81 ctx := setupTest(t) 82 83 d := swarm.NewSwarm(ctx, t, testEnv) 84 defer d.Stop(t) 85 client := d.NewClientT(t) 86 defer client.Close() 87 88 name := t.Name() + "dummyNet" 89 net.CreateNoError(ctx, t, client, name, 90 net.WithDriver("overlay"), 91 net.WithAttachable(), 92 ) 93 94 c1 := container.Create(ctx, t, client, func(c *container.TestContainerConfig) { 95 c.NetworkingConfig = &network.NetworkingConfig{ 96 EndpointsConfig: map[string]*network.EndpointSettings{ 97 name: {}, 98 }, 99 } 100 }) 101 102 err := client.NetworkConnect(ctx, name, c1, &network.EndpointSettings{}) 103 assert.NilError(t, err) 104 105 err = client.ContainerStart(ctx, c1, containertypes.StartOptions{}) 106 assert.NilError(t, err) 107 108 n1, err := client.ContainerInspect(ctx, c1) 109 assert.NilError(t, err) 110 111 err = client.NetworkConnect(ctx, name, c1, &network.EndpointSettings{}) 112 assert.ErrorContains(t, err, "is already attached to network") 113 114 n2, err := client.ContainerInspect(ctx, c1) 115 assert.NilError(t, err) 116 assert.Check(t, is.DeepEqual(n1, n2)) 117 }