public ReplicaResult([NotNull] Uri replica, [NotNull] Response response, ResponseVerdict verdict, TimeSpan time)
 {
     Replica  = replica;
     Response = response;
     Verdict  = verdict;
     Time     = time;
 }
        private void AddCriterion(ResponseVerdict verdict)
        {
            var criterion = Substitute.For <IResponseCriterion>();

            criterion.Decide(response).Returns(verdict);

            criteria.Add(criterion);
        }
예제 #3
0
        public void Should_return_correct_action_for_given_response_verdict(ResponseVerdict verdict, AdaptiveHealthAction action)
        {
            var result = new ReplicaResult(new Uri("http://replica"), Responses.Timeout, verdict, TimeSpan.Zero);

            policy.SelectAction(result).Should().Be(action);
        }
예제 #4
0
 public void Should_choose_to_not_touch_health_when_replica_response_code_indicates_content_input_failure(ResponseVerdict verdict)
 {
     Should_choose_to_not_touch_health_when_replica_response_code_indicates_response(Responses.ContentInputFailure, verdict);
 }
예제 #5
0
        private void Should_choose_to_not_touch_health_when_replica_response_code_indicates_response(Response response, ResponseVerdict verdict)
        {
            var result = new ReplicaResult(new Uri("http://replica"), response, verdict, TimeSpan.Zero);

            policy.SelectAction(result).Should().Be(AdaptiveHealthAction.DontTouch);
        }
예제 #6
0
 private void CompleteRequest(Uri replica, ResponseVerdict verdict)
 {
     resultSources[replica].TrySetResult(new ReplicaResult(replica, new Response(ResponseCode.Ok), verdict, TimeSpan.Zero));
 }
예제 #7
0
 public void Should_choose_to_not_touch_health_when_replica_response_code_indicates_stream_reuse_failure(ResponseVerdict verdict)
 {
     Should_choose_to_not_touch_health_when_replica_response_code_indicates_response(Responses.StreamReuseFailure, verdict);
 }
예제 #8
0
        public void Should_choose_to_not_touch_health_when_replica_response_code_indicates_stream_input_failure(ResponseVerdict verdict)
        {
            var result = new ReplicaResult(new Uri("http://replica"), Responses.StreamInputFailure, verdict, TimeSpan.Zero);

            policy.SelectAction(result).Should().Be(AdaptiveHealthAction.DontTouch);
        }
 private static ReplicaResult CreateResult(ResponseVerdict verdict, ResponseCode code = ResponseCode.Ok, Headers headers = null)
 {
     return(new ReplicaResult(new Uri("http://host:123/"), new Response(code, headers: headers), verdict, TimeSpan.Zero));
 }
예제 #10
0
 private static ReplicaResult CreateResult(Uri replica, ResponseVerdict verdict, Response response = null)
 {
     return(new ReplicaResult(replica, response ?? Responses.Timeout, verdict, TimeSpan.Zero));
 }
 private void SetupResult(Uri replica, ResponseVerdict verdict)
 {
     sender
     .SendToReplicaAsync(replica, Arg.Any <Request>(), Arg.Any <TimeSpan?>(), Arg.Any <TimeSpan>(), Arg.Any <CancellationToken>())
     .ReturnsTask(new ReplicaResult(replica, new Response(ResponseCode.Ok), verdict, TimeSpan.Zero));
 }
        public void Should_return_result_with_correct_verdict(ResponseVerdict verdict)
        {
            responseClassifier.Decide(response, configuration.ResponseCriteria).Returns(verdict);

            Send().Verdict.Should().Be(verdict);
        }
 private ReplicaResult CreateResult(Uri replica, ResponseVerdict verdict)
 {
     return(new ReplicaResult(replica, Responses.Timeout, verdict, TimeSpan.Zero));
 }
예제 #14
0
 private ReplicaResult Result(ResponseVerdict verdict)
 {
     return(new ReplicaResult(new Uri("http://replica"), new Response(ResponseCode.NotFound), verdict, TimeSpan.Zero));
 }