X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2924f222d9efdb1b8776225d2d51bc8771d7b077..HEAD:/lib/lsf/dispatch_test.go diff --git a/lib/lsf/dispatch_test.go b/lib/lsf/dispatch_test.go index cd41071d2c..e1e0bcae31 100644 --- a/lib/lsf/dispatch_test.go +++ b/lib/lsf/dispatch_test.go @@ -34,6 +34,7 @@ type suite struct { crTooBig arvados.ContainerRequest crPending arvados.ContainerRequest crCUDARequest arvados.ContainerRequest + crMaxRunTime arvados.ContainerRequest } func (s *suite) TearDownTest(c *check.C) { @@ -116,6 +117,25 @@ func (s *suite) SetUpTest(c *check.C) { }) c.Assert(err, check.IsNil) + err = arvados.NewClientFromEnv().RequestAndDecode(&s.crMaxRunTime, "POST", "arvados/v1/container_requests", nil, map[string]interface{}{ + "container_request": map[string]interface{}{ + "runtime_constraints": arvados.RuntimeConstraints{ + RAM: 1000000, + VCPUs: 1, + }, + "scheduling_parameters": arvados.SchedulingParameters{ + MaxRunTime: 124, + }, + "container_image": arvadostest.DockerImage112PDH, + "command": []string{"sleep", "123"}, + "mounts": map[string]arvados.Mount{"/mnt/out": {Kind: "tmp", Capacity: 1000}}, + "output_path": "/mnt/out", + "state": arvados.ContainerRequestStateCommitted, + "priority": 1, + "container_count_max": 1, + }, + }) + c.Assert(err, check.IsNil) } type lsfstub struct { @@ -141,12 +161,7 @@ func (stub lsfstub) stubCommand(s *suite, c *check.C) func(prog string, args ... } switch prog { case "bsub": - defaultArgs := s.disp.Cluster.Containers.LSF.BsubArgumentsList - if args[5] == s.crCUDARequest.ContainerUUID { - c.Assert(len(args), check.Equals, len(defaultArgs)+len(s.disp.Cluster.Containers.LSF.BsubCUDAArguments)) - } else { - c.Assert(len(args), check.Equals, len(defaultArgs)) - } + c.Assert(len(args) > 5, check.Equals, true) // %%J must have been rewritten to %J c.Check(args[1], check.Equals, "/tmp/crunch-run.%J.out") args = args[4:] @@ -204,6 +219,21 @@ func (stub lsfstub) stubCommand(s *suite, c *check.C) func(prog string, args ... fakejobq[nextjobid] = args[1] nextjobid++ mtx.Unlock() + case s.crMaxRunTime.ContainerUUID: + c.Check(args, check.DeepEquals, []string{ + "-J", s.crMaxRunTime.ContainerUUID, + "-n", "1", + "-D", "257MB", + "-R", "rusage[mem=257MB:tmp=2304MB] span[hosts=1]", + "-R", "select[mem>=257MB]", + "-R", "select[tmp>=2304MB]", + "-R", "select[ncpus>=1]", + "-We", "8", // 124s + 5m overhead + roundup = 8m + }) + mtx.Lock() + fakejobq[nextjobid] = args[1] + nextjobid++ + mtx.Unlock() default: c.Errorf("unexpected uuid passed to bsub: args %q", args) return exec.Command("false")