github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/oracle/environ_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package oracle_test 5 6 import ( 7 "errors" 8 "fmt" 9 "time" 10 11 "github.com/juju/clock/testclock" 12 gitjujutesting "github.com/juju/testing" 13 "github.com/juju/utils/arch" 14 "github.com/juju/version" 15 gc "gopkg.in/check.v1" 16 17 "github.com/juju/juju/core/constraints" 18 "github.com/juju/juju/core/instance" 19 "github.com/juju/juju/environs" 20 "github.com/juju/juju/environs/context" 21 envtesting "github.com/juju/juju/environs/testing" 22 "github.com/juju/juju/provider/oracle" 23 oracletesting "github.com/juju/juju/provider/oracle/testing" 24 "github.com/juju/juju/testing" 25 "github.com/juju/juju/tools" 26 ) 27 28 type environSuite struct { 29 gitjujutesting.IsolationSuite 30 env *oracle.OracleEnviron 31 32 callCtx context.ProviderCallContext 33 } 34 35 func (e *environSuite) SetUpTest(c *gc.C) { 36 var err error 37 testEnvironAPI := oracletesting.DefaultEnvironAPI 38 e.env, err = oracle.NewOracleEnviron( 39 &oracle.EnvironProvider{}, 40 environs.OpenParams{ 41 Config: testing.ModelConfig(c), 42 }, 43 testEnvironAPI, 44 &advancingClock, 45 ) 46 c.Assert(err, gc.IsNil) 47 c.Assert(e.env, gc.NotNil) 48 49 // Setup the FakeInstance Name to match with the new 50 // OracleEnviron. Note, we are actually changing the 51 // value in oracletesting.DefaultEnvironAPI. 52 hostname, err := oracle.CreateHostname(e.env, "0") 53 c.Assert(err, gc.IsNil) 54 testEnvironAPI.FakeInstance.All.Result[0].Name = fmt.Sprintf("/Compute-a432100/sgiulitti@cloudbase.com/%s/ebc4ce91-56bb-4120-ba78-13762597f837", hostname) 55 oracle.SetEnvironAPI(e.env, testEnvironAPI) 56 e.callCtx = context.NewCloudCallContext() 57 } 58 59 var _ = gc.Suite(&environSuite{}) 60 61 // shamelessly copied from one of the OpenStack tests 62 var clk = testclock.NewClock(time.Time{}) 63 var advancingClock = testclock.AutoAdvancingClock{clk, clk.Advance} 64 65 func (e *environSuite) TestAvailabilityZone(c *gc.C) { 66 zones, err := e.env.AvailabilityZones(e.callCtx) 67 c.Assert(err, gc.IsNil) 68 c.Assert(zones, gc.NotNil) 69 } 70 71 func (e *environSuite) TestInstanceAvailabilityZoneNames(c *gc.C) { 72 zones, err := e.env.InstanceAvailabilityZoneNames(e.callCtx, []instance.Id{ 73 instance.Id("0"), 74 }) 75 c.Assert(err, gc.IsNil) 76 c.Assert(zones, gc.NotNil) 77 } 78 79 func (e *environSuite) TestInstanceAvailabilityZoneNamesWithErrors(c *gc.C) { 80 environ, err := oracle.NewOracleEnviron( 81 &oracle.EnvironProvider{}, 82 environs.OpenParams{ 83 Config: testing.ModelConfig(c), 84 }, 85 &oracletesting.FakeEnvironAPI{ 86 FakeInstancer: oracletesting.FakeInstancer{ 87 InstanceErr: errors.New("FakeInstanceErr"), 88 }, 89 }, 90 &advancingClock, 91 ) 92 c.Assert(err, gc.IsNil) 93 c.Assert(environ, gc.NotNil) 94 95 _, err = environ.InstanceAvailabilityZoneNames(e.callCtx, []instance.Id{instance.Id("0")}) 96 c.Assert(err, gc.NotNil) 97 98 environ, err = oracle.NewOracleEnviron( 99 &oracle.EnvironProvider{}, 100 environs.OpenParams{ 101 Config: testing.ModelConfig(c), 102 }, 103 &oracletesting.FakeEnvironAPI{ 104 FakeInstance: oracletesting.FakeInstance{ 105 AllErr: errors.New("FakeInstanceErr"), 106 }, 107 }, 108 &advancingClock, 109 ) 110 c.Assert(err, gc.IsNil) 111 c.Assert(environ, gc.NotNil) 112 113 _, err = environ.InstanceAvailabilityZoneNames(e.callCtx, []instance.Id{ 114 instance.Id("0"), 115 instance.Id("1"), 116 }) 117 c.Assert(err, gc.NotNil) 118 } 119 120 func (e *environSuite) TestPrepareForBootstrap(c *gc.C) { 121 ctx := envtesting.BootstrapContext(c) 122 err := e.env.PrepareForBootstrap(ctx) 123 c.Assert(err, gc.IsNil) 124 } 125 126 func (e *environSuite) TestPrepareForBootstrapWithErrors(c *gc.C) { 127 environ, err := oracle.NewOracleEnviron( 128 &oracle.EnvironProvider{}, 129 environs.OpenParams{ 130 Config: testing.ModelConfig(c), 131 }, 132 &oracletesting.FakeEnvironAPI{ 133 FakeAuthenticater: oracletesting.FakeAuthenticater{ 134 AuthenticateErr: errors.New("FakeAuthenticateErr"), 135 }, 136 }, 137 &advancingClock, 138 ) 139 c.Assert(err, gc.IsNil) 140 c.Assert(environ, gc.NotNil) 141 142 ctx := envtesting.BootstrapContext(c) 143 err = environ.PrepareForBootstrap(ctx) 144 c.Assert(err, gc.NotNil) 145 } 146 147 func makeToolsList(series string) tools.List { 148 var toolsVersion version.Binary 149 toolsVersion.Number = version.MustParse("1.26.0") 150 toolsVersion.Arch = arch.AMD64 151 toolsVersion.Series = series 152 return tools.List{{ 153 Version: toolsVersion, 154 URL: fmt.Sprintf("http://example.com/tools/juju-%s.tgz", toolsVersion), 155 SHA256: "1234567890abcdef", 156 Size: 1024, 157 }} 158 } 159 160 func (e *environSuite) TestBootstrap(c *gc.C) { 161 environ, err := oracle.NewOracleEnviron( 162 &oracle.EnvironProvider{}, 163 environs.OpenParams{ 164 Config: testing.ModelConfig(c), 165 }, 166 oracletesting.DefaultEnvironAPI, 167 &advancingClock, 168 ) 169 c.Assert(err, gc.IsNil) 170 c.Assert(environ, gc.NotNil) 171 172 ctx := envtesting.BootstrapContext(c) 173 _, err = environ.Bootstrap(ctx, e.callCtx, 174 environs.BootstrapParams{ 175 ControllerConfig: testing.FakeControllerConfig(), 176 AvailableTools: makeToolsList("xenial"), 177 BootstrapSeries: "xenial", 178 BootstrapConstraints: constraints.MustParse("mem=3.5G"), 179 }) 180 c.Assert(err, gc.IsNil) 181 } 182 183 func (e *environSuite) TestCreate(c *gc.C) { 184 err := e.env.Create(e.callCtx, environs.CreateParams{ 185 ControllerUUID: "dsauhdiuashd", 186 }) 187 c.Assert(err, gc.IsNil) 188 } 189 190 func (e *environSuite) TestCreateWithErrors(c *gc.C) { 191 environ, err := oracle.NewOracleEnviron( 192 &oracle.EnvironProvider{}, 193 environs.OpenParams{ 194 Config: testing.ModelConfig(c), 195 }, 196 &oracletesting.FakeEnvironAPI{ 197 FakeAuthenticater: oracletesting.FakeAuthenticater{ 198 AuthenticateErr: errors.New("FakeAuthenticateErr"), 199 }, 200 }, 201 &advancingClock, 202 ) 203 c.Assert(err, gc.IsNil) 204 c.Assert(environ, gc.NotNil) 205 206 err = environ.Create(e.callCtx, environs.CreateParams{ 207 ControllerUUID: "daushdasd", 208 }) 209 c.Assert(err, gc.NotNil) 210 } 211 212 func (e *environSuite) TestAdoptResources(c *gc.C) { 213 err := e.env.AdoptResources(e.callCtx, "", version.Number{}) 214 c.Assert(err, gc.IsNil) 215 } 216 217 func (e *environSuite) TestStopInstances(c *gc.C) { 218 hostname, err := oracle.CreateHostname(e.env, "0") 219 c.Assert(err, gc.IsNil) 220 ids := []instance.Id{instance.Id(hostname)} 221 err = e.env.StopInstances(e.callCtx, ids...) 222 c.Assert(err, gc.IsNil) 223 } 224 225 func (e *environSuite) TestAllInstances(c *gc.C) { 226 _, err := e.env.AllInstances(e.callCtx) 227 c.Assert(err, gc.IsNil) 228 } 229 230 func (e *environSuite) TestMaintainInstance(c *gc.C) { 231 err := e.env.MaintainInstance(e.callCtx, environs.StartInstanceParams{}) 232 c.Assert(err, gc.IsNil) 233 } 234 235 func (e *environSuite) TestConfig(c *gc.C) { 236 cfg := e.env.Config() 237 c.Assert(cfg, gc.NotNil) 238 } 239 240 func (e *environSuite) TestConstraintsValidator(c *gc.C) { 241 validator, err := e.env.ConstraintsValidator(e.callCtx) 242 c.Assert(err, gc.IsNil) 243 c.Assert(validator, gc.NotNil) 244 } 245 246 func (e *environSuite) TestSetConfig(c *gc.C) { 247 err := e.env.SetConfig(testing.ModelConfig(c)) 248 c.Assert(err, gc.NotNil) 249 } 250 251 func (e *environSuite) TestInstances(c *gc.C) { 252 hostname, err := oracle.CreateHostname(e.env, "0") 253 c.Assert(err, gc.IsNil) 254 instances, err := e.env.Instances(e.callCtx, []instance.Id{instance.Id(hostname)}) 255 c.Assert(err, gc.IsNil) 256 c.Assert(instances, gc.NotNil) 257 } 258 259 func (e *environSuite) TestConstrollerInstances(c *gc.C) { 260 instances, err := e.env.ControllerInstances(e.callCtx, "23123-3123-12312") 261 c.Assert(err, gc.Equals, environs.ErrNoInstances) 262 c.Assert(instances, gc.IsNil) 263 } 264 265 func (e *environSuite) TestDestroy(c *gc.C) { 266 err := e.env.Destroy(e.callCtx) 267 c.Assert(err, gc.IsNil) 268 } 269 270 func (e *environSuite) TestDestroyController(c *gc.C) { 271 err := e.env.DestroyController(e.callCtx, "231233-312-321-3312") 272 c.Assert(err, gc.IsNil) 273 } 274 275 func (e *environSuite) TestProvider(c *gc.C) { 276 p := e.env.Provider() 277 c.Assert(p, gc.NotNil) 278 } 279 280 func (e *environSuite) TestPrecheckInstance(c *gc.C) { 281 err := e.env.PrecheckInstance(e.callCtx, environs.PrecheckInstanceParams{}) 282 c.Assert(err, gc.IsNil) 283 } 284 285 func (e *environSuite) TestInstanceTypes(c *gc.C) { 286 types, err := e.env.InstanceTypes(e.callCtx, constraints.Value{}) 287 c.Assert(err, gc.IsNil) 288 c.Assert(types, gc.NotNil) 289 }