X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a08e3bb86caa758df7d33a3df3f6b8c333e47838..15eda5715c312d12ec24c24db80448bee90e38ea:/services/crunch-run/upload_test.go diff --git a/services/crunch-run/upload_test.go b/services/crunch-run/upload_test.go index 96ea2b1190..86dab41a64 100644 --- a/services/crunch-run/upload_test.go +++ b/services/crunch-run/upload_test.go @@ -5,13 +5,13 @@ package main import ( + . "gopkg.in/check.v1" "io/ioutil" "log" "os" + "path/filepath" "sync" "syscall" - - . "gopkg.in/check.v1" ) type UploadTestSuite struct{} @@ -19,6 +19,25 @@ type UploadTestSuite struct{} // Gocheck boilerplate var _ = Suite(&UploadTestSuite{}) +func writeTree(cw *CollectionWriter, root string, status *log.Logger) (mt string, err error) { + walkUpload := cw.BeginUpload(root, status) + + err = filepath.Walk(root, func(path string, info os.FileInfo, err error) error { + info, _ = os.Stat(path) + if info.Mode().IsRegular() { + return walkUpload.UploadFile(path, path) + } + return nil + }) + + cw.EndUpload(walkUpload) + if err != nil { + return "", err + } + mt, err = cw.ManifestText() + return +} + func (s *TestSuite) TestSimpleUpload(c *C) { tmpdir, _ := ioutil.TempDir("", "") defer func() { @@ -28,12 +47,12 @@ func (s *TestSuite) TestSimpleUpload(c *C) { ioutil.WriteFile(tmpdir+"/"+"file1.txt", []byte("foo"), 0600) cw := CollectionWriter{0, &KeepTestClient{}, nil, nil, sync.Mutex{}} - str, err := cw.WriteTree(tmpdir, log.New(os.Stdout, "", 0)) + str, err := writeTree(&cw, tmpdir, log.New(os.Stdout, "", 0)) c.Check(err, IsNil) c.Check(str, Equals, ". acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:file1.txt\n") } -func (s *TestSuite) TestSimpleUploadThreefiles(c *C) { +func (s *TestSuite) TestUploadThreeFiles(c *C) { tmpdir, _ := ioutil.TempDir("", "") defer func() { os.RemoveAll(tmpdir) @@ -49,7 +68,7 @@ func (s *TestSuite) TestSimpleUploadThreefiles(c *C) { } cw := CollectionWriter{0, &KeepTestClient{}, nil, nil, sync.Mutex{}} - str, err := cw.WriteTree(tmpdir, log.New(os.Stdout, "", 0)) + str, err := writeTree(&cw, tmpdir, log.New(os.Stdout, "", 0)) c.Check(err, IsNil) c.Check(str, Equals, ". aa65a413921163458c52fea478d5d3ee+9 0:3:file1.txt 3:3:file2.txt 6:3:file3.txt\n") @@ -67,7 +86,7 @@ func (s *TestSuite) TestSimpleUploadSubdir(c *C) { ioutil.WriteFile(tmpdir+"/subdir/file2.txt", []byte("bar"), 0600) cw := CollectionWriter{0, &KeepTestClient{}, nil, nil, sync.Mutex{}} - str, err := cw.WriteTree(tmpdir, log.New(os.Stdout, "", 0)) + str, err := writeTree(&cw, tmpdir, log.New(os.Stdout, "", 0)) c.Check(err, IsNil) @@ -101,7 +120,7 @@ func (s *TestSuite) TestSimpleUploadLarge(c *C) { ioutil.WriteFile(tmpdir+"/"+"file2.txt", []byte("bar"), 0600) cw := CollectionWriter{0, &KeepTestClient{}, nil, nil, sync.Mutex{}} - str, err := cw.WriteTree(tmpdir, log.New(os.Stdout, "", 0)) + str, err := writeTree(&cw, tmpdir, log.New(os.Stdout, "", 0)) c.Check(err, IsNil) c.Check(str, Equals, ". 00ecf01e0d93385115c9f8bed757425d+67108864 485cd630387b6b1846fe429f261ea05f+1048514 0:68157375:file1.txt 68157375:3:file2.txt\n") @@ -118,7 +137,7 @@ func (s *TestSuite) TestUploadEmptySubdir(c *C) { ioutil.WriteFile(tmpdir+"/"+"file1.txt", []byte("foo"), 0600) cw := CollectionWriter{0, &KeepTestClient{}, nil, nil, sync.Mutex{}} - str, err := cw.WriteTree(tmpdir, log.New(os.Stdout, "", 0)) + str, err := writeTree(&cw, tmpdir, log.New(os.Stdout, "", 0)) c.Check(err, IsNil) c.Check(str, Equals, `. acbd18db4cc2f85cedef654fccc4a4d8+3 0:3:file1.txt @@ -134,7 +153,7 @@ func (s *TestSuite) TestUploadEmptyFile(c *C) { ioutil.WriteFile(tmpdir+"/"+"file1.txt", []byte(""), 0600) cw := CollectionWriter{0, &KeepTestClient{}, nil, nil, sync.Mutex{}} - str, err := cw.WriteTree(tmpdir, log.New(os.Stdout, "", 0)) + str, err := writeTree(&cw, tmpdir, log.New(os.Stdout, "", 0)) c.Check(err, IsNil) c.Check(str, Equals, `. d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1.txt @@ -150,7 +169,7 @@ func (s *TestSuite) TestUploadError(c *C) { ioutil.WriteFile(tmpdir+"/"+"file1.txt", []byte("foo"), 0600) cw := CollectionWriter{0, &KeepErrorTestClient{}, nil, nil, sync.Mutex{}} - str, err := cw.WriteTree(tmpdir, log.New(os.Stdout, "", 0)) + str, err := writeTree(&cw, tmpdir, log.New(os.Stdout, "", 0)) c.Check(err, NotNil) c.Check(str, Equals, "")