Esempio n. 1
0
        /// <summary>
        /// Get the file details for the specified resource
        /// </summary>
        /// <param name="resource">A resource to load</param>
        /// <returns>File datails</returns>
        private IResourceDetails GetFileDetails(IResource resource)
        {
            RetryPolicy  retryPolicy  = RetryPolicy ?? RetryPolicy.None;
            RetryCounter retryCounter = new RetryCounter(retryPolicy);
            int          iteration    = 0;
            Tuple <ResourceReadStatus, IResourceDetails> finalStatus = retryCounter.Run(
                () =>
            {
                iteration++;
                ULSLogging.LogTraceTag(0x238208cd /* tag_9669n */, Categories.ConfigurationDataSet, Levels.Verbose,
                                       "Attempting data set load for resource '{0}' in iteration '{1}' of '{2}'.",
                                       resource.Name, iteration, retryPolicy.RetryLimit);

                Tuple <ResourceReadStatus, IResourceDetails> status = resource.Read();
                return(Tuple.Create(status.Item1 == ResourceReadStatus.Success, status));
            });

            if (finalStatus.Item1 != ResourceReadStatus.Success)
            {
                ULSLogging.LogTraceTag(0x238208ce /* tag_9669o */, Categories.ConfigurationDataSet, Levels.Warning,
                                       "Failed to read resource '{0}' as the file read status is '{1}'.",
                                       resource.Name, finalStatus);
                return(null);
            }

            return(finalStatus.Item2);
        }
Esempio n. 2
0
        private void DoNumberOfCallsTesting(RetryCounter retryCounter, int expectedNumbersOfCall)
        {
            AtomicCounter callsCount = new AtomicCounter();
            int           result     = retryCounter.Run(() => TestFunc(callsCount));

            Assert.Equal(expectedNumbersOfCall, result);
        }
Esempio n. 3
0
        public void RetryCounter_AttemptsShouldStopOnSuccessfullCall()
        {
            int          retryLimit = 10;
            RetryPolicy  policy     = new RetryPolicy(null, 0, retryLimit);
            RetryCounter counter    = new RetryCounter(policy);

            DoNumberOfCallsTesting(counter, SuccessfulCallNumber);
        }
Esempio n. 4
0
        public void RetryCounter_ZeroLimit_PerformsNoAttempts()
        {
            int          exponent   = 5;
            int          retryLimit = 0;
            RetryPolicy  policy     = new RetryPolicy(new LinearBackoffPolicy(), exponent, retryLimit);
            RetryCounter counter    = new RetryCounter(policy);

            DoNumberOfCallsTesting(counter, 1);
        }
Esempio n. 5
0
        public void RetryCounter_CounterMakesExpectedNumberOfAttempts()
        {
            int          exponent   = 5;
            int          retryLimit = 3;
            RetryPolicy  policy     = new RetryPolicy(new LinearBackoffPolicy(), exponent, retryLimit);
            RetryCounter counter    = new RetryCounter(policy);

            DoNumberOfCallsTesting(counter, retryLimit + 1);
        }