public void HttpProcessorTest() { var account = TestHelper.GetTestAccount(); var client = account.GetClient(); var component = account.CreateRandomComponentControl(); var unitTestType = client.GetOrCreateUnitTestTypeControl(SystemUnitTestTypes.HttpUnitTestType.SystemName); var unitTest = component.GetOrCreateUnitTestControl(unitTestType, "httpCheck"); Guid unitTestId = unitTest.Info.Id; using (var accountDbContext = AccountDbContext.CreateFromAccountId(account.Id)) { var unitTestObj = accountDbContext.UnitTests.Single(x => x.Id == unitTestId); var httpUnitTest = unitTestObj.HttpRequestUnitTest; var code = HttpRequestErrorCode.ErrorHtmlFound; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite.zidium.net/ok", ErrorHtml = "Все хорошо", TimeoutSeconds = 5 }); foreach (var rule in httpUnitTest.Rules) { rule.HttpRequestUnitTest = httpUnitTest; rule.HttpRequestUnitTestId = httpUnitTest.UnitTestId; rule.Id = Guid.NewGuid(); } accountDbContext.SaveChanges(); var processor = new HttpRequestsProcessor(LogManager.GetCurrentClassLogger(), new CancellationToken()); processor.ProcessAccount(account.Id, unitTestObj.Id); Assert.True(processor.SuccessCount >= 1); Assert.Equal(0, processor.ErrorCount); } }
public void HttpRequestCheck() { var account = TestHelper.GetTestAccount(); var client = account.GetClient(); var component = account.CreateRandomComponentControl(); var unitTestType = client.GetOrCreateUnitTestTypeControl(SystemUnitTestTypes.HttpUnitTestType.SystemName); var unitTest = component.GetOrCreateUnitTestControl(unitTestType, "httpCheck"); Guid unitTestId = unitTest.Info.Id; using (var accountDbContext = AccountDbContext.CreateFromAccountId(account.Id)) { var unitTestObj = accountDbContext.UnitTests.Single(x => x.Id == unitTestId); var httpUnitTest = unitTestObj.HttpRequestUnitTest; var code = HttpRequestErrorCode.ErrorHtmlFound; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite.zidium.net/ok", ErrorHtml = "Все хорошо", TimeoutSeconds = 5 }); code = HttpRequestErrorCode.InvalidResponseCode; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite.zidium.net/ok-22222222", TimeoutSeconds = 5 }); code = HttpRequestErrorCode.Success; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite.zidium.net/ok", TimeoutSeconds = 5, SuccessHtml = "Все хорошо" }); code = HttpRequestErrorCode.SuccessHtmlNotFound; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite.zidium.net/ok", TimeoutSeconds = 5, SuccessHtml = "Все хорошо 77777777" }); code = HttpRequestErrorCode.TcpError; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://localhost:3451/", TimeoutSeconds = 60 }); code = HttpRequestErrorCode.Timeout; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite.zidium.net/ok?wait=5", TimeoutSeconds = 4 }); code = HttpRequestErrorCode.TooLargeResponse; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite.zidium.net/ok", TimeoutSeconds = 5, MaxResponseSize = 1 }); code = HttpRequestErrorCode.UnknownDomain; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http://fakesite22222.zidium.net/ok", TimeoutSeconds = 5 }); code = HttpRequestErrorCode.UrlFormatError; httpUnitTest.Rules.Add(new HttpRequestUnitTestRule() { DisplayName = code.ToString(), Url = "http555555://fakesite.zidium.net/ok", TimeoutSeconds = 5 }); int order = 0; foreach (var rule in httpUnitTest.Rules) { rule.SortNumber = order++; rule.HttpRequestUnitTest = httpUnitTest; rule.HttpRequestUnitTestId = httpUnitTest.UnitTestId; rule.Id = Guid.NewGuid(); } httpUnitTest.ProcessAllRulesOnError = true; accountDbContext.SaveChanges(); var processor = new HttpRequestsProcessor(LogManager.GetCurrentClassLogger(), new CancellationToken()); processor.ProcessAccount(account.Id, unitTestId); } // проверим данные в БД using (var accountDbContext = AccountDbContext.CreateFromAccountId(account.Id)) { var test = accountDbContext.UnitTests.Single(x => x.Id == unitTestId); Assert.True(test.NextExecutionDate > DateTime.Now); var codes = new[] { HttpRequestErrorCode.ErrorHtmlFound, HttpRequestErrorCode.InvalidResponseCode, HttpRequestErrorCode.Success, HttpRequestErrorCode.SuccessHtmlNotFound, HttpRequestErrorCode.TcpError, HttpRequestErrorCode.Timeout, HttpRequestErrorCode.TooLargeResponse, HttpRequestErrorCode.UnknownDomain, HttpRequestErrorCode.UrlFormatError }; foreach (var code in codes) { var rule = test.HttpRequestUnitTest.Rules.Single(x => x.DisplayName == code.ToString()); Assert.Equal(code, rule.LastRunErrorCode); } } }
public void HttpRequestUnitTestAddTest() { var account = TestHelper.GetTestAccount(); var user = TestHelper.GetAccountAdminUser(account.Id); var component = account.CreateRandomComponentControl(); // Добавим новый юнит-тест EditModel model; using (var controller = new HttpRequestCheckController(account.Id, user.Id)) { var result = (ViewResultBase)controller.Edit(null, component.Info.Id); model = (EditModel)result.Model; } Assert.Equal(component.Info.Id, model.ComponentId); model.CheckName = "Test_" + Guid.NewGuid(); model.Method = HttpRequestMethod.Get; model.ResponseCode = 200; model.Url = "http://recursion.ru"; using (var controller = new HttpRequestCheckController(account.Id, user.Id)) { controller.Edit(model); } account.SaveAllCaches(); // Проверим данные созданного юнит-теста Guid unittestId; using (var accountContext = AccountDbContext.CreateFromAccountId(account.Id)) { var repository = accountContext.GetUnitTestRepository(); var unitTest = repository.QueryAll().SingleOrDefault(t => t.DisplayName == model.CheckName); Assert.NotNull(unitTest); Assert.Equal(SystemUnitTestTypes.HttpUnitTestType.Id, unitTest.TypeId); Assert.Equal(model.ComponentId, unitTest.ComponentId); Assert.Equal(model.CheckName, unitTest.DisplayName); Assert.Equal(model.Period, TimeSpanHelper.FromSeconds(unitTest.PeriodSeconds)); Assert.Equal(ObjectColor.Gray, unitTest.NoSignalColor); var httpUnitTest = unitTest.HttpRequestUnitTest; Assert.NotNull(httpUnitTest); var rule = unitTest.HttpRequestUnitTest.Rules.Single(); Assert.NotNull(rule); Assert.NotNull(rule.Url); unittestId = unitTest.Id; } // 1-ый запуск проверок // проверим, что агент НЕ будет выполнять проверку постоянно (был такой дефект, как будто период равен нулю) var processor = new HttpRequestsProcessor(LogManager.GetCurrentClassLogger(), new CancellationToken()); processor.ProcessAccount(account.Id, unittestId); Assert.Equal(0, processor.ErrorCount); Assert.Equal(1, processor.SuccessCount); account.SaveAllCaches(); // 2-ый запуск проверок processor = new HttpRequestsProcessor(LogManager.GetCurrentClassLogger(), new CancellationToken()); processor.ProcessAccount(account.Id, unittestId); // проверка уже выполнена, время следующего выполнения еще НЕ настало Assert.Equal(0, processor.ErrorCount); Assert.Equal(0, processor.SuccessCount); }