X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dfb9598282b677ead60f91c14f5e96405735d42f..ac39afed6cd3de1704d75aecdbc46544b02f02b2:/lib/dispatchcloud/container/queue_test.go diff --git a/lib/dispatchcloud/container/queue_test.go b/lib/dispatchcloud/container/queue_test.go index bb8226118c..928c6dd8c8 100644 --- a/lib/dispatchcloud/container/queue_test.go +++ b/lib/dispatchcloud/container/queue_test.go @@ -40,8 +40,9 @@ func (suite *IntegrationSuite) TearDownTest(c *check.C) { } func (suite *IntegrationSuite) TestGetLockUnlockCancel(c *check.C) { - typeChooser := func(ctr *arvados.Container) (arvados.InstanceType, error) { - return arvados.InstanceType{Name: "testType"}, nil + typeChooser := func(ctr *arvados.Container) ([]arvados.InstanceType, error) { + c.Check(ctr.Mounts["/tmp"].Capacity, check.Equals, int64(24000000000)) + return []arvados.InstanceType{{Name: "testType"}}, nil } client := arvados.NewClientFromEnv() @@ -61,9 +62,12 @@ func (suite *IntegrationSuite) TestGetLockUnlockCancel(c *check.C) { var wg sync.WaitGroup for uuid, ent := range ents { c.Check(ent.Container.UUID, check.Equals, uuid) - c.Check(ent.InstanceType.Name, check.Equals, "testType") + c.Check(ent.InstanceTypes, check.HasLen, 1) + c.Check(ent.InstanceTypes[0].Name, check.Equals, "testType") c.Check(ent.Container.State, check.Equals, arvados.ContainerStateQueued) c.Check(ent.Container.Priority > 0, check.Equals, true) + // Mounts should be deleted to avoid wasting memory + c.Check(ent.Container.Mounts, check.IsNil) ctr, ok := cq.Get(uuid) c.Check(ok, check.Equals, true) @@ -105,8 +109,15 @@ func (suite *IntegrationSuite) TestGetLockUnlockCancel(c *check.C) { } func (suite *IntegrationSuite) TestCancelIfNoInstanceType(c *check.C) { - errorTypeChooser := func(ctr *arvados.Container) (arvados.InstanceType, error) { - return arvados.InstanceType{}, errors.New("no suitable instance type") + errorTypeChooser := func(ctr *arvados.Container) ([]arvados.InstanceType, error) { + // Make sure the relevant container fields are + // actually populated. + c.Check(ctr.ContainerImage, check.Equals, "test") + c.Check(ctr.RuntimeConstraints.VCPUs, check.Equals, 4) + c.Check(ctr.RuntimeConstraints.RAM, check.Equals, int64(12000000000)) + c.Check(ctr.Mounts["/tmp"].Capacity, check.Equals, int64(24000000000)) + c.Check(ctr.Mounts["/var/spool/cwl"].Capacity, check.Equals, int64(24000000000)) + return nil, errors.New("no suitable instance type") } client := arvados.NewClientFromEnv() @@ -134,10 +145,11 @@ func (suite *IntegrationSuite) TestCancelIfNoInstanceType(c *check.C) { c.Check(err, check.IsNil) c.Check(ctr.State, check.Equals, arvados.ContainerStateQueued) + go cq.Update() + // Wait for the cancel operation to take effect. Container // will have state=Cancelled or just disappear from the queue. suite.waitfor(c, time.Second, func() bool { - cq.Update() err := client.RequestAndDecode(&ctr, "GET", "arvados/v1/containers/"+arvadostest.QueuedContainerUUID, nil, nil) return err == nil && ctr.State == arvados.ContainerStateCancelled })