Example #1
0
        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));
        }
Example #2
0
        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));
            }
        }