| //go:build !windows | |
| package runconfig // import "github.com/docker/docker/runconfig" | |
| import ( | |
| "testing" | |
| "github.com/docker/docker/api/types/container" | |
| "github.com/docker/docker/pkg/sysinfo" | |
| ) | |
| 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) | |
| } | |
| } | |
| } |