OLD | NEW |
1 // Copyright 2013 Canonical Ltd. | 1 // Copyright 2013 Canonical Ltd. |
2 // Licensed under the AGPLv3, see LICENCE file for details. | 2 // Licensed under the AGPLv3, see LICENCE file for details. |
3 | 3 |
4 package provisioner_test | 4 package provisioner_test |
5 | 5 |
6 import ( | 6 import ( |
7 stdtesting "testing" | 7 stdtesting "testing" |
8 | 8 |
9 jc "github.com/juju/testing/checkers" | 9 jc "github.com/juju/testing/checkers" |
10 gc "launchpad.net/gocheck" | 10 gc "launchpad.net/gocheck" |
11 | 11 |
12 "launchpad.net/juju-core/constraints" | 12 "launchpad.net/juju-core/constraints" |
13 "launchpad.net/juju-core/errors" | 13 "launchpad.net/juju-core/errors" |
14 "launchpad.net/juju-core/instance" | 14 "launchpad.net/juju-core/instance" |
15 "launchpad.net/juju-core/juju/testing" | 15 "launchpad.net/juju-core/juju/testing" |
16 "launchpad.net/juju-core/state" | 16 "launchpad.net/juju-core/state" |
17 "launchpad.net/juju-core/state/api" | 17 "launchpad.net/juju-core/state/api" |
18 commontesting "launchpad.net/juju-core/state/api/common/testing" | |
19 "launchpad.net/juju-core/state/api/params" | 18 "launchpad.net/juju-core/state/api/params" |
20 "launchpad.net/juju-core/state/api/provisioner" | 19 "launchpad.net/juju-core/state/api/provisioner" |
| 20 apitesting "launchpad.net/juju-core/state/api/testing" |
21 statetesting "launchpad.net/juju-core/state/testing" | 21 statetesting "launchpad.net/juju-core/state/testing" |
22 coretesting "launchpad.net/juju-core/testing" | 22 coretesting "launchpad.net/juju-core/testing" |
23 "launchpad.net/juju-core/tools" | 23 "launchpad.net/juju-core/tools" |
24 "launchpad.net/juju-core/utils" | 24 "launchpad.net/juju-core/utils" |
25 "launchpad.net/juju-core/version" | 25 "launchpad.net/juju-core/version" |
26 ) | 26 ) |
27 | 27 |
28 func TestAll(t *stdtesting.T) { | 28 func TestAll(t *stdtesting.T) { |
29 coretesting.MgoTestPackage(t) | 29 coretesting.MgoTestPackage(t) |
30 } | 30 } |
31 | 31 |
32 type provisionerSuite struct { | 32 type provisionerSuite struct { |
33 testing.JujuConnSuite | 33 testing.JujuConnSuite |
34 » *commontesting.EnvironWatcherTest | 34 » *apitesting.EnvironWatcherTests |
| 35 » *apitesting.APIAddresserTests |
35 | 36 |
36 st *api.State | 37 st *api.State |
37 machine *state.Machine | 38 machine *state.Machine |
38 | 39 |
39 provisioner *provisioner.State | 40 provisioner *provisioner.State |
40 } | 41 } |
41 | 42 |
42 var _ = gc.Suite(&provisionerSuite{}) | 43 var _ = gc.Suite(&provisionerSuite{}) |
43 | 44 |
44 func (s *provisionerSuite) SetUpTest(c *gc.C) { | 45 func (s *provisionerSuite) SetUpTest(c *gc.C) { |
45 s.JujuConnSuite.SetUpTest(c) | 46 s.JujuConnSuite.SetUpTest(c) |
46 | 47 |
47 var err error | 48 var err error |
48 s.machine, err = s.State.AddMachine("quantal", state.JobManageEnviron) | 49 s.machine, err = s.State.AddMachine("quantal", state.JobManageEnviron) |
49 c.Assert(err, gc.IsNil) | 50 c.Assert(err, gc.IsNil) |
50 password, err := utils.RandomPassword() | 51 password, err := utils.RandomPassword() |
51 c.Assert(err, gc.IsNil) | 52 c.Assert(err, gc.IsNil) |
52 err = s.machine.SetPassword(password) | 53 err = s.machine.SetPassword(password) |
53 c.Assert(err, gc.IsNil) | 54 c.Assert(err, gc.IsNil) |
54 err = s.machine.SetProvisioned("i-manager", "fake_nonce", nil) | 55 err = s.machine.SetProvisioned("i-manager", "fake_nonce", nil) |
55 c.Assert(err, gc.IsNil) | 56 c.Assert(err, gc.IsNil) |
56 s.st = s.OpenAPIAsMachine(c, s.machine.Tag(), password, "fake_nonce") | 57 s.st = s.OpenAPIAsMachine(c, s.machine.Tag(), password, "fake_nonce") |
57 c.Assert(s.st, gc.NotNil) | 58 c.Assert(s.st, gc.NotNil) |
| 59 err = s.machine.SetAddresses(instance.NewAddresses([]string{"0.1.2.3"})) |
| 60 c.Assert(err, gc.IsNil) |
58 | 61 |
59 // Create the provisioner API facade. | 62 // Create the provisioner API facade. |
60 s.provisioner = s.st.Provisioner() | 63 s.provisioner = s.st.Provisioner() |
61 c.Assert(s.provisioner, gc.NotNil) | 64 c.Assert(s.provisioner, gc.NotNil) |
62 | 65 |
63 » s.EnvironWatcherTest = commontesting.NewEnvironWatcherTest(s.provisioner
, s.State, s.BackingState, commontesting.HasSecrets) | 66 » s.EnvironWatcherTests = apitesting.NewEnvironWatcherTests(s.provisioner,
s.BackingState, apitesting.HasSecrets) |
| 67 » s.APIAddresserTests = apitesting.NewAPIAddresserTests(s.provisioner, s.B
ackingState) |
64 } | 68 } |
65 | 69 |
66 func (s *provisionerSuite) TestMachineTagAndId(c *gc.C) { | 70 func (s *provisionerSuite) TestMachineTagAndId(c *gc.C) { |
67 apiMachine, err := s.provisioner.Machine("machine-42") | 71 apiMachine, err := s.provisioner.Machine("machine-42") |
68 c.Assert(err, gc.ErrorMatches, "machine 42 not found") | 72 c.Assert(err, gc.ErrorMatches, "machine 42 not found") |
69 c.Assert(err, jc.Satisfies, params.IsCodeNotFound) | 73 c.Assert(err, jc.Satisfies, params.IsCodeNotFound) |
70 c.Assert(apiMachine, gc.IsNil) | 74 c.Assert(apiMachine, gc.IsNil) |
71 | 75 |
72 apiMachine, err = s.provisioner.Machine(s.machine.Tag()) | 76 apiMachine, err = s.provisioner.Machine(s.machine.Tag()) |
73 c.Assert(err, gc.IsNil) | 77 c.Assert(err, gc.IsNil) |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 c.Assert(err, gc.IsNil) | 335 c.Assert(err, gc.IsNil) |
332 | 336 |
333 stateAddresses, err := s.State.Addresses() | 337 stateAddresses, err := s.State.Addresses() |
334 c.Assert(err, gc.IsNil) | 338 c.Assert(err, gc.IsNil) |
335 | 339 |
336 addresses, err := s.provisioner.StateAddresses() | 340 addresses, err := s.provisioner.StateAddresses() |
337 c.Assert(err, gc.IsNil) | 341 c.Assert(err, gc.IsNil) |
338 c.Assert(addresses, gc.DeepEquals, stateAddresses) | 342 c.Assert(addresses, gc.DeepEquals, stateAddresses) |
339 } | 343 } |
340 | 344 |
341 func (s *provisionerSuite) TestAPIAddresses(c *gc.C) { | |
342 err := s.machine.SetAddresses([]instance.Address{ | |
343 instance.NewAddress("0.1.2.3"), | |
344 }) | |
345 c.Assert(err, gc.IsNil) | |
346 | |
347 apiAddresses, err := s.State.APIAddressesFromMachines() | |
348 c.Assert(err, gc.IsNil) | |
349 | |
350 addresses, err := s.provisioner.APIAddresses() | |
351 c.Assert(err, gc.IsNil) | |
352 c.Assert(addresses, gc.DeepEquals, apiAddresses) | |
353 } | |
354 | |
355 func (s *provisionerSuite) TestContainerConfig(c *gc.C) { | 345 func (s *provisionerSuite) TestContainerConfig(c *gc.C) { |
356 result, err := s.provisioner.ContainerConfig() | 346 result, err := s.provisioner.ContainerConfig() |
357 c.Assert(err, gc.IsNil) | 347 c.Assert(err, gc.IsNil) |
358 c.Assert(result.ProviderType, gc.Equals, "dummy") | 348 c.Assert(result.ProviderType, gc.Equals, "dummy") |
359 c.Assert(result.AuthorizedKeys, gc.Equals, coretesting.FakeAuthKeys) | 349 c.Assert(result.AuthorizedKeys, gc.Equals, coretesting.FakeAuthKeys) |
360 c.Assert(result.SSLHostnameVerification, jc.IsTrue) | 350 c.Assert(result.SSLHostnameVerification, jc.IsTrue) |
361 } | 351 } |
362 | 352 |
363 func (s *provisionerSuite) TestCACert(c *gc.C) { | |
364 caCert, err := s.provisioner.CACert() | |
365 c.Assert(err, gc.IsNil) | |
366 c.Assert(caCert, gc.DeepEquals, s.State.CACert()) | |
367 } | |
368 | |
369 func (s *provisionerSuite) TestToolsWrongMachine(c *gc.C) { | 353 func (s *provisionerSuite) TestToolsWrongMachine(c *gc.C) { |
370 tools, err := s.provisioner.Tools("42") | 354 tools, err := s.provisioner.Tools("42") |
371 c.Assert(err, gc.ErrorMatches, "permission denied") | 355 c.Assert(err, gc.ErrorMatches, "permission denied") |
372 c.Assert(err, jc.Satisfies, params.IsCodeUnauthorized) | 356 c.Assert(err, jc.Satisfies, params.IsCodeUnauthorized) |
373 c.Assert(tools, gc.IsNil) | 357 c.Assert(tools, gc.IsNil) |
374 } | 358 } |
375 | 359 |
376 func (s *provisionerSuite) TestTools(c *gc.C) { | 360 func (s *provisionerSuite) TestTools(c *gc.C) { |
377 cur := version.Current | 361 cur := version.Current |
378 curTools := &tools.Tools{Version: cur, URL: ""} | 362 curTools := &tools.Tools{Version: cur, URL: ""} |
(...skipping 25 matching lines...) Expand all Loading... |
404 c.Assert(err, gc.IsNil) | 388 c.Assert(err, gc.IsNil) |
405 err = apiMachine.SupportsNoContainers() | 389 err = apiMachine.SupportsNoContainers() |
406 c.Assert(err, gc.IsNil) | 390 c.Assert(err, gc.IsNil) |
407 | 391 |
408 err = s.machine.Refresh() | 392 err = s.machine.Refresh() |
409 c.Assert(err, gc.IsNil) | 393 c.Assert(err, gc.IsNil) |
410 containers, ok := s.machine.SupportedContainers() | 394 containers, ok := s.machine.SupportedContainers() |
411 c.Assert(ok, jc.IsTrue) | 395 c.Assert(ok, jc.IsTrue) |
412 c.Assert(containers, gc.DeepEquals, []instance.ContainerType{}) | 396 c.Assert(containers, gc.DeepEquals, []instance.ContainerType{}) |
413 } | 397 } |
OLD | NEW |