e155cb4fee
These types were moved to api/types/container in 7ac4232e70
,
but the unit-tests for them were not moved. This patch moves the unit-tests back together
with the types.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
104 lines
2.6 KiB
Go
104 lines
2.6 KiB
Go
//go:build !windows
|
|
// +build !windows
|
|
|
|
package runconfig // import "github.com/docker/docker/runconfig"
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/docker/docker/api/types/container"
|
|
"github.com/docker/docker/pkg/sysinfo"
|
|
"gotest.tools/v3/assert"
|
|
)
|
|
|
|
func TestDecodeHostConfig(t *testing.T) {
|
|
fixtures := []struct {
|
|
file string
|
|
}{
|
|
{"fixtures/unix/container_hostconfig_1_14.json"},
|
|
{"fixtures/unix/container_hostconfig_1_19.json"},
|
|
}
|
|
|
|
for _, f := range fixtures {
|
|
b, err := os.ReadFile(f.file)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
c, err := decodeHostConfig(bytes.NewReader(b))
|
|
if err != nil {
|
|
t.Fatal(fmt.Errorf("Error parsing %s: %v", f, err))
|
|
}
|
|
|
|
assert.Check(t, !c.Privileged)
|
|
|
|
if l := len(c.Binds); l != 1 {
|
|
t.Fatalf("Expected 1 bind, found %d\n", l)
|
|
}
|
|
|
|
if len(c.CapAdd) != 1 && c.CapAdd[0] != "NET_ADMIN" {
|
|
t.Fatalf("Expected CapAdd NET_ADMIN, got %v", c.CapAdd)
|
|
}
|
|
|
|
if len(c.CapDrop) != 1 && c.CapDrop[0] != "NET_ADMIN" {
|
|
t.Fatalf("Expected CapDrop NET_ADMIN, got %v", c.CapDrop)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestValidateResources(t *testing.T) {
|
|
type resourceTest struct {
|
|
ConfigCPURealtimePeriod int64
|
|
ConfigCPURealtimeRuntime int64
|
|
SysInfoCPURealtime bool
|
|
ErrorExpected bool
|
|
FailureMsg string
|
|
}
|
|
|
|
tests := []resourceTest{
|
|
{
|
|
ConfigCPURealtimePeriod: 1000,
|
|
ConfigCPURealtimeRuntime: 1000,
|
|
SysInfoCPURealtime: true,
|
|
ErrorExpected: false,
|
|
FailureMsg: "Expected valid configuration",
|
|
},
|
|
{
|
|
ConfigCPURealtimePeriod: 5000,
|
|
ConfigCPURealtimeRuntime: 5000,
|
|
SysInfoCPURealtime: false,
|
|
ErrorExpected: true,
|
|
FailureMsg: "Expected failure when cpu-rt-period is set but kernel doesn't support it",
|
|
},
|
|
{
|
|
ConfigCPURealtimePeriod: 5000,
|
|
ConfigCPURealtimeRuntime: 5000,
|
|
SysInfoCPURealtime: false,
|
|
ErrorExpected: true,
|
|
FailureMsg: "Expected failure when cpu-rt-runtime is set but kernel doesn't support it",
|
|
},
|
|
{
|
|
ConfigCPURealtimePeriod: 5000,
|
|
ConfigCPURealtimeRuntime: 10000,
|
|
SysInfoCPURealtime: true,
|
|
ErrorExpected: true,
|
|
FailureMsg: "Expected failure when cpu-rt-runtime is greater than cpu-rt-period",
|
|
},
|
|
}
|
|
|
|
for _, rt := range tests {
|
|
var hc container.HostConfig
|
|
hc.Resources.CPURealtimePeriod = rt.ConfigCPURealtimePeriod
|
|
hc.Resources.CPURealtimeRuntime = rt.ConfigCPURealtimeRuntime
|
|
|
|
var si sysinfo.SysInfo
|
|
si.CPURealtime = rt.SysInfoCPURealtime
|
|
|
|
if err := validateResources(&hc, &si); (err != nil) != rt.ErrorExpected {
|
|
t.Fatal(rt.FailureMsg, err)
|
|
}
|
|
}
|
|
}
|