projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
13473: Drop slurm resource constraints when using instancetype=X.
[arvados.git]
/
services
/
crunch-dispatch-slurm
/
crunch-dispatch-slurm_test.go
diff --git
a/services/crunch-dispatch-slurm/crunch-dispatch-slurm_test.go
b/services/crunch-dispatch-slurm/crunch-dispatch-slurm_test.go
index 371f7db31ec20ababf00100d54355a1052e78bc1..85617cf1154c2f1e32c6cf5edd6f20dd1538762a 100644
(file)
--- a/
services/crunch-dispatch-slurm/crunch-dispatch-slurm_test.go
+++ b/
services/crunch-dispatch-slurm/crunch-dispatch-slurm_test.go
@@
-55,10
+55,11
@@
func (s *IntegrationSuite) TearDownTest(c *C) {
}
type slurmFake struct {
}
type slurmFake struct {
- didBatch [][]string
- didCancel []string
- didRenice [][]string
- queue string
+ didBatch [][]string
+ didCancel []string
+ didRelease []string
+ didRenice [][]string
+ queue string
// If non-nil, run this func during the 2nd+ call to Cancel()
onCancel func()
// Error returned by Batch()
// If non-nil, run this func during the 2nd+ call to Cancel()
onCancel func()
// Error returned by Batch()
@@
-74,6
+75,11
@@
func (sf *slurmFake) QueueCommand(args []string) *exec.Cmd {
return exec.Command("echo", sf.queue)
}
return exec.Command("echo", sf.queue)
}
+func (sf *slurmFake) Release(name string) error {
+ sf.didRelease = append(sf.didRelease, name)
+ return nil
+}
+
func (sf *slurmFake) Renice(name string, nice int64) error {
sf.didRenice = append(sf.didRenice, []string{name, fmt.Sprintf("%d", nice)})
return nil
func (sf *slurmFake) Renice(name string, nice int64) error {
sf.didRenice = append(sf.didRenice, []string{name, fmt.Sprintf("%d", nice)})
return nil
@@
-115,7
+121,7
@@
func (s *IntegrationSuite) integrationTest(c *C,
s.disp.Dispatcher = &dispatch.Dispatcher{
Arv: arv,
s.disp.Dispatcher = &dispatch.Dispatcher{
Arv: arv,
- PollPeriod: time.
Duration(1) * time.
Second,
+ PollPeriod: time.Second,
RunContainer: func(disp *dispatch.Dispatcher, ctr arvados.Container, status <-chan arvados.Container) {
go func() {
runContainer(disp, ctr)
RunContainer: func(disp *dispatch.Dispatcher, ctr arvados.Container, status <-chan arvados.Container) {
go func() {
runContainer(disp, ctr)
@@
-151,7
+157,7
@@
func (s *IntegrationSuite) integrationTest(c *C,
}
func (s *IntegrationSuite) TestNormal(c *C) {
}
func (s *IntegrationSuite) TestNormal(c *C) {
- s.slurm = slurmFake{queue: "zzzzz-dz642-queuedcontainer 10000 100\n"}
+ s.slurm = slurmFake{queue: "zzzzz-dz642-queuedcontainer 10000 100
PENDING Resources
\n"}
container := s.integrationTest(c,
nil,
func(dispatcher *dispatch.Dispatcher, container arvados.Container) {
container := s.integrationTest(c,
nil,
func(dispatcher *dispatch.Dispatcher, container arvados.Container) {
@@
-163,7
+169,7
@@
func (s *IntegrationSuite) TestNormal(c *C) {
}
func (s *IntegrationSuite) TestCancel(c *C) {
}
func (s *IntegrationSuite) TestCancel(c *C) {
- s.slurm = slurmFake{queue: "zzzzz-dz642-queuedcontainer 10000 100\n"}
+ s.slurm = slurmFake{queue: "zzzzz-dz642-queuedcontainer 10000 100
PENDING Resources
\n"}
readyToCancel := make(chan bool)
s.slurm.onCancel = func() { <-readyToCancel }
container := s.integrationTest(c,
readyToCancel := make(chan bool)
s.slurm.onCancel = func() { <-readyToCancel }
container := s.integrationTest(c,
@@
-187,10
+193,11
@@
func (s *IntegrationSuite) TestMissingFromSqueue(c *C) {
container := s.integrationTest(c,
[][]string{{
fmt.Sprintf("--job-name=%s", "zzzzz-dz642-queuedcontainer"),
container := s.integrationTest(c,
[][]string{{
fmt.Sprintf("--job-name=%s", "zzzzz-dz642-queuedcontainer"),
+ fmt.Sprintf("--nice=%d", 10000),
fmt.Sprintf("--mem=%d", 11445),
fmt.Sprintf("--cpus-per-task=%d", 4),
fmt.Sprintf("--tmp=%d", 45777),
fmt.Sprintf("--mem=%d", 11445),
fmt.Sprintf("--cpus-per-task=%d", 4),
fmt.Sprintf("--tmp=%d", 45777),
-
fmt.Sprintf("--nice=%d", 10000)
}},
+ }},
func(dispatcher *dispatch.Dispatcher, container arvados.Container) {
dispatcher.UpdateState(container.UUID, dispatch.Running)
time.Sleep(3 * time.Second)
func(dispatcher *dispatch.Dispatcher, container arvados.Container) {
dispatcher.UpdateState(container.UUID, dispatch.Running)
time.Sleep(3 * time.Second)
@@
-202,7
+209,7
@@
func (s *IntegrationSuite) TestMissingFromSqueue(c *C) {
func (s *IntegrationSuite) TestSbatchFail(c *C) {
s.slurm = slurmFake{errBatch: errors.New("something terrible happened")}
container := s.integrationTest(c,
func (s *IntegrationSuite) TestSbatchFail(c *C) {
s.slurm = slurmFake{errBatch: errors.New("something terrible happened")}
container := s.integrationTest(c,
- [][]string{{"--job-name=zzzzz-dz642-queuedcontainer", "--
mem=11445", "--cpus-per-task=4", "--tmp=45777", "--nice=10000
"}},
+ [][]string{{"--job-name=zzzzz-dz642-queuedcontainer", "--
nice=10000", "--mem=11445", "--cpus-per-task=4", "--tmp=45777
"}},
func(dispatcher *dispatch.Dispatcher, container arvados.Container) {
dispatcher.UpdateState(container.UUID, dispatch.Running)
dispatcher.UpdateState(container.UUID, dispatch.Complete)
func(dispatcher *dispatch.Dispatcher, container arvados.Container) {
dispatcher.UpdateState(container.UUID, dispatch.Running)
dispatcher.UpdateState(container.UUID, dispatch.Complete)
@@
-217,6
+224,7
@@
func (s *IntegrationSuite) TestSbatchFail(c *C) {
{"object_uuid", "=", container.UUID},
{"event_type", "=", "dispatch"},
}}, &ll)
{"object_uuid", "=", container.UUID},
{"event_type", "=", "dispatch"},
}}, &ll)
+ c.Assert(err, IsNil)
c.Assert(len(ll.Items), Equals, 1)
}
c.Assert(len(ll.Items), Equals, 1)
}
@@
-260,10
+268,10
@@
func (s *StubbedSuite) testWithServerStub(c *C, apiStubResponses map[string]arva
ctx, cancel := context.WithCancel(context.Background())
dispatcher := dispatch.Dispatcher{
Arv: arv,
ctx, cancel := context.WithCancel(context.Background())
dispatcher := dispatch.Dispatcher{
Arv: arv,
- PollPeriod: time.
Duration(1) * time.
Second,
+ PollPeriod: time.Second,
RunContainer: func(disp *dispatch.Dispatcher, ctr arvados.Container, status <-chan arvados.Container) {
go func() {
RunContainer: func(disp *dispatch.Dispatcher, ctr arvados.Container, status <-chan arvados.Container) {
go func() {
- time.Sleep(
1 *
time.Second)
+ time.Sleep(time.Second)
disp.UpdateState(ctr.UUID, dispatch.Running)
disp.UpdateState(ctr.UUID, dispatch.Complete)
}()
disp.UpdateState(ctr.UUID, dispatch.Running)
disp.UpdateState(ctr.UUID, dispatch.Complete)
}()
@@
-346,7
+354,7
@@
func (s *StubbedSuite) TestSbatchArgs(c *C) {
s.disp.SbatchArguments = defaults
args, err := s.disp.sbatchArgs(container)
s.disp.SbatchArguments = defaults
args, err := s.disp.sbatchArgs(container)
- c.Check(args, DeepEquals, append(defaults, "--job-name=123", "--
mem=239", "--cpus-per-task=2", "--tmp=0", "--nice=1000
0"))
+ c.Check(args, DeepEquals, append(defaults, "--job-name=123", "--
nice=10000", "--mem=239", "--cpus-per-task=2", "--tmp=
0"))
c.Check(err, IsNil)
}
}
c.Check(err, IsNil)
}
}
@@
-376,7
+384,7
@@
func (s *StubbedSuite) TestSbatchInstanceTypeConstraint(c *C) {
// No node types configured => no slurm constraint
{
types: nil,
// No node types configured => no slurm constraint
{
types: nil,
- sbatchArgs:
nil
,
+ sbatchArgs:
[]string{"--mem=239", "--cpus-per-task=2", "--tmp=0"}
,
},
// No node type is big enough => error
{
},
// No node type is big enough => error
{
@@
-392,7
+400,7
@@
func (s *StubbedSuite) TestSbatchInstanceTypeConstraint(c *C) {
args, err := s.disp.sbatchArgs(container)
c.Check(err, Equals, trial.err)
if trial.err == nil {
args, err := s.disp.sbatchArgs(container)
c.Check(err, Equals, trial.err)
if trial.err == nil {
- c.Check(args, DeepEquals, append([]string{"--job-name=123", "--
mem=239", "--cpus-per-task=2", "--tmp=0", "--
nice=10000"}, trial.sbatchArgs...))
+ c.Check(args, DeepEquals, append([]string{"--job-name=123", "--nice=10000"}, trial.sbatchArgs...))
}
}
}
}
}
}
@@
-407,7
+415,8
@@
func (s *StubbedSuite) TestSbatchPartition(c *C) {
args, err := s.disp.sbatchArgs(container)
c.Check(args, DeepEquals, []string{
args, err := s.disp.sbatchArgs(container)
c.Check(args, DeepEquals, []string{
- "--job-name=123", "--mem=239", "--cpus-per-task=1", "--tmp=0", "--nice=10000",
+ "--job-name=123", "--nice=10000",
+ "--mem=239", "--cpus-per-task=1", "--tmp=0",
"--partition=blurb,b2",
})
c.Check(err, IsNil)
"--partition=blurb,b2",
})
c.Check(err, IsNil)