/// <summary> /// Initializes a new instance of the <see cref="ServiceArguments"/> class, explicitly specifying the arguments. /// Typically used in tests. /// </summary> /// <param name="serviceStartupMode">Optional. The service startup mode to use.</param> /// <param name="consoleOutputMode">Optional. The console output mode to use.</param> /// <param name="basePortOverride">Optional. The base port override to use, or null to not override the base port.</param> public ServiceArguments(ServiceStartupMode serviceStartupMode = ServiceStartupMode.Unspecified, ConsoleOutputMode consoleOutputMode = ConsoleOutputMode.Unspecified, int?basePortOverride = null, string instanceName = null, int?shutdownWhenPidExits = null, int?slotNumber = null, int?shutdownWaitTimeSec = null, int?serviceDrainTimeSec = null) { ServiceStartupMode = serviceStartupMode; ConsoleOutputMode = consoleOutputMode; BasePortOverride = basePortOverride; InstanceName = instanceName; ShutdownWhenPidExits = shutdownWhenPidExits; SlotNumber = slotNumber; OnStopWaitTimeSec = shutdownWaitTimeSec; ApplyDefaults(); }
protected virtual ServiceArguments GetServiceArguments(int?basePortOverride, bool isSecondary, int?shutdownWaitTime, ServiceStartupMode startupMode = ServiceStartupMode.CommandLineNonInteractive) { if (isSecondary && basePortOverride == null) { throw new ArgumentException("You must specify a basePortOverride when running a secondary silo."); } var siloClusterMode = isSecondary ? SiloClusterMode.SecondaryNode : SiloClusterMode.PrimaryNode; ServiceArguments arguments = new ServiceArguments(startupMode, basePortOverride: basePortOverride, siloClusterMode: siloClusterMode, shutdownWaitTimeSec: shutdownWaitTime); if (basePortOverride != null) { return(arguments); } var commonConfig = new BaseCommonConfig(); var mapper = new OrleansServiceInterfaceMapper(new AssemblyProvider(new ApplicationDirectoryProvider(commonConfig), commonConfig, Log)); var basePort = mapper.ServiceInterfaceTypes.First().GetCustomAttribute <HttpServiceAttribute>().BasePort; return(new ServiceArguments(startupMode, basePortOverride: basePort, shutdownWaitTimeSec: shutdownWaitTime)); }
public NonOrleansServiceTester(int basePortOverride, IResolutionRoot resolutionRoot, TimeSpan?shutdownWaitTime = null, ServiceStartupMode startupMode = ServiceStartupMode.CommandLineNonInteractive) { var serviceArguments = GetServiceArguments(basePortOverride, false, shutdownWaitTime.HasValue?(int?)shutdownWaitTime.Value.TotalSeconds:null, startupMode); BasePort = basePortOverride; ResolutionRoot = resolutionRoot; _stopTask = _host.RunAsync(serviceArguments); }
public static NonOrleansServiceTester <TServiceHost> GetServiceTesterForNonOrleansService <TServiceHost>(this IResolutionRoot kernel, int?basePortOverride = null, TimeSpan?shutdownWaitTime = null, ServiceStartupMode startupMode = ServiceStartupMode.CommandLineNonInteractive) where TServiceHost : ServiceHostBase, new() { var tester = kernel.Get <NonOrleansServiceTester <TServiceHost> >( new ConstructorArgument(nameof(basePortOverride), basePortOverride), new ConstructorArgument(nameof(shutdownWaitTime), shutdownWaitTime), new ConstructorArgument(nameof(startupMode), startupMode)); return(tester); }