github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/provider/maas/maas_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package maas
     5  
     6  import (
     7  	"time"
     8  
     9  	gc "gopkg.in/check.v1"
    10  	"launchpad.net/gomaasapi"
    11  
    12  	"github.com/juju/juju/environs"
    13  	"github.com/juju/juju/environs/config"
    14  	envtesting "github.com/juju/juju/environs/testing"
    15  	"github.com/juju/juju/feature"
    16  	coretesting "github.com/juju/juju/testing"
    17  	"github.com/juju/juju/version"
    18  )
    19  
    20  // Ensure maasEnviron supports environs.NetworkingEnviron.
    21  var _ environs.NetworkingEnviron = (*maasEnviron)(nil)
    22  
    23  type providerSuite struct {
    24  	coretesting.FakeJujuHomeSuite
    25  	envtesting.ToolsFixture
    26  	testMAASObject *gomaasapi.TestMAASObject
    27  }
    28  
    29  var _ = gc.Suite(&providerSuite{})
    30  
    31  func (s *providerSuite) SetUpSuite(c *gc.C) {
    32  	s.FakeJujuHomeSuite.SetUpSuite(c)
    33  	restoreTimeouts := envtesting.PatchAttemptStrategies(&shortAttempt)
    34  	TestMAASObject := gomaasapi.NewTestMAAS("1.0")
    35  	s.testMAASObject = TestMAASObject
    36  	restoreFinishBootstrap := envtesting.DisableFinishBootstrap()
    37  	s.AddSuiteCleanup(func(*gc.C) {
    38  		restoreFinishBootstrap()
    39  		restoreTimeouts()
    40  	})
    41  	s.PatchValue(&nodeDeploymentTimeout, func(*maasEnviron) time.Duration {
    42  		return coretesting.ShortWait
    43  	})
    44  }
    45  
    46  func (s *providerSuite) SetUpTest(c *gc.C) {
    47  	s.PatchValue(&version.Current.Number, coretesting.FakeVersionNumber)
    48  	s.FakeJujuHomeSuite.SetUpTest(c)
    49  	s.ToolsFixture.SetUpTest(c)
    50  	s.SetFeatureFlags(feature.AddressAllocation)
    51  }
    52  
    53  func (s *providerSuite) TearDownTest(c *gc.C) {
    54  	s.testMAASObject.TestServer.Clear()
    55  	s.ToolsFixture.TearDownTest(c)
    56  	s.FakeJujuHomeSuite.TearDownTest(c)
    57  }
    58  
    59  func (s *providerSuite) TearDownSuite(c *gc.C) {
    60  	s.testMAASObject.Close()
    61  	s.FakeJujuHomeSuite.TearDownSuite(c)
    62  }
    63  
    64  const exampleAgentName = "dfb69555-0bc4-4d1f-85f2-4ee390974984"
    65  
    66  var maasEnvAttrs = coretesting.Attrs{
    67  	"name":            "test env",
    68  	"type":            "maas",
    69  	"maas-oauth":      "a:b:c",
    70  	"maas-agent-name": exampleAgentName,
    71  }
    72  
    73  // makeEnviron creates a functional maasEnviron for a test.
    74  func (suite *providerSuite) makeEnviron() *maasEnviron {
    75  	testAttrs := maasEnvAttrs
    76  	testAttrs["maas-server"] = suite.testMAASObject.TestServer.URL
    77  	attrs := coretesting.FakeConfig().Merge(maasEnvAttrs)
    78  	cfg, err := config.New(config.NoDefaults, attrs)
    79  	if err != nil {
    80  		panic(err)
    81  	}
    82  	env, err := NewEnviron(cfg)
    83  	if err != nil {
    84  		panic(err)
    85  	}
    86  	return env
    87  }