1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
10
"github.com/juju/errors"
11
jc "github.com/juju/testing/checkers"
12
gc "gopkg.in/check.v1"
13
"gopkg.in/juju/names.v2"
15
"github.com/juju/juju/apiserver/params"
16
"github.com/juju/juju/state/multiwatcher"
17
coretesting "github.com/juju/juju/testing"
20
var _ = gc.Suite(&Suite{})
22
func TestPackage(t *testing.T) {
30
func (Suite) TestSetUp(c *gc.C) {
31
a := &fakeAgent{tag: names.NewMachineTag("1")}
33
mr := &fakeMachiner{m: m}
34
conv := converter{machiner: mr, agent: a}
35
w, err := conv.SetUp()
36
c.Assert(err, gc.IsNil)
37
c.Assert(conv.machine, gc.Equals, m)
38
c.Assert(mr.gotTag, gc.Equals, a.tag.(names.MachineTag))
39
c.Assert(w, gc.Equals, m.w)
42
func (Suite) TestSetupMachinerErr(c *gc.C) {
43
a := &fakeAgent{tag: names.NewMachineTag("1")}
44
mr := &fakeMachiner{err: stderrs.New("foo")}
45
conv := converter{machiner: mr, agent: a}
46
w, err := conv.SetUp()
47
c.Assert(errors.Cause(err), gc.Equals, mr.err)
48
c.Assert(mr.gotTag, gc.Equals, a.tag.(names.MachineTag))
52
func (Suite) TestSetupWatchErr(c *gc.C) {
53
a := &fakeAgent{tag: names.NewMachineTag("1")}
54
m := &fakeMachine{watchErr: stderrs.New("foo")}
55
mr := &fakeMachiner{m: m}
56
conv := &converter{machiner: mr, agent: a}
57
w, err := conv.SetUp()
58
c.Assert(errors.Cause(err), gc.Equals, m.watchErr)
59
c.Assert(mr.gotTag, gc.Equals, a.tag.(names.MachineTag))
63
func (s Suite) TestHandle(c *gc.C) {
64
a := &fakeAgent{tag: names.NewMachineTag("1")}
65
jobs := []multiwatcher.MachineJob{multiwatcher.JobHostUnits, multiwatcher.JobManageModel}
67
jobs: ¶ms.JobsResult{Jobs: jobs},
69
mr := &fakeMachiner{m: m}
70
conv := &converter{machiner: mr, agent: a}
71
_, err := conv.SetUp()
72
c.Assert(err, gc.IsNil)
73
err = conv.Handle(nil)
74
c.Assert(err, gc.IsNil)
75
c.Assert(a.didRestart, jc.IsTrue)
78
func (s Suite) TestHandleNoManageEnviron(c *gc.C) {
79
a := &fakeAgent{tag: names.NewMachineTag("1")}
80
jobs := []multiwatcher.MachineJob{multiwatcher.JobHostUnits}
82
jobs: ¶ms.JobsResult{Jobs: jobs},
84
mr := &fakeMachiner{m: m}
85
conv := &converter{machiner: mr, agent: a}
86
_, err := conv.SetUp()
87
c.Assert(err, gc.IsNil)
88
err = conv.Handle(nil)
89
c.Assert(err, gc.IsNil)
90
c.Assert(a.didRestart, jc.IsFalse)
93
func (Suite) TestHandleJobsError(c *gc.C) {
94
a := &fakeAgent{tag: names.NewMachineTag("1")}
95
jobs := []multiwatcher.MachineJob{multiwatcher.JobHostUnits, multiwatcher.JobManageModel}
97
jobs: ¶ms.JobsResult{Jobs: jobs},
98
jobsErr: errors.New("foo"),
100
mr := &fakeMachiner{m: m}
101
conv := &converter{machiner: mr, agent: a}
102
_, err := conv.SetUp()
103
c.Assert(err, gc.IsNil)
104
err = conv.Handle(nil)
105
c.Assert(errors.Cause(err), gc.Equals, m.jobsErr)
106
c.Assert(a.didRestart, jc.IsFalse)
109
func (s Suite) TestHandleRestartError(c *gc.C) {
111
tag: names.NewMachineTag("1"),
112
restartErr: errors.New("foo"),
114
jobs := []multiwatcher.MachineJob{multiwatcher.JobHostUnits, multiwatcher.JobManageModel}
116
jobs: ¶ms.JobsResult{Jobs: jobs},
118
mr := &fakeMachiner{m: m}
119
conv := &converter{machiner: mr, agent: a}
120
_, err := conv.SetUp()
121
c.Assert(err, gc.IsNil)
122
err = conv.Handle(nil)
123
c.Assert(errors.Cause(err), gc.Equals, a.restartErr)
125
// We set this to true whenver the function is called, even though we're
126
// returning an error from it.
127
c.Assert(a.didRestart, jc.IsTrue)