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()); }
/// <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));
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(); }
/// <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) { }
public GrayListModifier([NotNull] IGrayPeriodProvider grayPeriodProvider, [CanBeNull] ILog log) : this(grayPeriodProvider, new TimeProvider(), log) { }