123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package network
- import (
- "context"
- "strings"
- "testing"
- "time"
- networktypes "github.com/docker/docker/api/types/network"
- "github.com/docker/docker/api/types/versions"
- ctr "github.com/docker/docker/integration/internal/container"
- "github.com/docker/docker/integration/internal/network"
- "gotest.tools/v3/assert"
- "gotest.tools/v3/skip"
- )
- func TestCreateWithMultiNetworks(t *testing.T) {
- skip.If(t, testEnv.DaemonInfo.OSType == "windows")
- skip.If(t, versions.LessThan(testEnv.DaemonAPIVersion(), "1.44"), "requires API v1.44")
- ctx := setupTest(t)
- apiClient := testEnv.APIClient()
- network.CreateNoError(ctx, t, apiClient, "testnet1")
- defer network.RemoveNoError(ctx, t, apiClient, "testnet1")
- network.CreateNoError(ctx, t, apiClient, "testnet2")
- defer network.RemoveNoError(ctx, t, apiClient, "testnet2")
- attachCtx, cancel := context.WithTimeout(ctx, 1*time.Second)
- defer cancel()
- res := ctr.RunAttach(attachCtx, t, apiClient,
- ctr.WithCmd("ip", "-o", "-4", "addr", "show"),
- ctr.WithNetworkMode("testnet1"),
- ctr.WithEndpointSettings("testnet1", &networktypes.EndpointSettings{}),
- ctr.WithEndpointSettings("testnet2", &networktypes.EndpointSettings{}))
- assert.Equal(t, res.ExitCode, 0)
- assert.Equal(t, res.Stderr.String(), "")
- // Only interfaces with an IPv4 address are printed by iproute2 when flag -4 is specified. Here, we should have two
- // interfaces for testnet1 and testnet2, plus lo.
- ifacesWithAddress := strings.Count(res.Stdout.String(), "\n")
- assert.Equal(t, ifacesWithAddress, 3)
- }
|