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  }