X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/87a18ef2c05487c4330e6fb6ce6c7934f6bea5a6..58ea9370fa7b38382dfa9eea4c42a616e0a699f3:/lib/crunchrun/docker_test.go diff --git a/lib/crunchrun/docker_test.go b/lib/crunchrun/docker_test.go index 28eb59546a..9a1573193b 100644 --- a/lib/crunchrun/docker_test.go +++ b/lib/crunchrun/docker_test.go @@ -8,6 +8,7 @@ import ( "os/exec" "time" + dockercontainer "github.com/docker/docker/api/types/container" . "gopkg.in/check.v1" ) @@ -29,3 +30,35 @@ func (s *dockerSuite) SetUpSuite(c *C) { c.Assert(err, IsNil) } } + +var _ = Suite(&dockerStubSuite{}) + +// dockerStubSuite tests don't really connect to the docker service, +// so we can run them even if docker is not installed. +type dockerStubSuite struct{} + +func (s *dockerStubSuite) TestDockerContainerConfig(c *C) { + e, err := newDockerExecutor("zzzzz-zzzzz-zzzzzzzzzzzzzzz", c.Logf, time.Second/2) + c.Assert(err, IsNil) + cfg, hostCfg := e.config(containerSpec{ + VCPUs: 4, + RAM: 123123123, + WorkingDir: "/WorkingDir", + Env: map[string]string{"FOO": "bar"}, + BindMounts: map[string]bindmount{"/mnt": {HostPath: "/hostpath", ReadOnly: true}}, + EnableNetwork: false, + CUDADeviceCount: 3, + }) + c.Check(cfg.WorkingDir, Equals, "/WorkingDir") + c.Check(cfg.Env, DeepEquals, []string{"FOO=bar"}) + c.Check(hostCfg.NetworkMode, Equals, dockercontainer.NetworkMode("none")) + c.Check(hostCfg.Resources.NanoCPUs, Equals, int64(4000000000)) + c.Check(hostCfg.Resources.Memory, Equals, int64(123123123)) + c.Check(hostCfg.Resources.MemorySwap, Equals, int64(123123123)) + c.Check(hostCfg.Resources.KernelMemory, Equals, int64(123123123)) + c.Check(hostCfg.Resources.DeviceRequests, DeepEquals, []dockercontainer.DeviceRequest{{ + Driver: "nvidia", + Count: 3, + Capabilities: [][]string{{"gpu", "nvidia", "compute"}}, + }}) +}