/// <summary> /// Creates a new instance of <see cref="ClusterConfigClient"/> with given <paramref name="settings"/> merged with default settings from <see cref="DefaultSettingsProvider"/> (non-default user settings take priority). /// </summary> public ClusterConfigClient([NotNull] ClusterConfigClientSettings settings) { this.settings = settings = ConfigurationMerger.Merge(DefaultSettingsProvider.Settings, settings ?? throw new ArgumentNullException(nameof(settings))); log = settings.Log.ForContext <ClusterConfigClient>(); stateSource = new TaskCompletionSource <ClusterConfigClientState>(TaskCreationOptions.RunContinuationsAsynchronously); stateObservable = new CachingObservable <ClusterConfigClientState>(); clientState = new AtomicInt(State_NotStarted); cancellationSource = new CancellationTokenSource(); observablePropagationLock = new object(); }
public void Should_preserve_non_default_values_from_user_settings() { foreach (var(propertyName, nonDefaultValue, _) in EnumerateNonDefaultValues()) { var baseSettings = new ClusterConfigClientSettings(); var userSettings = new ClusterConfigClientSettings(); typeof(ClusterConfigClientSettings).GetProperty(propertyName).SetValue(userSettings, nonDefaultValue); var mergedSettings = ConfigurationMerger.Merge(baseSettings, userSettings); typeof(ClusterConfigClientSettings).GetProperty(propertyName).GetValue(mergedSettings).Should().Be(nonDefaultValue); } }
public void Should_correctly_merge_two_default_settings_instances() { ConfigurationMerger.Merge(new ClusterConfigClientSettings(), new ClusterConfigClientSettings()) .Should().BeEquivalentTo(new ClusterConfigClientSettings()); }
public static void Main(string[] args) { Badger.Common.Diagnostics.Logging.ApplySimpleConfiguation(); var Configurations = new List <PackagerConfiguration>() { MyConfig(), MyConfig().WithDefaults(), Defaults.Configuration(), }; var Parser = new Mono.Options.OptionSet() { { "from-json=", "Specify a json file to load packaging options from", x => { try { var Instance = Badger.Common.Serialization.EasyJsonSerializer.Instance.FromFile <PackagerConfiguration>(x); var Defaults = Instance.WithDefaults(); Configurations.InsertRange(0, new[] { Instance, Defaults }); } catch (Exception ex) { } } }, { "create-package", "create the package specified by all the options", x => { var Config = ConfigurationMerger.Many((x, y) => ConfigurationMerger.Merge(x, y), Configurations); Config.InvokeConfiguration(); } }, { "verbosity=", "set the desired log verbosity", x => { } }, { "to-json=", "Specify a json file to save packaging options to.", x => { try { var Config = ConfigurationMerger.Many((x, y) => ConfigurationMerger.Merge(x, y), Configurations); EasyJsonSerializer.Instance.ToFile(Config, x); } catch (Exception ex) { } } } }; args = new[] { $@"-to-json=C:\Users\TonyValenti\Documents\test.json", $@"-create-package" }; var F = Parser.Parse(args); }