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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }