Added getImage() setImage() to the ThinContainerExecRunner interface
[arvados.git] / lib / crunchrun / crunchrun_test.go
index 02ad1d0e22ef6c607be698ebb3e08caba53f9aee..08f3a938dd6a913e96eb8da23713ef00f1d8ccf9 100644 (file)
@@ -74,7 +74,7 @@ type KeepTestClient struct {
 
 var hwManifest = ". 82ab40c24fc8df01798e57ba66795bb1+841216+Aa124ac75e5168396c73c0a18eda641a4f41791c0@569fa8c3 0:841216:9c31ee32b3d15268a0754e8edc74d4f815ee014b693bc5109058e431dd5caea7.tar\n"
 var hwPDH = "a45557269dcb65a6b78f9ac061c0850b+120"
-var hwImageId = "9c31ee32b3d15268a0754e8edc74d4f815ee014b693bc5109058e431dd5caea7"
+var hwImageID = "9c31ee32b3d15268a0754e8edc74d4f815ee014b693bc5109058e431dd5caea7"
 
 var otherManifest = ". 68a84f561b1d1708c6baff5e019a9ab3+46+Ae5d0af96944a3690becb1decdf60cc1c937f556d@5693216f 0:46:md5sum.txt\n"
 var otherPDH = "a3e8f74c6f101eae01fa08bfb4e49b3a+54"
@@ -207,7 +207,7 @@ func (t *TestDockerClient) ImageLoad(ctx context.Context, input io.Reader, quiet
        if err != nil {
                return dockertypes.ImageLoadResponse{}, err
        }
-       t.imageLoaded = hwImageId
+       t.imageLoaded = hwImageID
        return dockertypes.ImageLoadResponse{Body: ioutil.NopCloser(input)}, nil
 }
 
@@ -425,7 +425,7 @@ func (fw FileWrapper) Sync() error {
 }
 
 func (client *KeepTestClient) ManifestFileReader(m manifest.Manifest, filename string) (arvados.File, error) {
-       if filename == hwImageId+".tar" {
+       if filename == hwImageID+".tar" {
                rdr := ioutil.NopCloser(&bytes.Buffer{})
                client.Called = true
                return FileWrapper{rdr, 1321984}, nil
@@ -439,7 +439,7 @@ func (client *KeepTestClient) ManifestFileReader(m manifest.Manifest, filename s
 
 func (s *TestSuite) TestLoadImage(c *C) {
        cr, err := NewContainerRunner(s.client, &ArvTestClient{},
-               &KeepTestClient{}, s.docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+               &KeepTestClient{}, adapter(s.docker), "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
        c.Assert(err, IsNil)
 
        kc := &KeepTestClient{}
@@ -447,39 +447,39 @@ func (s *TestSuite) TestLoadImage(c *C) {
        cr.ContainerArvClient = &ArvTestClient{}
        cr.ContainerKeepClient = kc
 
-       _, err = cr.Docker.ImageRemove(nil, hwImageId, dockertypes.ImageRemoveOptions{})
+       _, err = cr.ContainerExecRunner.ImageRemove(nil, hwImageID, ImageRemoveOptions{})
        c.Check(err, IsNil)
 
-       _, _, err = cr.Docker.ImageInspectWithRaw(nil, hwImageId)
+       _, _, err = cr.ContainerExecRunner.ImageInspectWithRaw(nil, hwImageID)
        c.Check(err, NotNil)
 
        cr.Container.ContainerImage = hwPDH
 
        // (1) Test loading image from keep
        c.Check(kc.Called, Equals, false)
-       c.Check(cr.ContainerConfig.Image, Equals, "")
+       c.Check(cr.ContainerExecRunner.GetImage(), Equals, "")
 
        err = cr.LoadImage()
 
        c.Check(err, IsNil)
        defer func() {
-               cr.Docker.ImageRemove(nil, hwImageId, dockertypes.ImageRemoveOptions{})
+               cr.ContainerExecRunner.ImageRemove(nil, hwImageID, ImageRemoveOptions{})
        }()
 
        c.Check(kc.Called, Equals, true)
-       c.Check(cr.ContainerConfig.Image, Equals, hwImageId)
+       c.Check(cr.ContainerExecRunner.GetImage(), Equals, hwImageID)
 
-       _, _, err = cr.Docker.ImageInspectWithRaw(nil, hwImageId)
+       _, _, err = cr.ContainerExecRunner.ImageInspectWithRaw(nil, hwImageID)
        c.Check(err, IsNil)
 
        // (2) Test using image that's already loaded
        kc.Called = false
-       cr.ContainerConfig.Image = ""
+       cr.ContainerExecRunner.SetImage("")
 
        err = cr.LoadImage()
        c.Check(err, IsNil)
        c.Check(kc.Called, Equals, false)
-       c.Check(cr.ContainerConfig.Image, Equals, hwImageId)
+       c.Check(cr.ContainerExecRunner.GetImage(), Equals, hwImageID)
 
 }
 
@@ -574,7 +574,7 @@ func (s *TestSuite) TestLoadImageArvError(c *C) {
 func (s *TestSuite) TestLoadImageKeepError(c *C) {
        // (2) Keep error
        kc := &KeepErrorTestClient{}
-       cr, err := NewContainerRunner(s.client, &ArvTestClient{}, kc, s.docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+       cr, err := NewContainerRunner(s.client, &ArvTestClient{}, kc, adapter(s.docker), "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
        c.Assert(err, IsNil)
 
        cr.ContainerArvClient = &ArvTestClient{}
@@ -604,7 +604,7 @@ func (s *TestSuite) TestLoadImageCollectionError(c *C) {
 func (s *TestSuite) TestLoadImageKeepReadError(c *C) {
        // (4) Collection doesn't contain image
        kc := &KeepReadErrorTestClient{}
-       cr, err := NewContainerRunner(s.client, &ArvTestClient{}, kc, s.docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+       cr, err := NewContainerRunner(s.client, &ArvTestClient{}, kc, adapter(s.docker), "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
        c.Assert(err, IsNil)
        cr.Container.ContainerImage = hwPDH
        cr.ContainerArvClient = &ArvTestClient{}
@@ -653,7 +653,7 @@ func (s *TestSuite) TestRunContainer(c *C) {
        }
        kc := &KeepTestClient{}
        defer kc.Close()
-       cr, err := NewContainerRunner(s.client, &ArvTestClient{}, kc, s.docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+       cr, err := NewContainerRunner(s.client, &ArvTestClient{}, kc, adapter(s.docker), "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
        c.Assert(err, IsNil)
 
        cr.ContainerArvClient = &ArvTestClient{}
@@ -771,13 +771,13 @@ func (s *TestSuite) fullRunHelper(c *C, record string, extraMounts []string, exi
 
        s.docker.exitCode = exitCode
        s.docker.fn = fn
-       s.docker.ImageRemove(nil, hwImageId, dockertypes.ImageRemoveOptions{})
+       s.docker.ImageRemove(nil, hwImageID, dockertypes.ImageRemoveOptions{})
 
        api = &ArvTestClient{Container: rec}
        s.docker.api = api
        kc := &KeepTestClient{}
        defer kc.Close()
-       cr, err = NewContainerRunner(s.client, api, kc, s.docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+       cr, err = NewContainerRunner(s.client, api, kc, adapter(s.docker), "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
        c.Assert(err, IsNil)
        s.runner = cr
        cr.statInterval = 100 * time.Millisecond
@@ -1131,12 +1131,12 @@ func (s *TestSuite) testStopContainer(c *C, setup func(cr *ContainerRunner)) {
                t.logWriter.Write(dockerLog(1, "foo\n"))
                t.logWriter.Close()
        }
-       s.docker.ImageRemove(nil, hwImageId, dockertypes.ImageRemoveOptions{})
+       s.docker.ImageRemove(nil, hwImageID, dockertypes.ImageRemoveOptions{})
 
        api := &ArvTestClient{Container: rec}
        kc := &KeepTestClient{}
        defer kc.Close()
-       cr, err := NewContainerRunner(s.client, api, kc, s.docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+       cr, err := NewContainerRunner(s.client, api, kc, adapter(s.docker), "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
        c.Assert(err, IsNil)
        cr.RunArvMount = func([]string, string) (*exec.Cmd, error) { return nil, nil }
        cr.MkArvClient = func(token string) (IArvadosClient, IKeepClient, *arvados.Client, error) {
@@ -1291,9 +1291,7 @@ func (s *TestSuite) TestSetupMounts(c *C) {
                cr.Container.Mounts = make(map[string]arvados.Mount)
                cr.Container.Mounts["/tmp"] = arvados.Mount{Kind: "tmp"}
                cr.Container.OutputPath = "/tmp"
-
-               apiflag := true
-               cr.Container.RuntimeConstraints.API = &apiflag
+               cr.Container.RuntimeConstraints.API = true
 
                err := cr.SetupMounts()
                c.Check(err, IsNil)
@@ -1305,7 +1303,7 @@ func (s *TestSuite) TestSetupMounts(c *C) {
                cr.CleanupDirs()
                checkEmpty()
 
-               apiflag = false
+               cr.Container.RuntimeConstraints.API = false
        }
 
        {
@@ -1618,12 +1616,12 @@ func (s *TestSuite) stdoutErrorRunHelper(c *C, record string, fn func(t *TestDoc
        c.Check(err, IsNil)
 
        s.docker.fn = fn
-       s.docker.ImageRemove(nil, hwImageId, dockertypes.ImageRemoveOptions{})
+       s.docker.ImageRemove(nil, hwImageID, dockertypes.ImageRemoveOptions{})
 
        api = &ArvTestClient{Container: rec}
        kc := &KeepTestClient{}
        defer kc.Close()
-       cr, err = NewContainerRunner(s.client, api, kc, s.docker, "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
+       cr, err = NewContainerRunner(s.client, api, kc, adapter(s.docker), "zzzzz-zzzzz-zzzzzzzzzzzzzzz")
        c.Assert(err, IsNil)
        am := &ArvMountCmdLine{}
        cr.RunArvMount = am.ArvMountTest