network_test.go 3.3 KB

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