Merge branch '18094-update-uuid-endpoint-removal' into main. Closes #18094
[arvados.git] / lib / lsf / dispatch_test.go
index 25db95e10effb741ea7b48c8278d144c3874f728..96151fa8da9bc546c39a59479d06065da188cef0 100644 (file)
@@ -49,10 +49,11 @@ func (s *suite) SetUpTest(c *check.C) {
 }
 
 type lsfstub struct {
+       sudoUser  string
        errorRate float64
 }
 
-func (stub lsfstub) stubCommand(c *check.C) func(prog string, args ...string) *exec.Cmd {
+func (stub lsfstub) stubCommand(s *suite, c *check.C) func(prog string, args ...string) *exec.Cmd {
        mtx := sync.Mutex{}
        nextjobid := 100
        fakejobq := map[int]string{}
@@ -61,9 +62,20 @@ func (stub lsfstub) stubCommand(c *check.C) func(prog string, args ...string) *e
                if rand.Float64() < stub.errorRate {
                        return exec.Command("bash", "-c", "echo >&2 'stub random failure' && false")
                }
+               if stub.sudoUser != "" && len(args) > 3 &&
+                       prog == "sudo" &&
+                       args[0] == "-E" &&
+                       args[1] == "-u" &&
+                       args[2] == stub.sudoUser {
+                       prog, args = args[3], args[4:]
+               }
                switch prog {
                case "bsub":
-                       c.Assert(args, check.HasLen, 4)
+                       defaultArgs := s.disp.Cluster.Containers.LSF.BsubArgumentsList
+                       c.Assert(args, check.HasLen, 4+len(defaultArgs))
+                       c.Check(args[:len(defaultArgs)], check.DeepEquals, defaultArgs)
+                       args = args[len(defaultArgs):]
+
                        c.Check(args[0], check.Equals, "-J")
                        switch args[1] {
                        case arvadostest.LockedContainerUUID:
@@ -84,7 +96,7 @@ func (stub lsfstub) stubCommand(c *check.C) func(prog string, args ...string) *e
                        }
                        return exec.Command("echo", "submitted job")
                case "bjobs":
-                       c.Check(args, check.DeepEquals, []string{"-noheader", "-o", "jobid stat job_name:30"})
+                       c.Check(args, check.DeepEquals, []string{"-u", "all", "-noheader", "-o", "jobid stat job_name:30"})
                        out := ""
                        for jobid, uuid := range fakejobq {
                                out += fmt.Sprintf(`%d %s %s\n`, jobid, "RUN", uuid)
@@ -113,7 +125,10 @@ func (stub lsfstub) stubCommand(c *check.C) func(prog string, args ...string) *e
 }
 
 func (s *suite) TestSubmit(c *check.C) {
-       s.disp.lsfcli.stubCommand = lsfstub{errorRate: 0.1}.stubCommand(c)
+       s.disp.lsfcli.stubCommand = lsfstub{
+               errorRate: 0.1,
+               sudoUser:  s.disp.Cluster.Containers.LSF.BsubSudoUser,
+       }.stubCommand(s, c)
        s.disp.Start()
        deadline := time.Now().Add(20 * time.Second)
        for range time.NewTicker(time.Second).C {