Пример #1
0
        internal GrayListModifier([NotNull] IGrayPeriodProvider grayPeriodProvider, [NotNull] ITimeProvider timeProvider, [CanBeNull] ILog log)
        {
            if (grayPeriodProvider == null)
            {
                throw new ArgumentNullException(nameof(grayPeriodProvider));
            }

            if (timeProvider == null)
            {
                throw new ArgumentNullException(nameof(timeProvider));
            }

            this.grayPeriodProvider = grayPeriodProvider;
            this.timeProvider       = timeProvider;
            this.log = log ?? new SilentLog();
        }
        public void SetUp()
        {
            weight   = 1.0;
            request  = Request.Get("foo/bar");
            replica1 = new Uri("http://replica1");
            replica2 = new Uri("http://replica2");
            replicas = new List <Uri> {
                replica1, replica2
            };
            storage = new ConcurrentDictionary <Uri, DateTime>();

            storageProvider = Substitute.For <IReplicaStorageProvider>();
            storageProvider.Obtain <DateTime>(Arg.Any <string>()).Returns(storage);

            periodProvider = Substitute.For <IGrayPeriodProvider>();
            periodProvider.GetGrayPeriod().Returns(5.Minutes());

            timeProvider = Substitute.For <ITimeProvider>();
            timeProvider.GetCurrentTime().Returns(currentTime = DateTime.UtcNow);

            modifier = new GrayListModifier(periodProvider, timeProvider, new ConsoleLog());
        }
Пример #3
0
 /// <summary>
 /// Adds a <see cref="GrayListModifier"/> with given <paramref name="grayPeriodProvider"/> to the chain.
 /// </summary>
 public static void AddGrayListModifier(this IWeighedReplicaOrderingBuilder builder, IGrayPeriodProvider grayPeriodProvider) =>
 builder.AddModifier(new GrayListModifier(grayPeriodProvider, builder.Log));
Пример #4
0
 internal GrayListModifier([NotNull] IGrayPeriodProvider grayPeriodProvider, [NotNull] Func <DateTime> getCurrentTime, [CanBeNull] ILog log)
 {
     this.grayPeriodProvider = grayPeriodProvider ?? throw new ArgumentNullException(nameof(grayPeriodProvider));
     this.getCurrentTime     = getCurrentTime ?? throw new ArgumentNullException(nameof(getCurrentTime));
     this.log = log ?? new SilentLog();
 }
Пример #5
0
 /// <param name="grayPeriodProvider">A gray periods provider</param>
 /// <param name="log"><see cref="ILog"/> instance.</param>
 public GrayListModifier([NotNull] IGrayPeriodProvider grayPeriodProvider, [CanBeNull] ILog log)
     : this(grayPeriodProvider, () => DateTime.UtcNow, log)
 {
 }
Пример #6
0
 public GrayListModifier([NotNull] IGrayPeriodProvider grayPeriodProvider, [CanBeNull] ILog log)
     : this(grayPeriodProvider, new TimeProvider(), log)
 {
 }