1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package provisioner_test
7
"github.com/juju/errors"
8
"github.com/juju/testing"
9
jc "github.com/juju/testing/checkers"
10
gc "gopkg.in/check.v1"
12
"github.com/juju/juju/agent"
13
"github.com/juju/juju/api/base"
14
apitesting "github.com/juju/juju/api/base/testing"
15
apiprovisioner "github.com/juju/juju/api/provisioner"
16
"github.com/juju/juju/environs"
17
"github.com/juju/juju/worker/dependency"
18
dt "github.com/juju/juju/worker/dependency/testing"
19
"github.com/juju/juju/worker/provisioner"
22
type ManifoldSuite struct {
23
testing.IsolationSuite
27
var _ = gc.Suite(&ManifoldSuite{})
29
func (s *ManifoldSuite) makeManifold() dependency.Manifold {
30
fakeNewProvFunc := func(
31
apiSt *apiprovisioner.State,
32
agentConf agent.Config,
33
environ environs.Environ,
34
) (provisioner.Provisioner, error) {
35
s.stub.AddCall("NewProvisionerFunc")
36
return struct{ provisioner.Provisioner }{}, nil
38
return provisioner.Manifold(provisioner.ManifoldConfig{
40
APICallerName: "api-caller",
41
EnvironName: "environ",
42
NewProvisionerFunc: fakeNewProvFunc,
46
func (s *ManifoldSuite) TestManifold(c *gc.C) {
47
manifold := s.makeManifold()
48
c.Check(manifold.Inputs, jc.SameContents, []string{"agent", "api-caller", "environ"})
49
c.Check(manifold.Output, gc.IsNil)
50
c.Check(manifold.Start, gc.NotNil)
53
func (s *ManifoldSuite) TestMissingAgent(c *gc.C) {
54
manifold := s.makeManifold()
55
w, err := manifold.Start(dt.StubContext(nil, map[string]interface{}{
56
"agent": dependency.ErrMissing,
57
"api-caller": struct{ base.APICaller }{},
58
"environ": struct{ environs.Environ }{},
61
c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
64
func (s *ManifoldSuite) TestMissingAPICaller(c *gc.C) {
65
manifold := s.makeManifold()
66
w, err := manifold.Start(dt.StubContext(nil, map[string]interface{}{
67
"agent": struct{ agent.Agent }{},
68
"api-caller": dependency.ErrMissing,
69
"environ": struct{ environs.Environ }{},
72
c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
75
func (s *ManifoldSuite) TestMissingEnviron(c *gc.C) {
76
manifold := s.makeManifold()
77
w, err := manifold.Start(dt.StubContext(nil, map[string]interface{}{
78
"agent": struct{ agent.Agent }{},
79
"api-caller": struct{ base.APICaller }{},
80
"environ": dependency.ErrMissing,
83
c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
86
func (s *ManifoldSuite) TestStarts(c *gc.C) {
87
manifold := s.makeManifold()
88
w, err := manifold.Start(dt.StubContext(nil, map[string]interface{}{
89
"agent": new(fakeAgent),
90
"api-caller": apitesting.APICallerFunc(nil),
91
"environ": struct{ environs.Environ }{},
94
c.Check(err, jc.ErrorIsNil)
95
s.stub.CheckCallNames(c, "NewProvisionerFunc")
98
type fakeAgent struct {
102
func (a *fakeAgent) CurrentConfig() agent.Config {