+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: Apache-2.0
+
package main
import (
- "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
- . "gopkg.in/check.v1"
"io"
"io/ioutil"
"log"
"syscall"
"testing"
"time"
+
+ "git.curoverse.com/arvados.git/sdk/go/arvadosclient"
+ . "gopkg.in/check.v1"
)
// Gocheck boilerplate
func (t ArvTestClient) Update(resourceType string, uuid string, parameters arvadosclient.Dict, output interface{}) (err error) {
t.c.Check(resourceType, Equals, "job_tasks")
t.c.Check(parameters, DeepEquals, arvadosclient.Dict{"job_task": Task{
- output: t.manifest,
- success: t.success,
- progress: 1}})
+ Output: t.manifest,
+ Success: t.success,
+ Progress: 1}})
return nil
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"echo", "foo"}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"echo", "foo"}}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{
- TaskDef{command: []string{"echo", "bar"}},
- TaskDef{command: []string{"echo", "foo"}}}}},
- Task{parameters: TaskDef{
- command: []string{"echo", "foo"},
- stdout: "output.txt"},
- sequence: 1})
+ Job{ScriptParameters: Tasks{[]TaskDef{
+ {Command: []string{"echo", "bar"}},
+ {Command: []string{"echo", "foo"}}}}},
+ Task{Parameters: TaskDef{
+ Command: []string{"echo", "foo"},
+ Stdout: "output.txt"},
+ Sequence: 1})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"cat"},
- stdout: "output.txt",
- stdin: tmpfile.Name()}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"cat"},
+ Stdout: "output.txt",
+ Stdin: tmpfile.Name()}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"/bin/sh", "-c", "echo $BAR"},
- stdout: "output.txt",
- env: map[string]string{"BAR": "foo"}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"/bin/sh", "-c", "echo $BAR"},
+ Stdout: "output.txt",
+ Env: map[string]string{"BAR": "foo"}}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"foo\n",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"/bin/sh", "-c", "echo $BAR"},
- stdout: "output.txt",
- env: map[string]string{"BAR": "$(task.keep)"}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"/bin/sh", "-c", "echo $BAR"},
+ Stdout: "output.txt",
+ Env: map[string]string{"BAR": "$(task.keep)"}}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"/bin/sh", "-c", "echo $PATH"},
- stdout: "output.txt",
- env: map[string]string{"PATH": "foo"}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"/bin/sh", "-c", "echo $PATH"},
+ Stdout: "output.txt",
+ Env: map[string]string{"PATH": "foo"}}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
}
func (s *TestSuite) TestScheduleSubtask(c *C) {
api := SubtaskTestClient{c, []Task{
- Task{job_uuid: "zzzz-8i9sb-111111111111111",
- created_by_job_task_uuid: "zzzz-ot0gb-111111111111111",
- sequence: 1,
- parameters: TaskDef{
- command: []string{"echo", "bar"}}},
- Task{job_uuid: "zzzz-8i9sb-111111111111111",
- created_by_job_task_uuid: "zzzz-ot0gb-111111111111111",
- sequence: 1,
- parameters: TaskDef{
- command: []string{"echo", "foo"}}}},
+ {JobUUID: "zzzz-8i9sb-111111111111111",
+ CreatedByJobTaskUUID: "zzzz-ot0gb-111111111111111",
+ Sequence: 1,
+ Parameters: TaskDef{
+ Command: []string{"echo", "bar"}}},
+ {JobUUID: "zzzz-8i9sb-111111111111111",
+ CreatedByJobTaskUUID: "zzzz-ot0gb-111111111111111",
+ Sequence: 1,
+ Parameters: TaskDef{
+ Command: []string{"echo", "foo"}}}},
0}
tmpdir, _ := ioutil.TempDir("", "")
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{
- TaskDef{command: []string{"echo", "bar"}},
- TaskDef{command: []string{"echo", "foo"}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{
+ {Command: []string{"echo", "bar"}},
+ {Command: []string{"echo", "foo"}}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"/bin/sh", "-c", "exit 1"}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"/bin/sh", "-c", "exit 1"}}}}},
+ Task{Sequence: 0})
c.Check(err, FitsTypeOf, PermFail{})
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"/bin/sh", "-c", "exit 1"},
- successCodes: []int{0, 1}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"/bin/sh", "-c", "exit 1"},
+ SuccessCodes: []int{0, 1}}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"/bin/sh", "-c", "exit 0"},
- permanentFailCodes: []int{0, 1}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"/bin/sh", "-c", "exit 0"},
+ PermanentFailCodes: []int{0, 1}}}}},
+ Task{Sequence: 0})
c.Check(err, FitsTypeOf, PermFail{})
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"/bin/sh", "-c", "exit 1"},
- temporaryFailCodes: []int{1}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"/bin/sh", "-c", "exit 1"},
+ TemporaryFailCodes: []int{1}}}}},
+ Task{Sequence: 0})
c.Check(err, FitsTypeOf, TempFail{})
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"ls", "output.txt"},
- vwd: map[string]string{
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"ls", "output.txt"},
+ Vwd: map[string]string{
"output.txt": tmpfile.Name()}}}}},
- Task{sequence: 0})
+ Task{Sequence: 0})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
}
"zzzz-ot0gb-111111111111111",
tmpdir,
keepmount,
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"cat"},
- stdout: "output.txt",
- stdin: "$(task.keep)/file1.txt"}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"cat"},
+ Stdout: "output.txt",
+ Stdin: "$(task.keep)/file1.txt"}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
}
"zzzz-ot0gb-111111111111111",
tmpdir,
keepmount,
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"cat", "$(task.keep)/file1.txt"},
- stdout: "output.txt"}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"cat", "$(task.keep)/file1.txt"},
+ Stdout: "output.txt"}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
checkOutput(c, tmpdir)
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"sleep", "4"}}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"sleep", "4"}}}}},
+ Task{Sequence: 0})
c.Check(err, FitsTypeOf, PermFail{})
}
"zzzz-ot0gb-111111111111111",
tmpdir,
"",
- Job{script_parameters: Tasks{[]TaskDef{TaskDef{
- command: []string{"echo", "foo"},
- stdout: "s ub:dir/:e vi\nl"}}}},
- Task{sequence: 0})
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"echo", "foo"},
+ Stdout: "s ub:dir/:e vi\nl"}}}},
+ Task{Sequence: 0})
+ c.Check(err, IsNil)
+}
+
+func (s *TestSuite) TestKeepTmp(c *C) {
+ tmpdir, _ := ioutil.TempDir("", "")
+ defer func() {
+ os.RemoveAll(tmpdir)
+ }()
+
+ os.Setenv("TASK_KEEPMOUNT_TMP", tmpdir)
+ defer os.Setenv("TASK_KEEPMOUNT_TMP", "")
+
+ fn, err := os.Create(tmpdir + "/.arvados#collection")
+ fn.Write([]byte("{\"manifest_text\":\". unparsed 0:3:foo\\n\",\"uuid\":null}"))
+ defer fn.Close()
+
+ err = runner(ArvTestClient{c,
+ ". unparsed 0:3:foo\n", true},
+ KeepTestClient{},
+ "zzzz-8i9sb-111111111111111",
+ "zzzz-ot0gb-111111111111111",
+ tmpdir,
+ "",
+ Job{ScriptParameters: Tasks{[]TaskDef{{
+ Command: []string{"echo", "foo"},
+ KeepTmpOutput: true}}}},
+ Task{Sequence: 0})
c.Check(err, IsNil)
+
}