1
// Copyright 2015 Canonical Ltd.
2
// Copyright 2015 Cloudbase Solutions SRL
3
// Licensed under the AGPLv3, see LICENCE file for details.
8
"github.com/juju/errors"
9
"github.com/juju/testing"
10
jc "github.com/juju/testing/checkers"
11
gc "gopkg.in/check.v1"
13
"github.com/juju/juju/service/common"
14
"github.com/juju/juju/service/windows"
15
coretesting "github.com/juju/juju/testing"
18
type serviceSuite struct {
26
stubMgr *windows.StubSvcManager
33
var _ = gc.Suite(&serviceSuite{})
35
func (s *serviceSuite) SetUpTest(c *gc.C) {
36
s.BaseSuite.SetUpTest(c)
38
s.execPath = `C:\juju\bin\jujud.exe`
39
s.stub = &testing.Stub{}
40
s.stubMgr = windows.PatchServiceManager(s, s.stub)
42
// Set up the service.
45
Desc: "service for " + s.name,
46
ExecStart: s.execPath + " " + s.name,
49
s.svcExistsErr = errors.New("Service machine-1 already installed")
51
s.mgr, err = windows.NewService(s.name, s.conf)
52
c.Assert(err, gc.IsNil)
59
func (s *serviceSuite) TestInstall(c *gc.C) {
60
err := s.mgr.Install()
61
c.Assert(err, gc.IsNil)
63
exists, err := s.stubMgr.Exists(s.name, s.conf)
64
c.Assert(err, gc.IsNil)
65
c.Assert(exists, jc.IsTrue)
67
s.stub.CheckCallNames(c, "listServices", "Create")
70
func (s *serviceSuite) TestInstallAlreadyExists(c *gc.C) {
71
err := s.mgr.Install()
72
c.Assert(err, gc.IsNil)
74
exists, err := s.stubMgr.Exists(s.name, s.conf)
75
c.Assert(err, gc.IsNil)
76
c.Assert(exists, jc.IsTrue)
79
c.Assert(err.Error(), gc.Equals, s.svcExistsErr.Error())
81
s.stub.CheckCallNames(c, "listServices", "Create", "listServices")
84
func (s *serviceSuite) TestStop(c *gc.C) {
85
err := s.mgr.Install()
86
c.Assert(err, gc.IsNil)
88
running, err := s.mgr.Running()
89
c.Assert(err, gc.IsNil)
90
c.Assert(running, jc.IsFalse)
93
c.Assert(err, gc.IsNil)
95
running, err = s.mgr.Running()
96
c.Assert(err, gc.IsNil)
97
c.Assert(running, jc.IsTrue)
100
c.Assert(err, gc.IsNil)
102
running, err = s.mgr.Running()
103
c.Assert(err, gc.IsNil)
104
c.Assert(running, jc.IsFalse)
107
func (s *serviceSuite) TestStopStart(c *gc.C) {
108
err := s.mgr.Install()
109
c.Assert(err, gc.IsNil)
111
running, err := s.mgr.Running()
112
c.Assert(err, gc.IsNil)
113
c.Assert(running, jc.IsFalse)
116
c.Assert(err, gc.IsNil)
118
running, err = s.mgr.Running()
119
c.Assert(err, gc.IsNil)
120
c.Assert(running, jc.IsTrue)
123
c.Assert(err, gc.IsNil)
125
running, err = s.mgr.Running()
126
c.Assert(err, gc.IsNil)
127
c.Assert(running, jc.IsFalse)
130
c.Assert(err, gc.IsNil)
132
running, err = s.mgr.Running()
133
c.Assert(err, gc.IsNil)
134
c.Assert(running, jc.IsTrue)
137
func (s *serviceSuite) TestRemove(c *gc.C) {
138
err := s.mgr.Install()
139
c.Assert(err, gc.IsNil)
141
exists, err := s.stubMgr.Exists(s.name, s.conf)
142
c.Assert(err, gc.IsNil)
143
c.Assert(exists, jc.IsTrue)
146
c.Assert(err, gc.IsNil)
148
exists, err = s.stubMgr.Exists(s.name, s.conf)
149
c.Assert(err, gc.IsNil)
150
c.Assert(exists, jc.IsFalse)
152
s.stub.CheckCallNames(c, "listServices", "Create", "listServices", "listServices", "Running", "Delete")
155
func (s *serviceSuite) TestRemoveRunningService(c *gc.C) {
156
err := s.mgr.Install()
157
c.Assert(err, gc.IsNil)
159
exists, err := s.stubMgr.Exists(s.name, s.conf)
160
c.Assert(err, gc.IsNil)
161
c.Assert(exists, jc.IsTrue)
164
c.Assert(err, gc.IsNil)
167
c.Assert(err, gc.IsNil)
169
exists, err = s.stubMgr.Exists(s.name, s.conf)
170
c.Assert(err, gc.IsNil)
171
c.Assert(exists, jc.IsFalse)
173
s.stub.CheckCallNames(c, "listServices", "Create", "listServices", "Running", "Start", "listServices", "listServices", "Running", "Stop", "Delete")
176
func (s *serviceSuite) TestRemoveInexistent(c *gc.C) {
177
exists, err := s.stubMgr.Exists(s.name, s.conf)
178
c.Assert(err, gc.IsNil)
179
c.Assert(exists, jc.IsFalse)
182
c.Assert(err, gc.IsNil)
184
s.stub.CheckCallNames(c, "listServices")
187
func (s *serviceSuite) TestInstalled(c *gc.C) {
188
err := s.mgr.Install()
189
c.Assert(err, gc.IsNil)
191
exists, err := s.mgr.Installed()
192
c.Assert(err, gc.IsNil)
193
c.Assert(exists, jc.IsTrue)
195
s.stub.CheckCallNames(c, "listServices", "Create", "listServices")
198
func (s *serviceSuite) TestInstalledListError(c *gc.C) {
199
err := s.mgr.Install()
200
c.Assert(err, gc.IsNil)
202
listErr := errors.New("random error")
203
s.stub.SetErrors(listErr)
205
exists, err := s.mgr.Installed()
206
c.Assert(err.Error(), gc.Equals, listErr.Error())
207
c.Assert(exists, jc.IsFalse)