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