1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-09-11 12:02:35 +02:00

better routing.

This commit is contained in:
kay.one 2013-08-13 21:02:56 -07:00
parent 3b4eacdd31
commit ddff598ba4
4 changed files with 22 additions and 19 deletions

View File

@ -58,11 +58,8 @@ public void Route_should_call_console_service_when_application_mode_is_console()
Mocker.GetMock<INzbDroneServiceFactory>().Verify(c => c.Start(), Times.Once()); Mocker.GetMock<INzbDroneServiceFactory>().Verify(c => c.Start(), Times.Once());
} }
[TestCase(ApplicationModes.Interactive)] [Test]
[TestCase(ApplicationModes.InstallService)] public void Route_should_call_service_start_when_run_in_service_mode()
[TestCase(ApplicationModes.UninstallService)]
[TestCase(ApplicationModes.Help)]
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>();
@ -71,8 +68,9 @@ public void Route_should_call_service_start_when_run_in_service_mode(Application
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); serviceProvider.Setup(c => c.ServiceExist(It.IsAny<string>())).Returns(true);
serviceProvider.Setup(c => c.GetStatus(It.IsAny<string>())).Returns(ServiceControllerStatus.StartPending);
Subject.Route(applicationModes); Subject.Route();
serviceProvider.Verify(c => c.Run(It.IsAny<ServiceBase>()), Times.Once()); serviceProvider.Verify(c => c.Run(It.IsAny<ServiceBase>()), Times.Once());
} }
@ -90,7 +88,6 @@ public void show_error_on_install_if_service_already_exist()
Subject.Route(ApplicationModes.InstallService); Subject.Route(ApplicationModes.InstallService);
Mocker.VerifyAllMocks();
} }
[Test] [Test]
@ -105,7 +102,6 @@ public void show_error_on_uninstall_if_service_doesnt_exist()
Subject.Route(ApplicationModes.UninstallService); Subject.Route(ApplicationModes.UninstallService);
Mocker.VerifyAllMocks();
} }
} }
} }

View File

@ -34,8 +34,8 @@ public void PrintHelp()
Console.WriteLine(); Console.WriteLine();
Console.WriteLine(" Usage: {0} <command> ", Process.GetCurrentProcess().MainModule.ModuleName); Console.WriteLine(" Usage: {0} <command> ", Process.GetCurrentProcess().MainModule.ModuleName);
Console.WriteLine(" Commands:"); Console.WriteLine(" Commands:");
Console.WriteLine(" /{0} Install the application as a Windows Service ({1}).",StartupArguments.INSTALL_SERVICE, ServiceProvider.NZBDRONE_SERVICE_NAME); Console.WriteLine(" /{0} Install the application as a Windows Service ({1}).",StartupArguments.INSTALL_SERVICE, ServiceProvider.NZBDRONE_SERVICE_NAME);
Console.WriteLine(" /{0} Uninstall already installed Windows Service ({1}).",StartupArguments.UNINSTALL_SERVICE, ServiceProvider.NZBDRONE_SERVICE_NAME); Console.WriteLine(" /{0} Uninstall already installed Windows Service ({1}).",StartupArguments.UNINSTALL_SERVICE, ServiceProvider.NZBDRONE_SERVICE_NAME);
Console.WriteLine(" /{0} Don't open NzbDrone in a browser", StartupArguments.NO_BROWSER); Console.WriteLine(" /{0} Don't open NzbDrone in a browser", StartupArguments.NO_BROWSER);
Console.WriteLine(" <No Arguments> Run application in console mode."); Console.WriteLine(" <No Arguments> Run application in console mode.");
} }

View File

@ -18,6 +18,7 @@ public interface IServiceProvider
ServiceController GetService(string serviceName); ServiceController GetService(string serviceName);
void Stop(string serviceName); void Stop(string serviceName);
void Start(string serviceName); void Start(string serviceName);
ServiceControllerStatus GetStatus(string serviceName);
} }
public class ServiceProvider : IServiceProvider public class ServiceProvider : IServiceProvider
@ -136,7 +137,13 @@ public virtual void Stop(string serviceName)
} }
} }
public virtual void Start(string serviceName)
public ServiceControllerStatus GetStatus(string serviceName)
{
return GetService(serviceName).Status;
}
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);

View File

@ -93,6 +93,14 @@ public void Route(ApplicationModes applicationModes)
private ApplicationModes GetApplicationMode() private ApplicationModes GetApplicationMode()
{ {
if (!_runtimeInfo.IsUserInteractive &&
OsInfo.IsWindows &&
_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME) &&
_serviceProvider.GetStatus(ServiceProvider.NZBDRONE_SERVICE_NAME) == ServiceControllerStatus.StartPending)
{
return ApplicationModes.Service;
}
if (_startupArguments.Flags.Contains(StartupArguments.HELP)) if (_startupArguments.Flags.Contains(StartupArguments.HELP))
{ {
return ApplicationModes.Help; return ApplicationModes.Help;
@ -108,14 +116,6 @@ private ApplicationModes GetApplicationMode()
return ApplicationModes.UninstallService; return ApplicationModes.UninstallService;
} }
if (!_runtimeInfo.IsUserInteractive &&
OsInfo.IsWindows &&
_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME) &&
_serviceProvider.GetService(ServiceProvider.NZBDRONE_SERVICE_NAME).Status == ServiceControllerStatus.StartPending)
{
return ApplicationModes.Service;
}
return ApplicationModes.Interactive; return ApplicationModes.Interactive;
} }
} }