Merge "enable listener service to get list of elements in enriched_events" into stable/pike
This commit is contained in:
commit
46ba35c555
@ -90,8 +90,13 @@ class NotificationsEndpoint(object):
|
|||||||
if str(event_type) == event_string:
|
if str(event_type) == event_string:
|
||||||
|
|
||||||
callbacks = self.enrich_callbacks_by_events[event_string]
|
callbacks = self.enrich_callbacks_by_events[event_string]
|
||||||
enriched_events = [callback(payload, event_type)
|
enriched_events = []
|
||||||
for callback in callbacks]
|
for callback in callbacks:
|
||||||
|
result = callback(payload, event_type)
|
||||||
|
if isinstance(result, list):
|
||||||
|
enriched_events += result
|
||||||
|
else:
|
||||||
|
enriched_events.append(result)
|
||||||
self._enqueue_events(enriched_events)
|
self._enqueue_events(enriched_events)
|
||||||
|
|
||||||
def _enqueue_events(self, enriched_events):
|
def _enqueue_events(self, enriched_events):
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
# Copyright 2017 - Nokia
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
__author__ = 'stack'
|
@ -0,0 +1,76 @@
|
|||||||
|
# Copyright 2017 - Nokia
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from vitrage.datasources.driver_base import DriverBase
|
||||||
|
from vitrage.datasources.listener_service import NotificationsEndpoint
|
||||||
|
from vitrage.tests import base
|
||||||
|
from vitrage.tests.mocks import mock_driver
|
||||||
|
|
||||||
|
|
||||||
|
class MyTestDriver(DriverBase):
|
||||||
|
def __init__(self):
|
||||||
|
super(MyTestDriver, self).__init__()
|
||||||
|
|
||||||
|
def enrich_event(self, event, event_type):
|
||||||
|
return event
|
||||||
|
|
||||||
|
def get_all(self, datasource_action):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_event_types():
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class TestListenerService(base.BaseTest):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
super(TestListenerService, cls).setUpClass()
|
||||||
|
|
||||||
|
def _add_event_to_actual_events(self, event):
|
||||||
|
self.actual_events.append(event)
|
||||||
|
|
||||||
|
def _set_excepted_events(self, events):
|
||||||
|
self.excepted_events = events
|
||||||
|
self.actual_events = []
|
||||||
|
|
||||||
|
def _assert_events(self):
|
||||||
|
self.assertEqual(self.excepted_events, self.actual_events)
|
||||||
|
|
||||||
|
def _generate_events(self, update_events):
|
||||||
|
gen_list = mock_driver.simple_aodh_alarm_notification_generators(
|
||||||
|
1, update_events=update_events)
|
||||||
|
events = mock_driver.generate_sequential_events_list(gen_list)
|
||||||
|
self.excepted_events = events
|
||||||
|
self.actual_events = []
|
||||||
|
return events
|
||||||
|
|
||||||
|
def test_notification_listener_endpoints(self):
|
||||||
|
|
||||||
|
my_test_driver = MyTestDriver()
|
||||||
|
enrich_callbacks_by_events = {"mock": [my_test_driver.enrich_event]}
|
||||||
|
endpoint = NotificationsEndpoint(
|
||||||
|
enrich_callbacks_by_events,
|
||||||
|
self._add_event_to_actual_events)
|
||||||
|
|
||||||
|
# test handling one event
|
||||||
|
events = self._generate_events(1)
|
||||||
|
endpoint.info(None, None, "mock", events[0], None)
|
||||||
|
self._assert_events()
|
||||||
|
|
||||||
|
# test handling list of events
|
||||||
|
events = self._generate_events(2)
|
||||||
|
endpoint.info(None, None, "mock", events, None)
|
||||||
|
self._assert_events()
|
Loading…
Reference in New Issue
Block a user