mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Ensure test graphdriver plugin runs on test host
Sets a kernel requirement for for `TestGraphdriverPlugin` since the graphdriver being used is overlay2.. and also makes sure to skip the kernel check in the actual graphdriver since we may be able to detect kernels with backported support for overlay2 style mounts a bit more freely in the test code. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
d477a24ec5
commit
e4ebc92edc
3 changed files with 25 additions and 4 deletions
|
@ -236,7 +236,7 @@ func (s *DockerDaemonSuite) TestVolumePlugin(c *check.C) {
|
|||
}
|
||||
|
||||
func (s *DockerDaemonSuite) TestGraphdriverPlugin(c *check.C) {
|
||||
testRequires(c, Network, IsAmd64, DaemonIsLinux, overlaySupported)
|
||||
testRequires(c, Network, IsAmd64, DaemonIsLinux, overlay2Supported)
|
||||
|
||||
s.d.Start(c)
|
||||
|
||||
|
@ -246,7 +246,7 @@ func (s *DockerDaemonSuite) TestGraphdriverPlugin(c *check.C) {
|
|||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
|
||||
// restart the daemon with the plugin set as the storage driver
|
||||
s.d.Restart(c, "-s", plugin)
|
||||
s.d.Restart(c, "-s", plugin, "--storage-opt", "overlay2.override_kernel_check=1")
|
||||
|
||||
// run a container
|
||||
out, err = s.d.Cmd("run", "--rm", "busybox", "true") // this will pull busybox using the plugin
|
||||
|
|
|
@ -66,6 +66,8 @@ var (
|
|||
|
||||
// daemonPid is the pid of the main test daemon
|
||||
daemonPid int
|
||||
|
||||
daemonKernelVersion string
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -111,6 +113,7 @@ func init() {
|
|||
type Info struct {
|
||||
DockerRootDir string
|
||||
ExperimentalBuild bool
|
||||
KernelVersion string
|
||||
}
|
||||
var i Info
|
||||
status, b, err := sockRequest("GET", "/info", nil)
|
||||
|
@ -118,6 +121,7 @@ func init() {
|
|||
if err = json.Unmarshal(b, &i); err == nil {
|
||||
dockerBasePath = i.DockerRootDir
|
||||
experimentalDaemon = i.ExperimentalBuild
|
||||
daemonKernelVersion = i.KernelVersion
|
||||
}
|
||||
}
|
||||
volumesConfigPath = dockerBasePath + "/volumes"
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"os/exec"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/docker/pkg/parsers/kernel"
|
||||
"github.com/docker/docker/pkg/sysinfo"
|
||||
)
|
||||
|
||||
|
@ -124,7 +125,7 @@ var (
|
|||
},
|
||||
"Test cannot be run without a kernel (4.3+) supporting ambient capabilities",
|
||||
}
|
||||
overlaySupported = testRequirement{
|
||||
overlayFSSupported = testRequirement{
|
||||
func() bool {
|
||||
cmd := exec.Command(dockerBinary, "run", "--rm", "busybox", "/bin/sh", "-c", "cat /proc/filesystems")
|
||||
out, err := cmd.CombinedOutput()
|
||||
|
@ -133,7 +134,23 @@ var (
|
|||
}
|
||||
return bytes.Contains(out, []byte("overlay\n"))
|
||||
},
|
||||
"Test cannot be run wihtout suppport for ovelayfs",
|
||||
"Test cannot be run without suppport for overlayfs",
|
||||
}
|
||||
overlay2Supported = testRequirement{
|
||||
func() bool {
|
||||
if !overlayFSSupported.Condition() {
|
||||
return false
|
||||
}
|
||||
|
||||
daemonV, err := kernel.ParseRelease(daemonKernelVersion)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
requiredV := kernel.VersionInfo{Kernel: 4}
|
||||
return kernel.CompareKernelVersion(*daemonV, requiredV) > -1
|
||||
|
||||
},
|
||||
"Test cannot be run without overlay2 support (kernel 4.0+)",
|
||||
}
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue