示例#1
0
        protected async Task <ILeverConfiguration> FetchConfigurationWithRetriesOnFailAsync(CancellationToken cancellationToken = default)
        {
            ILeverConfiguration configuration = null;
            var maxRetryTimeSecondsString     = new ConfigurationManagerAppSettings().GetAppSetting("MaxStartupRetryTimeInSeconds") ?? "100";
            var failCount = 0;

            var watch = Stopwatch.StartNew();

            while (watch.Elapsed < TimeSpan.FromSeconds(double.Parse(maxRetryTimeSecondsString)))
            {
                try
                {
                    configuration = await FetchConfigurationAsync(cancellationToken);

                    if (configuration != null)
                    {
                        break;
                    }
                }
                catch (Exception e)
                {
                    failCount++;
                    LogHelper.FallbackSafeLog(LogSeverityLevel.Warning,
                                              $"(InstanceId: {Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID")}) " +
                                              $"Failed to fetch configuration for service tenant {ServiceTenant}." +
                                              $" This was try number {failCount} after {watch.Elapsed.TotalSeconds} s.", e);

                    await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
                }
            }

            return(configuration);
        }
        public void ReadNestedSettingFromJsonFile()
        {
            var getter = new ConfigurationManagerAppSettings().WithLocalSettingsSupport(new FileInfo("Application/appsettings.json"));

            UT.Assert.IsNull(getter.GetAppSetting("FruitsAndStars"), "Only stringy values should be supported");
        }
        public void ReadSimpleSettingsFromJsonFile()
        {
            var getter = new ConfigurationManagerAppSettings().WithLocalSettingsSupport(new FileInfo("Application/appsettings.json"));

            UT.Assert.AreEqual("Bar", getter.GetAppSetting("Foo"));
        }