github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/state/internal_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package state 5 6 import ( 7 "github.com/juju/errors" 8 jujutesting "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 "github.com/juju/utils/clock" 11 gc "gopkg.in/check.v1" 12 "gopkg.in/juju/names.v2" 13 14 "github.com/juju/juju/cloud" 15 "github.com/juju/juju/constraints" 16 "github.com/juju/juju/environs/config" 17 "github.com/juju/juju/instance" 18 "github.com/juju/juju/mongo" 19 "github.com/juju/juju/mongo/mongotest" 20 "github.com/juju/juju/storage" 21 "github.com/juju/juju/storage/provider" 22 "github.com/juju/juju/testing" 23 ) 24 25 var _ = gc.Suite(&internalStateSuite{}) 26 27 // internalStateSuite manages a *State instance for tests in the state 28 // package (i.e. internal tests) that need it. It is similar to 29 // state.testing.StateSuite but is duplicated to avoid cyclic imports. 30 type internalStateSuite struct { 31 jujutesting.MgoSuite 32 testing.BaseSuite 33 state *State 34 owner names.UserTag 35 } 36 37 func (s *internalStateSuite) SetUpSuite(c *gc.C) { 38 s.MgoSuite.SetUpSuite(c) 39 s.BaseSuite.SetUpSuite(c) 40 } 41 42 func (s *internalStateSuite) TearDownSuite(c *gc.C) { 43 s.BaseSuite.TearDownSuite(c) 44 s.MgoSuite.TearDownSuite(c) 45 } 46 47 func (s *internalStateSuite) SetUpTest(c *gc.C) { 48 s.MgoSuite.SetUpTest(c) 49 s.BaseSuite.SetUpTest(c) 50 51 s.owner = names.NewLocalUserTag("test-admin") 52 // Copied from NewMongoInfo (due to import loops). 53 info := &mongo.MongoInfo{ 54 Info: mongo.Info{ 55 Addrs: []string{jujutesting.MgoServer.Addr()}, 56 CACert: testing.CACert, 57 }, 58 } 59 modelCfg := testing.ModelConfig(c) 60 controllerCfg := testing.FakeControllerConfig() 61 st, err := Initialize(InitializeParams{ 62 Clock: clock.WallClock, 63 ControllerConfig: controllerCfg, 64 ControllerModelArgs: ModelArgs{ 65 CloudName: "dummy", 66 CloudRegion: "dummy-region", 67 Owner: s.owner, 68 Config: modelCfg, 69 StorageProviderRegistry: provider.CommonStorageProviders(), 70 }, 71 CloudName: "dummy", 72 Cloud: cloud.Cloud{ 73 Type: "dummy", 74 AuthTypes: []cloud.AuthType{cloud.EmptyAuthType}, 75 Regions: []cloud.Region{ 76 cloud.Region{ 77 Name: "dummy-region", 78 }, 79 }, 80 }, 81 MongoInfo: info, 82 MongoDialOpts: mongotest.DialOpts(), 83 NewPolicy: func(*State) Policy { 84 return internalStatePolicy{} 85 }, 86 }) 87 c.Assert(err, jc.ErrorIsNil) 88 s.state = st 89 s.AddCleanup(func(*gc.C) { s.state.Close() }) 90 } 91 92 func (s *internalStateSuite) TearDownTest(c *gc.C) { 93 s.BaseSuite.TearDownTest(c) 94 s.MgoSuite.TearDownTest(c) 95 } 96 97 type internalStatePolicy struct{} 98 99 func (internalStatePolicy) Prechecker() (Prechecker, error) { 100 return nil, errors.NotImplementedf("Prechecker") 101 } 102 103 func (internalStatePolicy) ConfigValidator() (config.Validator, error) { 104 return nil, errors.NotImplementedf("ConfigValidator") 105 } 106 107 func (internalStatePolicy) ConstraintsValidator() (constraints.Validator, error) { 108 return nil, errors.NotImplementedf("ConstraintsValidator") 109 } 110 111 func (internalStatePolicy) InstanceDistributor() (instance.Distributor, error) { 112 return nil, errors.NotImplementedf("InstanceDistributor") 113 } 114 115 func (internalStatePolicy) StorageProviderRegistry() (storage.ProviderRegistry, error) { 116 return provider.CommonStorageProviders(), nil 117 } 118 119 func (internalStatePolicy) ProviderConfigSchemaSource() (config.ConfigSchemaSource, error) { 120 return nil, errors.NotImplementedf("ConfigSchemaSource") 121 }