コード例 #1
0
        public void TestSetup()
        {
            request  = Request.Get("http://foo/bar");
            response = new Response(ResponseCode.Ok);

            parameters = RequestParameters.Empty.WithConnectionTimeout(1.Seconds());

            var budget = Budget.WithRemaining(5.Seconds());

            transport = Substitute.For <ITransport>();
            transport.SendAsync(Arg.Any <Request>(), Arg.Any <TimeSpan?>(), Arg.Any <TimeSpan>(), Arg.Any <CancellationToken>()).ReturnsTask(_ => response);

            context = Substitute.For <IRequestContext>();
            context.Request.Returns(_ => request);
            context.Budget.Returns(_ => budget);
            context.Transport.Returns(_ => transport);
            context.Parameters.Returns(_ => parameters);

            responseCriteria   = new List <IResponseCriterion>();
            responseClassifier = Substitute.For <IResponseClassifier>();
            responseClassifier.Decide(Arg.Any <Response>(), Arg.Any <IList <IResponseCriterion> >()).Returns(ResponseVerdict.Accept);

            resultStatusSelector = Substitute.For <IClusterResultStatusSelector>();
            resultStatusSelector.Select(null, null).ReturnsForAnyArgs(ClusterResultStatus.Success);

            module = new AbsoluteUrlSenderModule(responseClassifier, responseCriteria, resultStatusSelector);
        }
コード例 #2
0
        public void SetUp()
        {
            replica         = new Uri("http://replica/");
            relativeRequest = Request.Get("foo/bar");
            absoluteRequest = Request.Get("http://replica/foo/bar");
            response        = new Response(ResponseCode.Ok);
            timeout         = 5.Seconds();

            log = Substitute.For <ILog>();
            log
            .When(l => l.Log(Arg.Any <LogEvent>()))
            .Do(info => new ConsoleLog().Log(info.Arg <LogEvent>()));

            configuration = Substitute.For <IClusterClientConfiguration>();
            configuration.ResponseCriteria.Returns(new List <IResponseCriterion> {
                Substitute.For <IResponseCriterion>()
            });
            configuration.LogReplicaRequests.Returns(true);
            configuration.LogReplicaResults.Returns(true);
            configuration.ReplicaOrdering.Returns(Substitute.For <IReplicaOrdering>());
            configuration.Log.Returns(log);

            storageProvider = Substitute.For <IReplicaStorageProvider>();

            responseClassifier = Substitute.For <IResponseClassifier>();
            responseClassifier.Decide(Arg.Any <Response>(), Arg.Any <IList <IResponseCriterion> >()).Returns(ResponseVerdict.Accept);

            requestConverter = Substitute.For <IRequestConverter>();
            requestConverter.TryConvertToAbsolute(relativeRequest, replica).Returns(_ => absoluteRequest);

            transport = Substitute.For <ITransport>();
            transport.SendAsync(Arg.Any <Request>(), Arg.Any <TimeSpan>(), Arg.Any <CancellationToken>()).Returns(_ => response);

            sender = new RequestSender(configuration, storageProvider, responseClassifier, requestConverter, transport);
        }
        public void Setup()
        {
            request  = Request.Get("http://foo/bar");
            response = new Response(ResponseCode.Ok);

            var budget = Budget.WithRemaining(5.Seconds());

            context = Substitute.For <IRequestContext>();
            context.Request.Returns(_ => request);
            context.Budget.Returns(_ => budget);

            transport = Substitute.For <ITransport>();
            transport.SendAsync(Arg.Any <Request>(), Arg.Any <TimeSpan>(), Arg.Any <CancellationToken>()).ReturnsTask(_ => response);

            responseCriteria   = new List <IResponseCriterion>();
            responseClassifier = Substitute.For <IResponseClassifier>();
            responseClassifier.Decide(Arg.Any <Response>(), Arg.Any <IList <IResponseCriterion> >()).Returns(ResponseVerdict.Accept);

            resultStatusSelector = Substitute.For <IClusterResultStatusSelector>();
            // ReSharper disable AssignNullToNotNullAttribute
            resultStatusSelector.Select(null, null).ReturnsForAnyArgs(ClusterResultStatus.Success);
            // ReSharper restore AssignNullToNotNullAttribute

            module = new AbsoluteUrlSenderModule(transport, responseClassifier, responseCriteria, resultStatusSelector);
        }
コード例 #4
0
 public AbsoluteUrlSenderModule(
     IResponseClassifier responseClassifier,
     IList <IResponseCriterion> responseCriteria,
     IClusterResultStatusSelector resultStatusSelector)
 {
     this.responseClassifier   = responseClassifier;
     this.responseCriteria     = responseCriteria;
     this.resultStatusSelector = resultStatusSelector;
 }
コード例 #5
0
 public RequestSender(
     IClusterClientConfiguration configuration,
     IReplicaStorageProvider storageProvider,
     IResponseClassifier responseClassifier,
     IRequestConverter requestConverter)
 {
     this.configuration      = configuration;
     this.storageProvider    = storageProvider;
     this.responseClassifier = responseClassifier;
     this.requestConverter   = requestConverter;
 }