don't attempt to run in service mode if service is not installed.

pull/2/head
kay.one 11 years ago
parent bfa817922e
commit 9689b07d5b

@ -62,7 +62,7 @@ namespace NzbDrone.App.Test
[TestCase(ApplicationModes.InstallService)] [TestCase(ApplicationModes.InstallService)]
[TestCase(ApplicationModes.UninstallService)] [TestCase(ApplicationModes.UninstallService)]
[TestCase(ApplicationModes.Help)] [TestCase(ApplicationModes.Help)]
public void Route_should_call_service_start_when_run_in_service_more(ApplicationModes applicationModes) public void Route_should_call_service_start_when_run_in_service_mode(ApplicationModes applicationModes)
{ {
var envMock = Mocker.GetMock<IRuntimeInfo>(); var envMock = Mocker.GetMock<IRuntimeInfo>();
var serviceProvider = Mocker.GetMock<IServiceProvider>(); var serviceProvider = Mocker.GetMock<IServiceProvider>();
@ -70,6 +70,7 @@ namespace NzbDrone.App.Test
envMock.SetupGet(c => c.IsUserInteractive).Returns(false); envMock.SetupGet(c => c.IsUserInteractive).Returns(false);
serviceProvider.Setup(c => c.Run(It.IsAny<ServiceBase>())); serviceProvider.Setup(c => c.Run(It.IsAny<ServiceBase>()));
serviceProvider.Setup(c => c.ServiceExist(It.IsAny<string>())).Returns(true);
Subject.Route(applicationModes); Subject.Route(applicationModes);

@ -15,7 +15,6 @@ namespace NzbDrone.Common
void Install(string serviceName); void Install(string serviceName);
void UnInstall(string serviceName); void UnInstall(string serviceName);
void Run(ServiceBase service); void Run(ServiceBase service);
ServiceController GetService(string serviceName);
void Stop(string serviceName); void Stop(string serviceName);
void Start(string serviceName); void Start(string serviceName);
} }
@ -26,7 +25,7 @@ namespace NzbDrone.Common
private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public virtual bool ServiceExist(string name) public bool ServiceExist(string name)
{ {
Logger.Debug("Checking if service {0} exists.", name); Logger.Debug("Checking if service {0} exists.", name);
return return
@ -34,7 +33,7 @@ namespace NzbDrone.Common
s => String.Equals(s.ServiceName, name, StringComparison.InvariantCultureIgnoreCase)); s => String.Equals(s.ServiceName, name, StringComparison.InvariantCultureIgnoreCase));
} }
public virtual bool IsServiceRunning(string name) public bool IsServiceRunning(string name)
{ {
Logger.Debug("Checking if '{0}' service is running", name); Logger.Debug("Checking if '{0}' service is running", name);
@ -42,13 +41,13 @@ namespace NzbDrone.Common
.SingleOrDefault(s => String.Equals(s.ServiceName, name, StringComparison.InvariantCultureIgnoreCase)); .SingleOrDefault(s => String.Equals(s.ServiceName, name, StringComparison.InvariantCultureIgnoreCase));
return service != null && ( return service != null && (
service.Status != ServiceControllerStatus.Stopped || service.Status != ServiceControllerStatus.Stopped ||
service.Status == ServiceControllerStatus.StopPending || service.Status == ServiceControllerStatus.StopPending ||
service.Status == ServiceControllerStatus.Paused || service.Status == ServiceControllerStatus.Paused ||
service.Status == ServiceControllerStatus.PausePending); service.Status == ServiceControllerStatus.PausePending);
} }
public virtual void Install(string serviceName) public void Install(string serviceName)
{ {
Logger.Info("Installing service '{0}'", serviceName); Logger.Info("Installing service '{0}'", serviceName);
@ -77,7 +76,7 @@ namespace NzbDrone.Common
Logger.Info("Service Has installed successfully."); Logger.Info("Service Has installed successfully.");
} }
public virtual void UnInstall(string serviceName) public void UnInstall(string serviceName)
{ {
Logger.Info("Uninstalling {0} service", serviceName); Logger.Info("Uninstalling {0} service", serviceName);
@ -93,17 +92,17 @@ namespace NzbDrone.Common
Logger.Info("{0} successfully uninstalled", serviceName); Logger.Info("{0} successfully uninstalled", serviceName);
} }
public virtual void Run(ServiceBase service) public void Run(ServiceBase service)
{ {
ServiceBase.Run(service); ServiceBase.Run(service);
} }
public virtual ServiceController GetService(string serviceName) public ServiceController GetService(string serviceName)
{ {
return ServiceController.GetServices().FirstOrDefault(c => String.Equals(c.ServiceName, serviceName, StringComparison.InvariantCultureIgnoreCase)); return ServiceController.GetServices().FirstOrDefault(c => String.Equals(c.ServiceName, serviceName, StringComparison.InvariantCultureIgnoreCase));
} }
public virtual void Stop(string serviceName) public void Stop(string serviceName)
{ {
Logger.Info("Stopping {0} Service...", serviceName); Logger.Info("Stopping {0} Service...", serviceName);
var service = GetService(serviceName); var service = GetService(serviceName);
@ -136,7 +135,7 @@ namespace NzbDrone.Common
} }
} }
public virtual void Start(string serviceName) public void Start(string serviceName)
{ {
Logger.Info("Starting {0} Service...", serviceName); Logger.Info("Starting {0} Service...", serviceName);
var service = GetService(serviceName); var service = GetService(serviceName);

@ -32,7 +32,7 @@ namespace NzbDrone.Host
public void Route(ApplicationModes applicationModes) public void Route(ApplicationModes applicationModes)
{ {
if (!_runtimeInfo.IsUserInteractive && !OsInfo.IsLinux) if (!_runtimeInfo.IsUserInteractive && !OsInfo.IsLinux &&_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
{ {
applicationModes = ApplicationModes.Service; applicationModes = ApplicationModes.Service;
} }

Loading…
Cancel
Save