19281: Test embedded hello-world image with docker and singularity.
[arvados.git] / lib / crunchrun / executor_test.go
index fc9f5b36e7c87671132d87d4c98f64cdc29f0a2f..e757f579fe957eff333892c2fc7a12de9fff82e2 100644 (file)
@@ -15,37 +15,13 @@ import (
        "strings"
        "time"
 
+       "git.arvados.org/arvados.git/lib/diagnostics"
        "git.arvados.org/arvados.git/sdk/go/arvados"
+       "git.arvados.org/arvados.git/sdk/go/arvadostest"
        "golang.org/x/net/context"
        . "gopkg.in/check.v1"
 )
 
-func busyboxDockerImage(c *C) string {
-       fnm := "busybox_uclibc.tar"
-       cachedir := c.MkDir()
-       cachefile := cachedir + "/" + fnm
-       if _, err := os.Stat(cachefile); err == nil {
-               return cachefile
-       }
-
-       f, err := ioutil.TempFile(cachedir, "")
-       c.Assert(err, IsNil)
-       defer f.Close()
-       defer os.Remove(f.Name())
-
-       resp, err := http.Get("https://cache.arvados.org/" + fnm)
-       c.Assert(err, IsNil)
-       defer resp.Body.Close()
-       _, err = io.Copy(f, resp.Body)
-       c.Assert(err, IsNil)
-       err = f.Close()
-       c.Assert(err, IsNil)
-       err = os.Rename(f.Name(), cachefile)
-       c.Assert(err, IsNil)
-
-       return cachefile
-}
-
 type nopWriteCloser struct{ io.Writer }
 
 func (nopWriteCloser) Close() error { return nil }
@@ -73,7 +49,7 @@ func (s *executorSuite) SetUpTest(c *C) {
                Stdout:      nopWriteCloser{&s.stdout},
                Stderr:      nopWriteCloser{&s.stderr},
        }
-       err := s.executor.LoadImage("", busyboxDockerImage(c), arvados.Container{}, "", nil)
+       err := s.executor.LoadImage("", arvadostest.BusyboxDockerImage(c), arvados.Container{}, "", nil)
        c.Assert(err, IsNil)
 }
 
@@ -89,6 +65,21 @@ func (s *executorSuite) TestExecTrivialContainer(c *C) {
        c.Check(s.stderr.String(), Equals, "")
 }
 
+func (s *executorSuite) TestDiagnosticsImage(c *C) {
+       s.newExecutor(c)
+       imagefile := c.MkDir() + "/hello-world.tar"
+       err := ioutil.WriteFile(imagefile, diagnostics.HelloWorldDockerImage, 0777)
+       c.Assert(err, IsNil)
+       err = s.executor.LoadImage("", imagefile, arvados.Container{}, "", nil)
+       c.Assert(err, IsNil)
+
+       c.Logf("Using container runtime: %s", s.executor.Runtime())
+       s.spec.Image = "hello-world"
+       s.spec.Command = []string{"/hello"}
+       s.checkRun(c, 0)
+       c.Check(s.stdout.String(), Matches, `(?ms)\nHello from Docker!\n.*`)
+}
+
 func (s *executorSuite) TestExitStatus(c *C) {
        s.spec.Command = []string{"false"}
        s.checkRun(c, 1)