Merge "Define self.client in MessagingCore"
This commit is contained in:
@@ -15,9 +15,8 @@
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
from mock import call
|
||||
from mock import MagicMock
|
||||
|
||||
import mock
|
||||
|
||||
from watcher.applier.action_plan.default import DefaultActionPlanHandler
|
||||
from watcher.applier.messaging.event_types import EventTypes
|
||||
@@ -34,7 +33,7 @@ class TestDefaultActionPlanHandler(DbTestCase):
|
||||
self.context)
|
||||
|
||||
def test_launch_action_plan(self):
|
||||
command = DefaultActionPlanHandler(self.context, MagicMock(),
|
||||
command = DefaultActionPlanHandler(self.context, mock.MagicMock(),
|
||||
self.action_plan.uuid)
|
||||
command.execute()
|
||||
action_plan = ActionPlan.get_by_uuid(self.context,
|
||||
@@ -42,18 +41,19 @@ class TestDefaultActionPlanHandler(DbTestCase):
|
||||
self.assertEqual(ap_objects.State.SUCCEEDED, action_plan.state)
|
||||
|
||||
def test_trigger_audit_send_notification(self):
|
||||
messaging = MagicMock()
|
||||
messaging = mock.MagicMock()
|
||||
command = DefaultActionPlanHandler(self.context, messaging,
|
||||
self.action_plan.uuid)
|
||||
command.execute()
|
||||
|
||||
call_on_going = call(EventTypes.LAUNCH_ACTION_PLAN.name, {
|
||||
call_on_going = mock.call(EventTypes.LAUNCH_ACTION_PLAN.name, {
|
||||
'action_plan_state': ap_objects.State.ONGOING,
|
||||
'action_plan__uuid': self.action_plan.uuid})
|
||||
call_succeeded = call(EventTypes.LAUNCH_ACTION_PLAN.name, {
|
||||
call_succeeded = mock.call(EventTypes.LAUNCH_ACTION_PLAN.name, {
|
||||
'action_plan_state': ap_objects.State.SUCCEEDED,
|
||||
'action_plan__uuid': self.action_plan.uuid})
|
||||
|
||||
calls = [call_on_going, call_succeeded]
|
||||
messaging.topic_status.publish_event.assert_has_calls(calls)
|
||||
self.assertEqual(2, messaging.topic_status.publish_event.call_count)
|
||||
messaging.status_topic_handler.publish_event.assert_has_calls(calls)
|
||||
self.assertEqual(
|
||||
2, messaging.status_topic_handler.publish_event.call_count)
|
||||
|
||||
@@ -15,59 +15,79 @@
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
from mock import patch
|
||||
import mock
|
||||
|
||||
from watcher.common.messaging.messaging_core import MessagingCore
|
||||
from watcher.common.messaging.messaging_handler import MessagingHandler
|
||||
from watcher.common.rpc import RequestContextSerializer
|
||||
from watcher.tests.base import TestCase
|
||||
from watcher.common.messaging import messaging_core
|
||||
from watcher.common.messaging import messaging_handler
|
||||
from watcher.common import rpc
|
||||
from watcher.tests import base
|
||||
|
||||
|
||||
class TestMessagingCore(TestCase):
|
||||
class TestMessagingCore(base.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(TestMessagingCore, self).setUp()
|
||||
|
||||
def test_build_topic(self):
|
||||
@mock.patch.object(messaging_handler, "MessagingHandler")
|
||||
def test_connect(self, m_handler):
|
||||
messaging = messaging_core.MessagingCore("", "", "")
|
||||
messaging.connect()
|
||||
self.assertEqual(m_handler.call_count, 2)
|
||||
|
||||
@mock.patch.object(messaging_handler, "MessagingHandler")
|
||||
def test_disconnect(self, m_handler):
|
||||
messaging = messaging_core.MessagingCore("", "", "")
|
||||
messaging.disconnect()
|
||||
self.assertEqual(m_handler.call_count, 2)
|
||||
|
||||
def test_build_topic_handler(self):
|
||||
topic_name = "MyTopic"
|
||||
messaging = MessagingCore("", "", "")
|
||||
messaging_handler = messaging.build_topic(topic_name)
|
||||
self.assertIsNotNone(messaging_handler)
|
||||
messaging = messaging_core.MessagingCore("", "", "")
|
||||
handler = messaging.build_topic_handler(topic_name)
|
||||
self.assertIsNotNone(handler)
|
||||
|
||||
def test_init_messaging_core(self):
|
||||
messaging = MessagingCore("", "", "")
|
||||
messaging = messaging_core.MessagingCore("", "", "")
|
||||
self.assertIsInstance(messaging.serializer,
|
||||
RequestContextSerializer)
|
||||
self.assertIsInstance(messaging.topic_control, MessagingHandler)
|
||||
self.assertIsInstance(messaging.topic_status, MessagingHandler)
|
||||
rpc.RequestContextSerializer)
|
||||
self.assertIsInstance(
|
||||
messaging.conductor_topic_handler,
|
||||
messaging_handler.MessagingHandler)
|
||||
self.assertIsInstance(
|
||||
messaging.status_topic_handler,
|
||||
messaging_handler.MessagingHandler)
|
||||
|
||||
@patch.object(MessagingCore, 'publish_control')
|
||||
def test_publish_control(self, mock_call):
|
||||
@mock.patch.object(messaging_handler, "MessagingHandler")
|
||||
def test_publish_control(self, m_handler_cls):
|
||||
m_handler = mock.Mock()
|
||||
m_handler_cls.return_value = m_handler
|
||||
payload = {
|
||||
"name": "value",
|
||||
}
|
||||
event = "MyEvent"
|
||||
messaging = MessagingCore("", "", "")
|
||||
messaging = messaging_core.MessagingCore("", "", "")
|
||||
messaging.publish_control(event, payload)
|
||||
mock_call.assert_called_once_with(event, payload)
|
||||
m_handler.publish_event.assert_called_once_with(event, payload)
|
||||
|
||||
@patch.object(MessagingCore, 'publish_status')
|
||||
def test_publish_status(self, mock_call):
|
||||
@mock.patch.object(messaging_handler, "MessagingHandler")
|
||||
def test_publish_status(self, m_handler_cls):
|
||||
m_handler = mock.Mock()
|
||||
m_handler_cls.return_value = m_handler
|
||||
payload = {
|
||||
"name": "value",
|
||||
}
|
||||
event = "MyEvent"
|
||||
messaging = MessagingCore("", "", "")
|
||||
messaging = messaging_core.MessagingCore("", "", "")
|
||||
messaging.publish_status(event, payload)
|
||||
mock_call.assert_called_once_with(event, payload)
|
||||
m_handler.publish_event.assert_called_once_with(event, payload, None)
|
||||
|
||||
@patch.object(MessagingCore, 'publish_status')
|
||||
@mock.patch.object(messaging_core.MessagingCore, 'publish_status')
|
||||
def test_response(self, mock_call):
|
||||
event = "My event"
|
||||
context = {'request_id': 12}
|
||||
message = "My Message"
|
||||
|
||||
messaging = MessagingCore("", "", "")
|
||||
messaging = messaging_core.MessagingCore("", "", "")
|
||||
messaging.response(event, context, message)
|
||||
|
||||
expected_payload = {
|
||||
@@ -76,13 +96,15 @@ class TestMessagingCore(TestCase):
|
||||
}
|
||||
mock_call.assert_called_once_with(event, expected_payload)
|
||||
|
||||
def test_messaging_build_topic(self):
|
||||
messaging = MessagingCore("pub_id", "test_topic", "does not matter")
|
||||
topic = messaging.build_topic("test_topic")
|
||||
def test_messaging_build_topic_handler(self):
|
||||
messaging = messaging_core.MessagingCore(
|
||||
"pub_id", "test_topic", "does not matter")
|
||||
topic = messaging.build_topic_handler("test_topic")
|
||||
|
||||
self.assertIsInstance(topic, MessagingHandler)
|
||||
self.assertIsInstance(topic, messaging_handler.MessagingHandler)
|
||||
self.assertEqual(messaging.publisher_id, "pub_id")
|
||||
self.assertEqual(topic.publisher_id, "pub_id")
|
||||
|
||||
self.assertEqual(messaging.topic_control.topic_watcher, "test_topic")
|
||||
self.assertEqual(topic.topic_watcher, "test_topic")
|
||||
self.assertEqual(
|
||||
messaging.conductor_topic_handler.topic_name, "test_topic")
|
||||
self.assertEqual(topic.topic_name, "test_topic")
|
||||
|
||||
@@ -14,17 +14,16 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from mock import Mock
|
||||
from mock import patch
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
import oslo_messaging as messaging
|
||||
from watcher.common.messaging.messaging_handler import MessagingHandler
|
||||
from watcher.tests.base import TestCase
|
||||
from watcher.common.messaging import messaging_handler
|
||||
from watcher.tests import base
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
class TestMessagingHandler(TestCase):
|
||||
class TestMessagingHandler(base.TestCase):
|
||||
|
||||
PUBLISHER_ID = 'TEST_API'
|
||||
TOPIC_WATCHER = 'TEST_TOPIC_WATCHER'
|
||||
@@ -35,20 +34,20 @@ class TestMessagingHandler(TestCase):
|
||||
super(TestMessagingHandler, self).setUp()
|
||||
CONF.set_default('host', 'fake-fqdn')
|
||||
|
||||
@patch.object(messaging, "get_rpc_server")
|
||||
@patch.object(messaging, "Target")
|
||||
@mock.patch.object(messaging, "get_rpc_server")
|
||||
@mock.patch.object(messaging, "Target")
|
||||
def test_setup_messaging_handler(self, m_target_cls, m_get_rpc_server):
|
||||
m_target = Mock()
|
||||
m_target = mock.Mock()
|
||||
m_target_cls.return_value = m_target
|
||||
messaging_handler = MessagingHandler(
|
||||
handler = messaging_handler.MessagingHandler(
|
||||
publisher_id=self.PUBLISHER_ID,
|
||||
topic_watcher=self.TOPIC_WATCHER,
|
||||
topic_name=self.TOPIC_WATCHER,
|
||||
endpoint=self.ENDPOINT,
|
||||
version=self.VERSION,
|
||||
serializer=None,
|
||||
)
|
||||
|
||||
messaging_handler.run()
|
||||
handler.run()
|
||||
|
||||
m_target_cls.assert_called_once_with(
|
||||
server="fake-fqdn",
|
||||
@@ -56,23 +55,23 @@ class TestMessagingHandler(TestCase):
|
||||
version="1.0",
|
||||
)
|
||||
m_get_rpc_server.assert_called_once_with(
|
||||
messaging_handler.transport,
|
||||
handler.transport,
|
||||
m_target,
|
||||
[self.ENDPOINT],
|
||||
serializer=None,
|
||||
)
|
||||
|
||||
def test_messaging_handler_remove_endpoint(self):
|
||||
messaging_handler = MessagingHandler(
|
||||
handler = messaging_handler.MessagingHandler(
|
||||
publisher_id=self.PUBLISHER_ID,
|
||||
topic_watcher=self.TOPIC_WATCHER,
|
||||
topic_name=self.TOPIC_WATCHER,
|
||||
endpoint=self.ENDPOINT,
|
||||
version=self.VERSION,
|
||||
serializer=None,
|
||||
)
|
||||
|
||||
self.assertEqual(messaging_handler.endpoints, [self.ENDPOINT])
|
||||
self.assertEqual(handler.endpoints, [self.ENDPOINT])
|
||||
|
||||
messaging_handler.remove_endpoint(self.ENDPOINT)
|
||||
handler.remove_endpoint(self.ENDPOINT)
|
||||
|
||||
self.assertEqual(messaging_handler.endpoints, [])
|
||||
self.assertEqual(handler.endpoints, [])
|
||||
|
||||
@@ -63,5 +63,6 @@ class TestDefaultAuditHandler(base.DbTestCase):
|
||||
'audit_uuid': self.audit.uuid})
|
||||
|
||||
calls = [call_on_going, call_succeeded]
|
||||
messaging.topic_status.publish_event.assert_has_calls(calls)
|
||||
self.assertEqual(2, messaging.topic_status.publish_event.call_count)
|
||||
messaging.status_topic_handler.publish_event.assert_has_calls(calls)
|
||||
self.assertEqual(
|
||||
2, messaging.status_topic_handler.publish_event.call_count)
|
||||
|
||||
@@ -79,7 +79,7 @@ class MyObj2(object):
|
||||
pass
|
||||
|
||||
|
||||
class TestSubclassedObject(MyObj):
|
||||
class DummySubclassedObject(MyObj):
|
||||
fields = {'new_field': str}
|
||||
|
||||
|
||||
@@ -438,13 +438,13 @@ class _TestObject(object):
|
||||
base_fields = base.WatcherObject.fields.keys()
|
||||
myobj_fields = ['foo', 'bar', 'missing'] + base_fields
|
||||
myobj3_fields = ['new_field']
|
||||
self.assertTrue(issubclass(TestSubclassedObject, MyObj))
|
||||
self.assertTrue(issubclass(DummySubclassedObject, MyObj))
|
||||
self.assertEqual(len(myobj_fields), len(MyObj.fields))
|
||||
self.assertEqual(set(myobj_fields), set(MyObj.fields.keys()))
|
||||
self.assertEqual(len(myobj_fields) + len(myobj3_fields),
|
||||
len(TestSubclassedObject.fields))
|
||||
len(DummySubclassedObject.fields))
|
||||
self.assertEqual(set(myobj_fields) | set(myobj3_fields),
|
||||
set(TestSubclassedObject.fields.keys()))
|
||||
set(DummySubclassedObject.fields.keys()))
|
||||
|
||||
def test_get_changes(self):
|
||||
obj = MyObj(self.context)
|
||||
|
||||
Reference in New Issue
Block a user