public void Modify_should_not_modify_weight_when_is_not_local_dc() { datacenters.GetLocalDatacenter().Returns("dc"); datacenters.GetDatacenterWeak(Arg.Any <string>()).Returns("dc1"); modifier.Modify(new Uri("http://url.com/"), null, null, null, null, ref weight); weight.Should().Be(1.0); }
public void Modify(Uri replica, IList <Uri> allReplicas, IReplicaStorageProvider storageProvider, Request request, RequestParameters parameters, ref double weight) { if (weight < minimumWeightForBoostingProvider()) { return; } var localDatacenter = datacenters.GetLocalDatacenter(); var replicaDatacenter = datacenters.GetDatacenterWeak(replica.Host); if (string.Equals(localDatacenter, replicaDatacenter, StringComparison.OrdinalIgnoreCase)) { weight *= boostMultiplierProvider(); } }
private void LogLocalDatacenter(IDatacenters datacenters) => log.Info("Application datacenter: {DatacenterName}.", datacenters.GetLocalDatacenter() ?? "unknown");
public async Task InvokeAsync(HttpContext context) { if (options.RejectRequestsWhenDatacenterIsInactive && !datacenters.LocalDatacenterIsActive()) { context.Response.StatusCode = options.RejectionResponseCode; log.Warn("Rejecting request as local datacenter '{Datacenter}' is not active.", datacenters.GetLocalDatacenter()); return; } await next(context); }
/// <summary> /// <para>Returns <c>true</c> if current local datacenter is among ones listed in result of <see cref="IDatacenters.GetActiveDatacenters"/>.</para> /// <para>Also returns <c>true</c> if local datacenter cannot be determined.</para> /// </summary> public static bool LocalDatacenterIsActive([NotNull] this IDatacenters datacenters) { var localDatacenter = datacenters.GetLocalDatacenter(); return(localDatacenter == null || datacenters.GetActiveDatacenters().Contains(localDatacenter)); }
public string GetLocalDatacenter() => baseDatacenters.GetLocalDatacenter();