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 }