~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/worker/provisioner/manifold_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2015 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package provisioner_test
 
5
 
 
6
import (
 
7
        "github.com/juju/errors"
 
8
        "github.com/juju/testing"
 
9
        jc "github.com/juju/testing/checkers"
 
10
        gc "gopkg.in/check.v1"
 
11
 
 
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"
 
20
)
 
21
 
 
22
type ManifoldSuite struct {
 
23
        testing.IsolationSuite
 
24
        stub testing.Stub
 
25
}
 
26
 
 
27
var _ = gc.Suite(&ManifoldSuite{})
 
28
 
 
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
 
37
        }
 
38
        return provisioner.Manifold(provisioner.ManifoldConfig{
 
39
                AgentName:          "agent",
 
40
                APICallerName:      "api-caller",
 
41
                EnvironName:        "environ",
 
42
                NewProvisionerFunc: fakeNewProvFunc,
 
43
        })
 
44
}
 
45
 
 
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)
 
51
}
 
52
 
 
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 }{},
 
59
        }))
 
60
        c.Check(w, gc.IsNil)
 
61
        c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
 
62
}
 
63
 
 
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 }{},
 
70
        }))
 
71
        c.Check(w, gc.IsNil)
 
72
        c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
 
73
}
 
74
 
 
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,
 
81
        }))
 
82
        c.Check(w, gc.IsNil)
 
83
        c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
 
84
}
 
85
 
 
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 }{},
 
92
        }))
 
93
        c.Check(w, gc.NotNil)
 
94
        c.Check(err, jc.ErrorIsNil)
 
95
        s.stub.CheckCallNames(c, "NewProvisionerFunc")
 
96
}
 
97
 
 
98
type fakeAgent struct {
 
99
        agent.Agent
 
100
}
 
101
 
 
102
func (a *fakeAgent) CurrentConfig() agent.Config {
 
103
        return nil
 
104
}