github.com/Pankov404/juju@v0.0.0-20150703034450-be266991dceb/service/windows/service_test.go (about) 1 package windows_test 2 3 import ( 4 coretesting "github.com/juju/juju/testing" 5 "github.com/juju/testing" 6 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/service/common" 12 "github.com/juju/juju/service/windows" 13 ) 14 15 type serviceSuite struct { 16 coretesting.BaseSuite 17 18 name string 19 conf common.Conf 20 execPath string 21 22 stub *testing.Stub 23 stubMgr *windows.StubSvcManager 24 25 svcExistsErr error 26 27 mgr *windows.Service 28 } 29 30 var _ = gc.Suite(&serviceSuite{}) 31 32 func (s *serviceSuite) SetUpTest(c *gc.C) { 33 s.BaseSuite.SetUpTest(c) 34 var err error 35 s.execPath = `C:\juju\bin\jujud.exe` 36 s.stub = &testing.Stub{} 37 s.stubMgr = windows.PatchServiceManager(s, s.stub) 38 39 // Set up the service. 40 s.name = "machine-1" 41 s.conf = common.Conf{ 42 Desc: "service for " + s.name, 43 ExecStart: s.execPath + " " + s.name, 44 } 45 46 s.svcExistsErr = errors.New("Service machine-1 already installed") 47 48 s.mgr, err = windows.NewService(s.name, s.conf) 49 c.Assert(err, gc.IsNil) 50 51 // Clear services 52 s.stubMgr.Clear() 53 s.stub.ResetCalls() 54 } 55 56 func (s *serviceSuite) TestInstall(c *gc.C) { 57 err := s.mgr.Install() 58 c.Assert(err, gc.IsNil) 59 60 exists, err := s.stubMgr.Exists(s.name, s.conf) 61 c.Assert(err, gc.IsNil) 62 c.Assert(exists, jc.IsTrue) 63 64 s.stub.CheckCallNames(c, "listServices", "Create") 65 } 66 67 func (s *serviceSuite) TestInstallAlreadyExists(c *gc.C) { 68 err := s.mgr.Install() 69 c.Assert(err, gc.IsNil) 70 71 exists, err := s.stubMgr.Exists(s.name, s.conf) 72 c.Assert(err, gc.IsNil) 73 c.Assert(exists, jc.IsTrue) 74 75 err = s.mgr.Install() 76 c.Assert(err.Error(), gc.Equals, s.svcExistsErr.Error()) 77 78 s.stub.CheckCallNames(c, "listServices", "Create", "listServices") 79 } 80 81 func (s *serviceSuite) TestStop(c *gc.C) { 82 err := s.mgr.Install() 83 c.Assert(err, gc.IsNil) 84 85 running, err := s.mgr.Running() 86 c.Assert(err, gc.IsNil) 87 c.Assert(running, jc.IsFalse) 88 89 err = s.mgr.Start() 90 c.Assert(err, gc.IsNil) 91 92 running, err = s.mgr.Running() 93 c.Assert(err, gc.IsNil) 94 c.Assert(running, jc.IsTrue) 95 96 err = s.mgr.Stop() 97 c.Assert(err, gc.IsNil) 98 99 running, err = s.mgr.Running() 100 c.Assert(err, gc.IsNil) 101 c.Assert(running, jc.IsFalse) 102 } 103 104 func (s *serviceSuite) TestStopStart(c *gc.C) { 105 err := s.mgr.Install() 106 c.Assert(err, gc.IsNil) 107 108 running, err := s.mgr.Running() 109 c.Assert(err, gc.IsNil) 110 c.Assert(running, jc.IsFalse) 111 112 err = s.mgr.Start() 113 c.Assert(err, gc.IsNil) 114 115 running, err = s.mgr.Running() 116 c.Assert(err, gc.IsNil) 117 c.Assert(running, jc.IsTrue) 118 119 err = s.mgr.Stop() 120 c.Assert(err, gc.IsNil) 121 122 running, err = s.mgr.Running() 123 c.Assert(err, gc.IsNil) 124 c.Assert(running, jc.IsFalse) 125 126 err = s.mgr.Start() 127 c.Assert(err, gc.IsNil) 128 129 running, err = s.mgr.Running() 130 c.Assert(err, gc.IsNil) 131 c.Assert(running, jc.IsTrue) 132 } 133 134 func (s *serviceSuite) TestRemove(c *gc.C) { 135 err := s.mgr.Install() 136 c.Assert(err, gc.IsNil) 137 138 exists, err := s.stubMgr.Exists(s.name, s.conf) 139 c.Assert(err, gc.IsNil) 140 c.Assert(exists, jc.IsTrue) 141 142 err = s.mgr.Remove() 143 c.Assert(err, gc.IsNil) 144 145 exists, err = s.stubMgr.Exists(s.name, s.conf) 146 c.Assert(err, gc.IsNil) 147 c.Assert(exists, jc.IsFalse) 148 149 s.stub.CheckCallNames(c, "listServices", "Create", "listServices", "listServices", "Running", "Delete") 150 } 151 152 func (s *serviceSuite) TestRemoveRunningService(c *gc.C) { 153 err := s.mgr.Install() 154 c.Assert(err, gc.IsNil) 155 156 exists, err := s.stubMgr.Exists(s.name, s.conf) 157 c.Assert(err, gc.IsNil) 158 c.Assert(exists, jc.IsTrue) 159 160 err = s.mgr.Start() 161 c.Assert(err, gc.IsNil) 162 163 err = s.mgr.Remove() 164 c.Assert(err, gc.IsNil) 165 166 exists, err = s.stubMgr.Exists(s.name, s.conf) 167 c.Assert(err, gc.IsNil) 168 c.Assert(exists, jc.IsFalse) 169 170 s.stub.CheckCallNames(c, "listServices", "Create", "listServices", "Running", "Start", "listServices", "listServices", "Running", "Stop", "Delete") 171 } 172 173 func (s *serviceSuite) TestRemoveInexistent(c *gc.C) { 174 exists, err := s.stubMgr.Exists(s.name, s.conf) 175 c.Assert(err, gc.IsNil) 176 c.Assert(exists, jc.IsFalse) 177 178 err = s.mgr.Remove() 179 c.Assert(err, gc.IsNil) 180 181 s.stub.CheckCallNames(c, "listServices") 182 } 183 184 func (s *serviceSuite) TestInstalled(c *gc.C) { 185 err := s.mgr.Install() 186 c.Assert(err, gc.IsNil) 187 188 exists, err := s.mgr.Installed() 189 c.Assert(err, gc.IsNil) 190 c.Assert(exists, jc.IsTrue) 191 192 s.stub.CheckCallNames(c, "listServices", "Create", "listServices") 193 } 194 195 func (s *serviceSuite) TestInstalledListError(c *gc.C) { 196 err := s.mgr.Install() 197 c.Assert(err, gc.IsNil) 198 199 listErr := errors.New("random error") 200 s.stub.SetErrors(listErr) 201 202 exists, err := s.mgr.Installed() 203 c.Assert(err.Error(), gc.Equals, listErr.Error()) 204 c.Assert(exists, jc.IsFalse) 205 }