public async Task <HttpMonitor> CreateHttpMonitorAsync(CreateHttpMonitor command) { if (command == null) { throw new ArgumentNullException(nameof(command)); } var httpMonitor = new HttpMonitor(HttpMonitorId.Create(), command.Request); await _repository.PutAsync(httpMonitor); return(httpMonitor); }
public static async Task HttpMonitorHandlesHttpMonitorChecked( [QueueTrigger("events-httpmonitorchecked-httpmonitor")] string json, TraceWriter log, [Inject] IHttpMonitorRepository repository) { var @event = JsonConvert.DeserializeObject <HttpMonitorChecked>(json, Constants.JsonSerializerSettings); var monitor = await repository.GetByIdAsync(@event.HttpMonitorCheck.HttpMonitorId); monitor?.Handle(@event); await repository.PutAsync(monitor); }
private async Task <HttpMonitorDto> GenerateAndPostHttpMonitorAsync() { var httpMonitor = HttpMonitorGenerator.Generate(); await _httpMonitorRepository.PutAsync(httpMonitor); return(new HttpMonitorDto() { Id = httpMonitor.Id.ToString(), Request = new HttpRequestDto() { Method = httpMonitor.Request.Method.Method, Url = httpMonitor.Request.Url } }); }
private Task GenerateAsync() { var httpMonitor = new HttpMonitor(HttpMonitorId.Create(), new HttpRequest(HttpMethod.Get, new Uri("http://example.com/sdfsd/sdfsdfsd/sdffsd"))); return(_repository.PutAsync(httpMonitor)); }
public async Task TestLaunch() { // Arrange var httpMonitor1 = new HttpMonitor( HttpMonitorId.Create(), new HttpRequest(HttpMethod.Get, _fixture.OpenHttpServer.BaseAddress)); var httpMonitor2 = new HttpMonitor( HttpMonitorId.Create(), new HttpRequest(HttpMethod.Delete, _fixture.OpenHttpServer.BaseAddress)); await _httpMonitorRepository.PutAsync(httpMonitor1); await _httpMonitorRepository.PutAsync(httpMonitor2); var tcs1 = new TaskCompletionSource <object>(); var tcs2 = new TaskCompletionSource <object>(); var combinedTasks = Task.WhenAll(tcs1.Task, tcs2.Task); _openHttpServer.Handler = ctx => { if (string.Equals(ctx.Request.Method, httpMonitor1.Request.Method.Method, StringComparison.InvariantCultureIgnoreCase)) { tcs1.SetResult(null); ctx.Response.StatusCode = 200; } else if (string.Equals(ctx.Request.Method, httpMonitor2.Request.Method.Method, StringComparison.InvariantCultureIgnoreCase)) { tcs2.SetResult(null); ctx.Response.StatusCode = 300; } else { ctx.Response.StatusCode = 404; } return(Task.CompletedTask); }; // Act await _fixture.StartHostAsync(); await Task.WhenAny( combinedTasks, Task.Delay(10000)); // Assert Assert.True(combinedTasks.IsCompletedSuccessfully); // todo race condition await Task.Delay(100); var check1 = (await _httpMonitorCheckRepository.GetAsync(httpMonitor1.Id)).SingleOrDefault(); Assert.NotNull(check1); Assert.Equal(200, (int)check1.Response.StatusCode); var check2 = (await _httpMonitorCheckRepository.GetAsync(httpMonitor2.Id)).SingleOrDefault(); Assert.NotNull(check2); Assert.Equal(300, (int)check2.Response.StatusCode); }