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  }