github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/caas/kubernetes/provider/precheck_test.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package provider_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/core/constraints" 11 "github.com/juju/juju/environs" 12 "github.com/juju/juju/environs/context" 13 ) 14 15 type PrecheckSuite struct { 16 BaseSuite 17 18 callCtx context.ProviderCallContext 19 } 20 21 var _ = gc.Suite(&PrecheckSuite{}) 22 23 func (s *PrecheckSuite) SetUpTest(c *gc.C) { 24 s.BaseSuite.SetUpTest(c) 25 s.callCtx = context.NewCloudCallContext() 26 } 27 28 func (s *PrecheckSuite) TestSuccess(c *gc.C) { 29 ctrl := s.setupBroker(c) 30 defer ctrl.Finish() 31 32 err := s.broker.PrecheckInstance(context.NewCloudCallContext(), environs.PrecheckInstanceParams{ 33 Series: "kubernetes", 34 Constraints: constraints.MustParse("mem=4G"), 35 Placement: "a=b", 36 }) 37 c.Assert(err, jc.ErrorIsNil) 38 } 39 40 func (s *PrecheckSuite) TestWrongSeries(c *gc.C) { 41 ctrl := s.setupBroker(c) 42 defer ctrl.Finish() 43 44 err := s.broker.PrecheckInstance(context.NewCloudCallContext(), environs.PrecheckInstanceParams{ 45 Series: "quantal", 46 }) 47 c.Assert(err, gc.ErrorMatches, `series "quantal" not valid`) 48 } 49 50 func (s *PrecheckSuite) TestUnsupportedConstraints(c *gc.C) { 51 ctrl := s.setupBroker(c) 52 defer ctrl.Finish() 53 54 err := s.broker.PrecheckInstance(context.NewCloudCallContext(), environs.PrecheckInstanceParams{ 55 Series: "kubernetes", 56 Constraints: constraints.MustParse("instance-type=foo"), 57 }) 58 c.Assert(err, gc.ErrorMatches, `constraints instance-type not supported`) 59 } 60 61 func (s *PrecheckSuite) TestBadPlacement(c *gc.C) { 62 ctrl := s.setupBroker(c) 63 defer ctrl.Finish() 64 65 err := s.broker.PrecheckInstance(context.NewCloudCallContext(), environs.PrecheckInstanceParams{ 66 Series: "kubernetes", 67 Placement: "a", 68 }) 69 c.Assert(err, gc.ErrorMatches, `placement directive "a" not valid`) 70 }