[ARVADOS] updated: 2.1.0-1718-g58ea9370f

Git user git at public.arvados.org
Mon Dec 13 19:24:12 UTC 2021


Summary of changes:
 lib/crunchrun/docker.go      |  6 +++++-
 lib/crunchrun/docker_test.go | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletion(-)

       via  58ea9370fa7b38382dfa9eea4c42a616e0a699f3 (commit)
      from  87a18ef2c05487c4330e6fb6ce6c7934f6bea5a6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 58ea9370fa7b38382dfa9eea4c42a616e0a699f3
Author: Tom Clegg <tom at curii.com>
Date:   Mon Dec 13 14:23:53 2021 -0500

    12630: Test docker container config setup.
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at curii.com>

diff --git a/lib/crunchrun/docker.go b/lib/crunchrun/docker.go
index c64ff83da..ab00273ef 100644
--- a/lib/crunchrun/docker.go
+++ b/lib/crunchrun/docker.go
@@ -71,7 +71,7 @@ func (e *dockerExecutor) LoadImage(imageID string, imageTarballPath string, cont
 	return nil
 }
 
-func (e *dockerExecutor) Create(spec containerSpec) error {
+func (e *dockerExecutor) config(spec containerSpec) (dockercontainer.Config, dockercontainer.HostConfig) {
 	e.logf("Creating Docker container")
 	cfg := dockercontainer.Config{
 		Image:        spec.Image,
@@ -123,7 +123,11 @@ func (e *dockerExecutor) Create(spec containerSpec) error {
 	if spec.EnableNetwork {
 		hostCfg.NetworkMode = dockercontainer.NetworkMode(spec.NetworkMode)
 	}
+	return cfg, hostCfg
+}
 
+func (e *dockerExecutor) Create(spec containerSpec) error {
+	cfg, hostCfg := e.config(spec)
 	created, err := e.dockerclient.ContainerCreate(context.TODO(), &cfg, &hostCfg, nil, e.containerUUID)
 	if err != nil {
 		return fmt.Errorf("While creating container: %v", err)
diff --git a/lib/crunchrun/docker_test.go b/lib/crunchrun/docker_test.go
index 28eb59546..9a1573193 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"}},
+	}})
+}

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list