public void TestSetup() { replica1 = new Uri("http://replica"); replica2 = new Uri("http://replica"); request = Request.Get("foo/bar"); oneReplicaResult = new ClusterResult( ClusterResultStatus.ReplicasExhausted, new[] { new ReplicaResult(replica1, Responses.Timeout, ResponseVerdict.Reject, TimeSpan.Zero) }, null, request); twoReplicasResult = new ClusterResult( ClusterResultStatus.ReplicasExhausted, new[] { new ReplicaResult(replica1, Responses.Timeout, ResponseVerdict.Reject, TimeSpan.Zero), new ReplicaResult(replica2, Responses.Timeout, ResponseVerdict.Reject, TimeSpan.Zero) }, null, request); context = Substitute.For <IRequestContext>(); context.Log.Returns(new SilentLog()); context.MaximumReplicasToUse.Returns(int.MaxValue); options = new ReplicaBudgetingOptions(Guid.NewGuid().ToString(), 1, MinimumRequests, CriticalRatio); module = new ReplicaBudgetingModule(options); }
/// <summary> /// Sets up a replica budgeting mechanism with given parameters. /// </summary> /// <param name="configuration">A configuration to be modified.</param> /// <param name="storageKey">See <see cref="ReplicaBudgetingOptions.StorageKey"/>.</param> /// <param name="minutesToTrack">See <see cref="ReplicaBudgetingOptions.MinutesToTrack"/>.</param> /// <param name="minimumRequests">See <see cref="ReplicaBudgetingOptions.MinimumRequests"/>.</param> /// <param name="criticalRatio">See <see cref="ReplicaBudgetingOptions.CriticalRatio"/>.</param> public static void SetupReplicaBudgeting( this IClusterClientConfiguration configuration, string storageKey, int minutesToTrack = ClusterClientDefaults.ReplicaBudgetingMinutesToTrack, int minimumRequests = ClusterClientDefaults.ReplicaBudgetingMinimumRequests, double criticalRatio = ClusterClientDefaults.ReplicaBudgetingCriticalRatio) { var options = new ReplicaBudgetingOptions(storageKey, minutesToTrack, minimumRequests, criticalRatio); configuration.AddRequestModule(new ReplicaBudgetingModule(options), RequestModule.RequestExecution); }