summaryrefslogtreecommitdiff
path: root/main/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/test.c')
-rw-r--r--main/test.c50
1 files changed, 45 insertions, 5 deletions
diff --git a/main/test.c b/main/test.c
index c144d3eb4..1ad7b238c 100644
--- a/main/test.c
+++ b/main/test.c
@@ -56,11 +56,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$");
*/
struct stasis_topic *test_suite_topic;
-/*! \since 12
- * \brief The message type for test suite messages
- */
-STASIS_MESSAGE_TYPE_DEFN(ast_test_suite_message_type);
-
/*! This array corresponds to the values defined in the ast_test_state enum */
static const char * const test_result2str[] = {
[AST_TEST_NOT_RUN] = "NOT RUN",
@@ -1012,6 +1007,51 @@ struct ast_json *ast_test_suite_get_blob(struct ast_test_suite_message_payload *
return payload->blob;
}
+static struct ast_manager_event_blob *test_suite_event_to_ami(struct stasis_message *msg)
+{
+ RAII_VAR(struct ast_str *, packet_string, ast_str_create(128), ast_free);
+ struct ast_test_suite_message_payload *payload;
+ struct ast_json *blob;
+ const char *type;
+
+ payload = stasis_message_data(msg);
+ if (!payload) {
+ return NULL;
+ }
+ blob = ast_test_suite_get_blob(payload);
+ if (!blob) {
+ return NULL;
+ }
+
+ type = ast_json_string_get(ast_json_object_get(blob, "type"));
+ if (ast_strlen_zero(type) || strcmp("testevent", type)) {
+ return NULL;
+ }
+
+ ast_str_append(&packet_string, 0, "Type: StateChange\r\n");
+ ast_str_append(&packet_string, 0, "State: %s\r\n",
+ ast_json_string_get(ast_json_object_get(blob, "state")));
+ ast_str_append(&packet_string, 0, "AppFile: %s\r\n",
+ ast_json_string_get(ast_json_object_get(blob, "appfile")));
+ ast_str_append(&packet_string, 0, "AppFunction: %s\r\n",
+ ast_json_string_get(ast_json_object_get(blob, "appfunction")));
+ ast_str_append(&packet_string, 0, "AppLine: %ld\r\n",
+ ast_json_integer_get(ast_json_object_get(blob, "line")));
+ ast_str_append(&packet_string, 0, "%s\r\n",
+ ast_json_string_get(ast_json_object_get(blob, "data")));
+
+ return ast_manager_event_blob_create(EVENT_FLAG_REPORTING,
+ "TestEvent",
+ "%s",
+ ast_str_buffer(packet_string));
+}
+
+/*! \since 12
+ * \brief The message type for test suite messages
+ */
+STASIS_MESSAGE_TYPE_DEFN(ast_test_suite_message_type,
+ .to_ami = test_suite_event_to_ami);
+
void __ast_test_suite_event_notify(const char *file, const char *func, int line, const char *state, const char *fmt, ...)
{
RAII_VAR(struct ast_test_suite_message_payload *, payload,