| //go:build linux || freebsd |
| // +build linux freebsd |
| |
| package daemon |
| |
| import ( |
| "testing" |
| |
| containertypes "github.com/docker/docker/api/types/container" |
| "github.com/docker/docker/daemon/config" |
| "github.com/docker/go-connections/nat" |
| "gotest.tools/v3/assert" |
| ) |
| |
| // TestContainerWarningHostAndPublishPorts that a warning is returned when setting network mode to host and specifying published ports. |
| // This should not be tested on Windows because Windows doesn't support "host" network mode. |
| func TestContainerWarningHostAndPublishPorts(t *testing.T) { |
| testCases := []struct { |
| ports nat.PortMap |
| warnings []string |
| }{ |
| {ports: nat.PortMap{}}, |
| {ports: nat.PortMap{ |
| "8080": []nat.PortBinding{{HostPort: "8989"}}, |
| }, warnings: []string{"Published ports are discarded when using host network mode"}}, |
| } |
| muteLogs() |
| |
| for _, tc := range testCases { |
| hostConfig := &containertypes.HostConfig{ |
| Runtime: "runc", |
| NetworkMode: "host", |
| PortBindings: tc.ports, |
| } |
| cs := &config.Config{} |
| configureRuntimes(cs) |
| d := &Daemon{configStore: cs} |
| wrns, err := d.verifyContainerSettings(hostConfig, &containertypes.Config{}, false) |
| assert.NilError(t, err) |
| assert.DeepEqual(t, tc.warnings, wrns) |
| } |
| } |