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; }
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));