[asterisk-commits] mjordan: branch mjordan/12-messaging r418443 - in /team/mjordan/12-messaging:...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Jul 12 16:50:42 CDT 2014
Author: mjordan
Date: Sat Jul 12 16:50:36 2014
New Revision: 418443
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=418443
Log:
Add a unit test for ast_msg_send
Modified:
team/mjordan/12-messaging/main/message.c
team/mjordan/12-messaging/res/res_pjsip_messaging.c
team/mjordan/12-messaging/tests/test_message.c
Modified: team/mjordan/12-messaging/main/message.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/12-messaging/main/message.c?view=diff&rev=418443&r1=418442&r2=418443
==============================================================================
--- team/mjordan/12-messaging/main/message.c (original)
+++ team/mjordan/12-messaging/main/message.c Sat Jul 12 16:50:36 2014
@@ -862,6 +862,11 @@
for (i = 0; i < AST_VECTOR_SIZE(&msg_handlers); i++) {
const struct ast_msg_handler *handler = AST_VECTOR_GET(&msg_handlers, i);
+ if (!handler->has_destination(msg)) {
+ ast_debug(5, "Handler %s doesn't want message, moving on\n", handler->name);
+ continue;
+ }
+
ast_debug(5, "Dispatching message to %s handler", handler->name);
res &= handler->handle_msg(msg);
}
Modified: team/mjordan/12-messaging/res/res_pjsip_messaging.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/12-messaging/res/res_pjsip_messaging.c?view=diff&rev=418443&r1=418442&r2=418443
==============================================================================
--- team/mjordan/12-messaging/res/res_pjsip_messaging.c (original)
+++ team/mjordan/12-messaging/res/res_pjsip_messaging.c Sat Jul 12 16:50:36 2014
@@ -475,7 +475,6 @@
/* endpoint name */
res |= ast_msg_set_tech(msg, "%s", "PJSIP");
- ast_log(LOG_ERROR, "@@@@ endpoint is: %s\n", ast_sorcery_object_get_id(endpt));
res |= ast_msg_set_endpoint(msg, "%s", ast_sorcery_object_get_id(endpt));
if (endpt->id.self.name.valid) {
res |= ast_msg_set_var(msg, "PJSIP_ENDPOINT", endpt->id.self.name.str);
Modified: team/mjordan/12-messaging/tests/test_message.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/12-messaging/tests/test_message.c?view=diff&rev=418443&r1=418442&r2=418443
==============================================================================
--- team/mjordan/12-messaging/tests/test_message.c (original)
+++ team/mjordan/12-messaging/tests/test_message.c Sat Jul 12 16:50:36 2014
@@ -169,8 +169,12 @@
return 0;
}
+static int message_received;
+
static int test_msg_send(const struct ast_msg *msg, const char *to, const char *from)
{
+ message_received = 1;
+
return 0;
}
@@ -427,7 +431,7 @@
/* Test setting/getting endpoint */
result = ast_msg_set_endpoint(msg, "%s", "terminus");
ast_test_validate(test, result == 0);
- actual = ast_msg_get_tech(msg);
+ actual = ast_msg_get_endpoint(msg);
ast_test_validate(test, !strcmp(actual, "terminus"));
/* Test setting/getting non-outbound variable */
@@ -733,10 +737,52 @@
return AST_TEST_PASS;
}
+AST_TEST_DEFINE(test_message_msg_send)
+{
+ RAII_VAR(struct ast_msg *, msg, NULL, ast_msg_safe_destroy);
+
+ switch (cmd) {
+ case TEST_INIT:
+ info->name = __func__;
+ info->category = TEST_CATEGORY;
+ info->summary = "Test message routing";
+ info->description =
+ "Test that a message can be routed if it has\n"
+ "a valid handler\n";
+ return AST_TEST_NOT_RUN;
+ case TEST_EXECUTE:
+ break;
+ }
+
+ ast_test_validate(test, ast_msg_tech_register(&test_msg_tech) == 0);
+ ast_test_validate(test, ast_msg_handler_register(&test_msg_handler) == 0);
+
+ msg = ast_msg_alloc();
+ ast_test_validate(test, msg != NULL);
+
+ ast_msg_set_to(msg, "foo");
+ ast_msg_set_context(msg, TEST_CONTEXT);
+ ast_msg_set_exten(msg, NULL);
+ ast_test_validate(test, ast_msg_has_destination(msg) == 1);
+
+ if (!ast_msg_send(msg, "testmsg:foo", "blah")) {
+ msg = NULL;
+ } else {
+ ast_test_status_update(test, "Failed to send message\n");
+ ast_test_set_result(test, AST_TEST_FAIL);
+ }
+
+ ast_test_validate(test, ast_msg_handler_unregister(&test_msg_handler) == 0);
+ ast_test_validate(test, ast_msg_tech_unregister(&test_msg_tech) == 0);
+
+ return AST_TEST_PASS;
+}
+
static int test_init_cb(struct ast_test_info *info, struct ast_test *test)
{
received_user_events = 0;
handler_received_message = 0;
+ message_received = 0;
AST_VECTOR_INIT(&expected_user_event_fields, DEFAULT_EXPECTED_EVENTS);
AST_VECTOR_INIT(&bad_headers, DEFAULT_EXPECTED_EVENTS);
@@ -780,6 +826,7 @@
AST_TEST_UNREGISTER(test_message_queue_both_nominal);
AST_TEST_UNREGISTER(test_message_has_destination_dialplan);
AST_TEST_UNREGISTER(test_message_has_destination_handler);
+ AST_TEST_UNREGISTER(test_message_msg_send);
if (test_message_context) {
ast_context_destroy(test_message_context, AST_MODULE);
@@ -833,6 +880,7 @@
AST_TEST_REGISTER(test_message_queue_both_nominal);
AST_TEST_REGISTER(test_message_has_destination_dialplan);
AST_TEST_REGISTER(test_message_has_destination_handler);
+ AST_TEST_REGISTER(test_message_msg_send);
create_test_dialplan();
More information about the asterisk-commits
mailing list