From e8fe9e16c3a6b8ae0e372548e4796a860ddb002a Mon Sep 17 00:00:00 2001 From: Daniel Theophanes Date: Wed, 29 Oct 2014 09:05:24 -0700 Subject: [PATCH] fix upstart detect. Add platform test. --- name_test.go | 15 +++++++++++++++ service.go | 1 + service_darwin.go | 6 ++++++ service_linux.go | 6 +++++- service_windows.go | 6 ++++++ 5 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 name_test.go diff --git a/name_test.go b/name_test.go new file mode 100644 index 0000000..e661f15 --- /dev/null +++ b/name_test.go @@ -0,0 +1,15 @@ +package service + +import ( + "testing" +) + +func TestPlatformName(t *testing.T) { + s, err := NewServiceConfig(&Config{ + Name: "Test", + }) + if err != nil { + t.Errorf("Failed to create service: %v", err) + } + t.Logf("Platform is %s", s.String()) +} diff --git a/service.go b/service.go index e051a49..84183dc 100644 --- a/service.go +++ b/service.go @@ -89,6 +89,7 @@ type Service interface { Controller Runner Logger + String() string } // A Generic way to stop and start a service. diff --git a/service_darwin.go b/service_darwin.go index 379be5a..334e974 100644 --- a/service_darwin.go +++ b/service_darwin.go @@ -32,6 +32,12 @@ type darwinLaunchdService struct { logger *syslog.Writer } +const version = "Darwin Launchd" + +func (s *darwinLaunchdService) String() string { + return version +} + func (s *darwinLaunchdService) getServiceFilePath() (string, error) { if s.UserService { u, err := user.Current() diff --git a/service_linux.go b/service_linux.go index 2871b38..2474d3b 100644 --- a/service_linux.go +++ b/service_linux.go @@ -45,7 +45,7 @@ func newService(c *Config) (Service, error) { } func isUpstart() bool { - if _, err := os.Stat("/sbin/initctl"); err == nil { + if _, err := os.Stat("/sbin/upstart-udev-bridge"); err == nil { return true } return false @@ -64,6 +64,10 @@ type linuxService struct { logger *syslog.Writer } +func (ls *linuxService) String() string { + return fmt.Sprintf("Linux %s", ls.flavor.String()) +} + type initFlavor uint8 func (f initFlavor) String() string { diff --git a/service_windows.go b/service_windows.go index 487a567..b803e4a 100644 --- a/service_windows.go +++ b/service_windows.go @@ -23,6 +23,12 @@ type windowsService struct { logger *eventlog.Log } +const version = "Windows Service" + +func (ws *windowsService) String() string { + return version +} + func (ws *windowsService) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (ssec bool, errno uint32) { const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown changes <- svc.Status{State: svc.StartPending}