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);
 }
コード例 #2
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();
            }
        }
コード例 #3
0
ファイル: VostokHost.cs プロジェクト: ArXa1L/hosting
 private void LogLocalDatacenter(IDatacenters datacenters) =>
 log.Info("Application datacenter: {DatacenterName}.", datacenters.GetLocalDatacenter() ?? "unknown");
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <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));
        }
コード例 #6
0
 public string GetLocalDatacenter() =>
 baseDatacenters.GetLocalDatacenter();