Exemplo n.º 1
0
        public virtual async Task <RequestResponseWrapper> GetAsync(string query, CancellationToken cancellationToken)
        {
            RequestResponseWrapper responseWrapper = new RequestResponseWrapper();

            //set default timeout for request
            if (cancellationToken == CancellationToken.None)
            {
                CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
                cancellationTokenSource.CancelAfter(AppConfigurationService.DefaultRequestTimeout);
            }

            try
            {
                HttpResponseMessage response = await HttpClient.GetAsync(query, cancellationToken);

                responseWrapper.ResponseContent = await response.Content.ReadAsStringAsync();

                responseWrapper.Response  = response;
                responseWrapper.IsSuccess = response.IsSuccessStatusCode;
            }
            //handle time out/cancellation exception (OperationCanceledException) and request exception
            catch (HttpRequestException hre)
            {
                responseWrapper.Exception = hre;
            }
            catch (OperationCanceledException oce)
            {
                responseWrapper.Exception = oce;
            }

            return(responseWrapper);
        }
 internal QueryCacheEntry(RequestResponseWrapper responseWrapper, DateTime expier, string request, bool retryOnException = true, int maxRetryCount = 2)
 {
     ResponseValue    = responseWrapper;
     RetryOnException = retryOnException;
     MaxRetryCount    = maxRetryCount;
     Expires          = expier;
     Request          = request;
     RetryCount       = 0;
 }
Exemplo n.º 3
0
        async Task <RequestResponseWrapper> ExecuteQuery(string request, CancellationToken cancellationToken, int timeout)
        {
            RequestResponseWrapper responseWrapper = null;

            await queryThrottler.WaitAsync(); //limit queries concurrency

            try
            {
                responseWrapper = await RequestService.GetAsync(request, cancellationToken);
            }
            finally
            {
                queryThrottler.Release();
            }

            return(responseWrapper);
        }
        public async void ValidarAtualizarProcesso()
        {
            // Arrange
            var response = new RequestResponseWrapper <AtualizarProcessoResponse>(true, new AtualizarProcessoResponse(this.ProcessoId.Value, new List <int> {
                1, 2
            }));

            this.mockMediator
            .Setup(m => m.Send(It.IsNotNull <AtualizarProcessoCommand>(), default))
            .Returns(Task.FromResult(response));

            // Act
            await this.sut.AtualizarProcessoAsync(this.atualizarProcessoCommand);

            // Assert
            mockMediator.Verify(m => m.Send(It.IsNotNull <AtualizarProcessoCommand>(), default), Times.Once);
            mockMediator.Verify(m => m.Send(It.IsNotNull <ProcessoAtualizadoEvent>(), default), Times.Once);
        }
        public async void ValidarCriarProcesso()
        {
            // Arrange
            var criarProcessoCommandResponse = new RequestResponseWrapper <int?>(true, this.ProcessoId);

            this.mockMediator
            .Setup(m => m.Send(It.IsNotNull <CriarProcessoCommand>(), default))
            .Returns(Task.FromResult(criarProcessoCommandResponse));

            // Act
            var response = await this.sut.CriarProcessoAsync(this.criarProcessoCommand);

            // Assert
            response.Should().NotBeNull();
            response.Should().Be(this.ProcessoId);
            mockMediator.Verify(m => m.Send(It.IsNotNull <CriarProcessoCommand>(), default), Times.Once);
            mockMediator.Verify(m => m.Send(It.IsNotNull <ProcessoCriadoEvent>(), default), Times.Once);
        }
        public override async Task <RequestResponseWrapper> GetAsync(string query, CancellationToken cancellationToken)
        {
            RequestResponseWrapper responseWrapper = new RequestResponseWrapper();

            foreach (var rule in Rules)
            {
                var test = rule.Key;

                if (test.Match(query).Success)
                {
                    var testingServiceMode = rule.Value.Item1;

                    switch (testingServiceMode)
                    {
                    case RequestTestingServiceMode.AllowConnection:
                        return(await base.GetAsync(query, cancellationToken));

                    case RequestTestingServiceMode.ReturnPredefinedResult:
                        return(rule.Value.Item2);    //predefined custom response

                    case RequestTestingServiceMode.ThrowHttpError:
                        responseWrapper.Exception = new HttpRequestException("Http exception");
                        return(responseWrapper);

                    case RequestTestingServiceMode.ThrowTimedoutError:
                        responseWrapper.Exception = new TaskCanceledException("Operation timedout");
                        return(responseWrapper);

                    default:
                        throw new InvalidOperationException("Wrong testingServiceMode parameter");
                    }
                }
            }

            throw new InvalidOperationException("Query wasnt matched with any testing rule");
        }
 public void AddTestingRule(
     Regex test,
     RequestTestingServiceMode testingServiceMode,
     RequestResponseWrapper requestResponseWrapper = null) => Rules.Add(test, Tuple.Create(testingServiceMode, requestResponseWrapper));