github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/service/windows/stubsvcmanager_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Copyright 2015 Cloudbase Solutions SRL
     3  // Licensed under the AGPLv3, see LICENCE file for details.
     4  
     5  package windows
     6  
     7  import (
     8  	"github.com/juju/testing"
     9  
    10  	"github.com/juju/juju/service/common"
    11  )
    12  
    13  type service struct {
    14  	running bool
    15  
    16  	conf common.Conf
    17  }
    18  
    19  var MgrServices = map[string]*service{}
    20  
    21  type StubSvcManager struct {
    22  	*testing.Stub
    23  }
    24  
    25  func (s *StubSvcManager) Start(name string) error {
    26  	s.Stub.AddCall("Start", name)
    27  
    28  	if svc, ok := MgrServices[name]; !ok {
    29  		return c_ERROR_SERVICE_DOES_NOT_EXIST
    30  	} else {
    31  		svc.running = true
    32  	}
    33  	return nil
    34  }
    35  
    36  func (s *StubSvcManager) Stop(name string) error {
    37  	s.Stub.AddCall("Stop", name)
    38  
    39  	if svc, ok := MgrServices[name]; !ok {
    40  		return c_ERROR_SERVICE_DOES_NOT_EXIST
    41  	} else {
    42  		svc.running = false
    43  	}
    44  	return nil
    45  }
    46  
    47  func (s *StubSvcManager) Delete(name string) error {
    48  	s.Stub.AddCall("Delete", name)
    49  
    50  	if _, ok := MgrServices[name]; !ok {
    51  		return c_ERROR_SERVICE_DOES_NOT_EXIST
    52  	}
    53  	delete(MgrServices, name)
    54  	return nil
    55  }
    56  
    57  func (s *StubSvcManager) Create(name string, conf common.Conf) error {
    58  	s.Stub.AddCall("Create", name, conf)
    59  
    60  	if _, ok := MgrServices[name]; ok {
    61  		return c_ERROR_SERVICE_EXISTS
    62  	}
    63  
    64  	MgrServices[name] = &service{
    65  		running: false,
    66  		conf:    conf,
    67  	}
    68  	return nil
    69  }
    70  
    71  func (s *StubSvcManager) Running(name string) (bool, error) {
    72  	s.Stub.AddCall("Running", name)
    73  
    74  	if svc, ok := MgrServices[name]; ok {
    75  		return svc.running, nil
    76  	}
    77  	return false, c_ERROR_SERVICE_DOES_NOT_EXIST
    78  }
    79  
    80  func (s *StubSvcManager) Exists(name string, conf common.Conf) (bool, error) {
    81  	if _, ok := MgrServices[name]; ok {
    82  		return true, nil
    83  	}
    84  	return false, nil
    85  }
    86  
    87  // For now this doesn't do much since it doesn't help us test anything
    88  // but we need it to implement the interface
    89  func (s *StubSvcManager) ChangeServicePassword(name, newPassword string) error {
    90  	s.Stub.AddCall("ChangeServicePassword", name, newPassword)
    91  
    92  	if _, ok := MgrServices[name]; !ok {
    93  		return c_ERROR_SERVICE_DOES_NOT_EXIST
    94  	}
    95  
    96  	return nil
    97  }
    98  
    99  func (s *StubSvcManager) ListServices() ([]string, error) {
   100  	s.Stub.AddCall("listServices")
   101  
   102  	services := []string{}
   103  	for i := range MgrServices {
   104  		services = append(services, i)
   105  	}
   106  	return services, s.NextErr()
   107  }
   108  
   109  func (s *StubSvcManager) Clear() {
   110  	MgrServices = map[string]*service{}
   111  }