private static FallbackOptions BindExtendedOptions(IConfiguration extendedConfiguration) { var fallbackOptions = new FallbackOptions(); extendedConfiguration.Bind(fallbackOptions); return fallbackOptions; }
/// <summary>Build a cluster configuration.</summary> /// <param name="baseSiloPort">Base port number to use for silos</param> /// <param name="baseGatewayPort">Base port number to use for silo's gateways</param> /// <param name="silosCount">The number of initial silos to deploy.</param> /// <param name="extendedOptions">The extended fallback options.</param> /// <returns>The builded cluster configuration</returns> public static ClusterConfiguration BuildClusterConfiguration(int baseSiloPort, int baseGatewayPort, int silosCount, FallbackOptions extendedOptions) { var config = ClusterConfiguration.LocalhostPrimarySilo(baseSiloPort, baseGatewayPort); config.Globals.DeploymentId = CreateDeploymentId(baseSiloPort); if (extendedOptions.TraceToConsole.HasValue) { config.Defaults.TraceToConsole = extendedOptions.TraceToConsole.Value; } var defaultLogsFolder = extendedOptions.LogsFolder; if (!string.IsNullOrWhiteSpace(defaultLogsFolder)) { if (!Directory.Exists(defaultLogsFolder)) { Directory.CreateDirectory(defaultLogsFolder); } config.Defaults.TraceFilePattern = $"{defaultLogsFolder}\\{config.Defaults.TraceFilePattern}"; } AddNodeConfiguration(config, Silo.SiloType.Primary, 0, baseSiloPort, baseGatewayPort); for (short instanceNumber = 1; instanceNumber < silosCount; instanceNumber++) { AddNodeConfiguration(config, Silo.SiloType.Secondary, instanceNumber, baseSiloPort, baseGatewayPort); } config.Globals.ExpectedClusterSize = silosCount; config.AdjustForTestEnvironment(extendedOptions.DataConnectionString); return config; }
/// <summary> /// Initializes a new instance of <see cref="TestClusterOptions"/>. /// </summary> /// <param name="extendedFallbackOptions">Fallback options to use when they are not explicitly specified in the <see cref="ClusterConfiguration"/>.</param> public TestClusterOptions(FallbackOptions extendedFallbackOptions) { this.BaseSiloPort = ThreadSafeRandom.Next(22300, 30000); this.BaseGatewayPort = ThreadSafeRandom.Next(40000, 50000); this.ExtendedFallbackOptions = extendedFallbackOptions; }
/// <summary>Build a cluster configuration.</summary> /// <param name="baseSiloPort">Base port number to use for silos</param> /// <param name="baseGatewayPort">Base port number to use for silo's gateways</param> /// <param name="silosCount">The number of initial silos to deploy.</param> /// <param name="extendedOptions">The extended fallback options.</param> /// <returns>The builded cluster configuration</returns> public static ClusterConfiguration BuildClusterConfiguration(int baseSiloPort, int baseGatewayPort, int silosCount, FallbackOptions extendedOptions) { var config = ClusterConfiguration.LocalhostPrimarySilo(baseSiloPort, baseGatewayPort); config.Globals.DeploymentId = CreateDeploymentId(baseSiloPort); AddNodeConfiguration(config, Silo.SiloType.Primary, 0, baseSiloPort, baseGatewayPort); for (short instanceNumber = 1; instanceNumber < silosCount; instanceNumber++) { AddNodeConfiguration(config, Silo.SiloType.Secondary, instanceNumber, baseSiloPort, baseGatewayPort); } config.Globals.ExpectedClusterSize = silosCount; config.Globals.AssumeHomogenousSilosForTesting = true; config.AdjustForTestEnvironment(extendedOptions.DataConnectionString); return(config); }