summaryrefslogtreecommitdiff
path: root/tests/test_cel.c
diff options
context:
space:
mode:
authorKinsey Moore <kmoore@digium.com>2013-08-17 14:46:44 +0000
committerKinsey Moore <kmoore@digium.com>2013-08-17 14:46:44 +0000
commitd7f1f3127084e4b7b204141c0b40c28c327f74b0 (patch)
treedf54e4afb05375633f67c2cefe694eddbf2f146e /tests/test_cel.c
parent59753b1ea10a83ea770c35b24cd443620913349c (diff)
Refactor CEL to avoid using the event system core
This removes usage of the event system for CEL backend data distribution and strips unused pieces out of the event system. Review: https://reviewboard.asterisk.org/r/2732/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@396888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'tests/test_cel.c')
-rw-r--r--tests/test_cel.c69
1 files changed, 7 insertions, 62 deletions
diff --git a/tests/test_cel.c b/tests/test_cel.c
index 2bf4f29e5..0ad92f475 100644
--- a/tests/test_cel.c
+++ b/tests/test_cel.c
@@ -56,6 +56,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define CHANNEL_TECH_NAME "CELTestChannel"
+#define TEST_BACKEND_NAME "CEL Test Logging"
+
/*! \brief A placeholder for Asterisk's 'real' CEL configuration */
static struct ast_cel_general_config *saved_config;
@@ -1544,9 +1546,6 @@ AST_TEST_DEFINE(test_cel_local_optimize)
return AST_TEST_PASS;
}
-/*! Subscription for CEL events */
-static struct ast_event_sub *event_sub = NULL;
-
/*! Container for astobj2 duplicated ast_events */
static struct ao2_container *cel_received_events = NULL;
@@ -1648,26 +1647,15 @@ static int append_expected_event(
return append_expected_event_snapshot(snapshot, type, userdefevname, extra, peer);
}
-static void test_sub(const struct ast_event *event, void *data)
+static void test_sub(struct ast_event *event)
{
struct ast_event *event_dup = ao2_dup_event(event);
- const char *sync_tag;
SCOPED_MUTEX(mid_test_lock, &mid_test_sync_lock);
if (!event_dup) {
return;
}
- sync_tag = ast_event_get_ie_str(event, AST_EVENT_IE_SERVICE);
- if (sync_tag) {
- if (!strcmp(sync_tag, "SYNC")) {
- /* trigger things */
- SCOPED_MUTEX(lock, &sync_lock);
- ast_cond_signal(&sync_out);
- return;
- }
- }
-
/* save the event for later processing */
ao2_link(cel_received_events, event_dup);
@@ -1690,7 +1678,6 @@ static void test_sub(const struct ast_event *event, void *data)
*/
static int test_cel_init_cb(struct ast_test_info *info, struct ast_test *test)
{
- ast_assert(event_sub == NULL);
ast_assert(cel_received_events == NULL);
ast_assert(cel_expected_events == NULL);
@@ -1707,8 +1694,9 @@ static int test_cel_init_cb(struct ast_test_info *info, struct ast_test *test)
cel_expected_events = ao2_container_alloc(1, NULL, NULL);
/* start the CEL event callback */
- event_sub = ast_event_subscribe(AST_EVENT_CEL, test_sub, "CEL Test Logging",
- NULL, AST_EVENT_IE_END);
+ if (ast_cel_backend_register(TEST_BACKEND_NAME, test_sub)) {
+ return -1;
+ }
return 0;
}
@@ -1866,29 +1854,6 @@ static int check_events(struct ast_test *test, struct ao2_container *local_expec
return 0;
}
-static struct ast_event *create_sync_event(void)
-{
- struct ast_event *event_dup;
- RAII_VAR(struct ast_event *, event, ao2_callback(cel_expected_events, 0, NULL, NULL), ao2_cleanup);
- uint16_t event_len;
-
- if (!event) {
- return NULL;
- }
-
- event_len = ast_event_get_size(event);
-
- event_dup = ast_calloc(1, event_len);
- if (!event_dup) {
- return NULL;
- }
-
- memcpy(event_dup, event, event_len);
- ast_event_append_ie_str(&event_dup, AST_EVENT_IE_SERVICE, "SYNC");
-
- return event_dup;
-}
-
/*!
* \internal
* \brief Callback function called after each test executes.
@@ -1900,35 +1865,15 @@ static struct ast_event *create_sync_event(void)
*/
static int cel_verify_and_cleanup_cb(struct ast_test_info *info, struct ast_test *test)
{
- struct ast_event *sync;
RAII_VAR(struct ao2_container *, local_expected, cel_expected_events, ao2_cleanup);
RAII_VAR(struct ao2_container *, local_received, cel_received_events, ao2_cleanup);
- ast_assert(event_sub != NULL);
ast_assert(cel_received_events != NULL);
ast_assert(cel_expected_events != NULL);
do_sleep();
- /* sync with the event system */
- sync = create_sync_event();
- ast_test_validate(test, sync != NULL);
- if (ast_event_queue(sync)) {
- ast_event_destroy(sync);
- ast_test_validate(test, NULL);
- } else {
- struct timeval start = ast_tvnow();
- struct timespec end = {
- .tv_sec = start.tv_sec + 15,
- .tv_nsec = start.tv_usec * 1000
- };
-
- SCOPED_MUTEX(lock, &sync_lock);
- ast_cond_timedwait(&sync_out, &sync_lock, &end);
- }
-
/* stop the CEL event callback and clean up storage structures*/
- ast_event_unsubscribe(event_sub);
- event_sub = NULL;
+ ast_cel_backend_unregister(TEST_BACKEND_NAME);
/* cleaned up by RAII_VAR's */
cel_expected_events = NULL;