diff options
author | Alex Stockinger <alex@atomicjar.com> | 2022-01-27 21:13:45 +0100 |
---|---|---|
committer | Alex Stockinger <alex@atomicjar.com> | 2023-03-01 07:58:26 +0100 |
commit | 91c2b12205dd8ad35d9d754e364c7b2f01a19aba (patch) | |
tree | f744e78b5125734bb5400fd9436945c0379a67a5 /integration | |
parent | 0021339b9299c5f1596bdf772a42ce346f16f060 (diff) | |
download | docker-91c2b12205dd8ad35d9d754e364c7b2f01a19aba.tar.gz |
Make default options for newly created networks configurable
Signed-off-by: Alex Stockinger <alex@atomicjar.com>
Co-authored-by: Sergei Egorov <bsideup@gmail.com>
Co-authored-by: Cory Snider <corhere@gmail.com>
Diffstat (limited to 'integration')
-rw-r--r-- | integration/network/network_test.go | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/integration/network/network_test.go b/integration/network/network_test.go index 00603094a2..bfc6e2998e 100644 --- a/integration/network/network_test.go +++ b/integration/network/network_test.go @@ -4,12 +4,14 @@ import ( "bytes" "context" "encoding/json" + "fmt" "net/http" "os/exec" "strings" "testing" "github.com/docker/docker/api/types" + ntypes "github.com/docker/docker/api/types/network" "github.com/docker/docker/integration/internal/container" "github.com/docker/docker/integration/internal/network" "github.com/docker/docker/testutil/daemon" @@ -175,3 +177,75 @@ func TestHostIPv4BridgeLabel(t *testing.T) { // Make sure the SNAT rule exists icmd.RunCommand("iptables", "-t", "nat", "-C", "POSTROUTING", "-s", out.IPAM.Config[0].Subnet, "!", "-o", bridgeName, "-j", "SNAT", "--to-source", ipv4SNATAddr).Assert(t, icmd.Success) } + +func TestDefaultNetworkOpts(t *testing.T) { + skip.If(t, testEnv.OSType == "windows") + skip.If(t, testEnv.IsRemoteDaemon) + skip.If(t, testEnv.IsRootless, "rootless mode has different view of network") + + tests := []struct { + name string + mtu int + configFrom bool + args []string + }{ + { + name: "default value", + mtu: 1500, + args: []string{}, + }, + { + name: "cmdline value", + mtu: 1234, + args: []string{"--default-network-opt", "bridge=com.docker.network.driver.mtu=1234"}, + }, + { + name: "config-from value", + configFrom: true, + mtu: 1233, + args: []string{"--default-network-opt", "bridge=com.docker.network.driver.mtu=1234"}, + }, + } + + for _, tc := range tests { + tc := tc + t.Run(tc.name, func(t *testing.T) { + d := daemon.New(t) + d.StartWithBusybox(t, tc.args...) + defer d.Stop(t) + c := d.NewClientT(t) + defer c.Close() + ctx := context.Background() + + if tc.configFrom { + // Create a new network config + network.CreateNoError(ctx, t, c, "from-net", func(create *types.NetworkCreate) { + create.ConfigOnly = true + create.Options = map[string]string{ + "com.docker.network.driver.mtu": fmt.Sprint(tc.mtu), + } + }) + defer c.NetworkRemove(ctx, "from-net") + } + + // Create a new network + networkName := "testnet" + network.CreateNoError(ctx, t, c, networkName, func(create *types.NetworkCreate) { + if tc.configFrom { + create.ConfigFrom = &ntypes.ConfigReference{ + Network: "from-net", + } + } + }) + defer c.NetworkRemove(ctx, networkName) + + // Start a container to inspect the MTU of its network interface + id1 := container.Run(ctx, t, c, container.WithNetworkMode(networkName)) + defer c.ContainerRemove(ctx, id1, types.ContainerRemoveOptions{Force: true}) + + result, err := container.Exec(ctx, c, id1, []string{"ip", "l", "show", "eth0"}) + assert.NilError(t, err) + assert.Check(t, is.Contains(result.Combined(), fmt.Sprintf(" mtu %d ", tc.mtu)), "Network MTU should have been set to %d", tc.mtu) + }) + } +} |