public SetComponentDisableResponse SetComponentDisable(Guid accountId, SetComponentDisableRequestData data) { if (data == null) { throw new ArgumentNullException("data"); } var request = GetRequest <SetComponentDisableRequest>(accountId); request.Data = data; var dispatcher = DispatcherHelper.GetDispatcherService(); return(dispatcher.SetComponentDisable(request)); }
public void DisableRedComponentTest() { // Создадим компонент var account = TestHelper.GetTestAccount(); var component = account.CreateTestApplicationComponent(); var dispatcher = TestHelper.GetDispatcherClient(); // Отключим компонент var disableData = new SetComponentDisableRequestData() { ComponentId = component.Id }; dispatcher.SetComponentDisable(account.Id, disableData); // Отправим красное событие var eventType = TestHelper.GetTestEventType(account.Id); var eventResponse = dispatcher.SendEvent(account.Id, new SendEventData() { TypeSystemName = eventType.SystemName, ComponentId = component.Id, Category = EventCategory.ApplicationError, Importance = EventImportance.Alarm }); Assert.Equal(ResponseCode.ObjectDisabled, eventResponse.Code); // Проверим события using (var context = account.CreateAccountDbContext()) { var eventRepository = context.GetEventRepository(); var events = eventRepository.QueryAll(component.Id).ToList(); // Должно быть 2 серого события ("Нет данных", "Выключено") внешнего статуса var externalGrayEvents = events .Where(t => t.Category == EventCategory.ComponentInternalStatus && t.Importance == EventImportance.Unknown) .ToList(); Assert.Equal(2, externalGrayEvents.Count); // Должно быть 2 серого внутреннего статуса Assert.Equal(2, events.Count(t => t.Category == EventCategory.ComponentInternalStatus && t.Importance == EventImportance.Unknown)); } // Проверим, что компонент не стал красным var stateResponse = dispatcher.GetComponentTotalState(account.Id, component.Id); Assert.NotEqual(MonitoringStatus.Alarm, stateResponse.Data.Status); // Включим компонент dispatcher.SetComponentEnable(account.Id, component.Id); // Проверим, что компонент не стал красным stateResponse = dispatcher.GetComponentTotalState(account.Id, component.Id); Assert.NotEqual(MonitoringStatus.Alarm, stateResponse.Data.Status); // Проверим события using (var context = account.CreateAccountDbContext()) { var eventRepository = context.GetEventRepository(); var events = eventRepository.QueryAll(component.Id).ToList(); // Должно быть 3 серых события внешнего статуса Assert.Equal(3, events.Count(t => t.Category == EventCategory.ComponentInternalStatus && t.Importance == EventImportance.Unknown)); // Должно быть 3 серых события внутреннего статуса Assert.Equal(3, events.Count(t => t.Category == EventCategory.ComponentInternalStatus && t.Importance == EventImportance.Unknown)); // Красных событий статуса быть не должно Assert.Equal(0, events.Count(t => t.Category == EventCategory.ComponentInternalStatus && t.Importance == EventImportance.Alarm)); Assert.Equal(0, events.Count(t => t.Category == EventCategory.ComponentInternalStatus && t.Importance == EventImportance.Alarm)); } }