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  }