| //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) |
| } |
| } |
| } |