mirror of
https://github.com/clearlinux/docker.git
synced 2026-05-16 11:43:39 +00:00
Previous versions of libcontainer allowed CpuShares that were greater
than the maximum or less than the minimum supported by the kernel, and
relied on the kernel to do the right thing. Newer libcontainer fails
after creating the container if the requested CpuShares is different
from what was actually created by the kernel, which breaks compatibility
with earlier Docker Remote API versions. This change explicitly adjusts
the requested CpuShares in API versions < 1.20.
Signed-off-by: Samuel Karp <skarp@amazon.com>
(cherry picked from commit ed39fbeb2a)
69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
// +build linux
|
|
|
|
package server
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/docker/docker/pkg/version"
|
|
"github.com/docker/docker/runconfig"
|
|
)
|
|
|
|
func TestAdjustCpuSharesOldApi(t *testing.T) {
|
|
apiVersion := version.Version("1.18")
|
|
hostConfig := &runconfig.HostConfig{
|
|
CpuShares: linuxMinCpuShares - 1,
|
|
}
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != linuxMinCpuShares {
|
|
t.Errorf("Expected CpuShares to be %d", linuxMinCpuShares)
|
|
}
|
|
|
|
hostConfig.CpuShares = linuxMaxCpuShares + 1
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != linuxMaxCpuShares {
|
|
t.Errorf("Expected CpuShares to be %d", linuxMaxCpuShares)
|
|
}
|
|
|
|
hostConfig.CpuShares = 0
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != 0 {
|
|
t.Error("Expected CpuShares to be unchanged")
|
|
}
|
|
|
|
hostConfig.CpuShares = 1024
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != 1024 {
|
|
t.Error("Expected CpuShares to be unchanged")
|
|
}
|
|
}
|
|
|
|
func TestAdjustCpuSharesNoAdjustment(t *testing.T) {
|
|
apiVersion := version.Version("1.19")
|
|
hostConfig := &runconfig.HostConfig{
|
|
CpuShares: linuxMinCpuShares - 1,
|
|
}
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != linuxMinCpuShares-1 {
|
|
t.Errorf("Expected CpuShares to be %d", linuxMinCpuShares-1)
|
|
}
|
|
|
|
hostConfig.CpuShares = linuxMaxCpuShares + 1
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != linuxMaxCpuShares+1 {
|
|
t.Errorf("Expected CpuShares to be %d", linuxMaxCpuShares+1)
|
|
}
|
|
|
|
hostConfig.CpuShares = 0
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != 0 {
|
|
t.Error("Expected CpuShares to be unchanged")
|
|
}
|
|
|
|
hostConfig.CpuShares = 1024
|
|
adjustCpuShares(apiVersion, hostConfig)
|
|
if hostConfig.CpuShares != 1024 {
|
|
t.Error("Expected CpuShares to be unchanged")
|
|
}
|
|
}
|