~wallyworld/juju-core/fast-lxc-everywhere

« back to all changes in this revision

Viewing changes to provider/local/environ_test.go

  • Committer: Tarmac
  • Author(s): Ian Booth
  • Date: 2014-04-24 12:33:19 UTC
  • mfrom: (2664.1.4 constraints-vocab)
  • Revision ID: tarmac-20140424123319-iifvboa1kjuprj7l
[r=wallyworld] Support constraints vocabs

Add support to constraints validation for
vocabs for each attribute. eg arch and
instance-type can only have well defined
values for each provider. The vocab check
is part of constraints validation.

https://codereview.appspot.com/96730043/

Show diffs side-by-side

added added

removed removed

Lines of Context:
313
313
        ctx := coretesting.Context(c)
314
314
        env, err := local.Provider.Prepare(ctx, minimalConfig(c))
315
315
        c.Assert(err, gc.IsNil)
316
 
        validator := env.ConstraintsValidator()
317
 
        cons := constraints.MustParse("arch=amd64 instance-type=foo tags=bar cpu-power=10 cpu-cores=2")
 
316
        validator, err := env.ConstraintsValidator()
 
317
        c.Assert(err, gc.IsNil)
 
318
        hostArch := arch.HostArch()
 
319
        cons := constraints.MustParse(fmt.Sprintf("arch=%s instance-type=foo tags=bar cpu-power=10 cpu-cores=2", hostArch))
318
320
        unsupported, err := validator.Validate(cons)
319
321
        c.Assert(err, gc.IsNil)
320
322
        c.Assert(unsupported, gc.DeepEquals, []string{"cpu-cores", "cpu-power", "instance-type", "tags"})
321
323
}
 
324
 
 
325
func (s *localJujuTestSuite) TestConstraintsValidatorVocab(c *gc.C) {
 
326
        env := s.Prepare(c)
 
327
        validator, err := env.ConstraintsValidator()
 
328
        c.Assert(err, gc.IsNil)
 
329
 
 
330
        hostArch := arch.HostArch()
 
331
        var invalidArch string
 
332
        for _, a := range arch.AllSupportedArches {
 
333
                if a != hostArch {
 
334
                        invalidArch = a
 
335
                        break
 
336
                }
 
337
        }
 
338
        cons := constraints.MustParse(fmt.Sprintf("arch=%s", invalidArch))
 
339
        _, err = validator.Validate(cons)
 
340
        c.Assert(err, gc.ErrorMatches, "invalid constraint value: arch="+invalidArch+"\nvalid values are:.*")
 
341
}