network_test.go 3.2 KB

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