]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Add a test to the event unit tests to catch ASTERISK-18002.
authorRichard Mudgett <rmudgett@digium.com>
Wed, 15 Jun 2011 16:43:31 +0000 (16:43 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 15 Jun 2011 16:43:31 +0000 (16:43 +0000)
The new tests check to see if there are ANY subscribers to the event type
when ast_event_check_subscriber() is not passed any specific ie values.

(issue ASTERISK-18002)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@323670 65c4cc65-6c06-0410-ace0-fbb531ad65f3

tests/test_event.c

index 5f0c1003c1ef134771b59d58a78f55d8dd2bf706..bc84b18571b00c1fa7026b242d63f9bc7afaf8d1 100644 (file)
@@ -312,7 +312,7 @@ AST_TEST_DEFINE(event_sub_test)
                        .expected_count = 2,
                },
                [TEST_SUBS_CUSTOM_RAW] = {
-                       .expected_count = 1,
+                       .expected_count = 2,
                },
                [TEST_SUBS_CUSTOM_UINT] = {
                        .expected_count = 1,
@@ -344,28 +344,13 @@ AST_TEST_DEFINE(event_sub_test)
                break;
        }
 
-       /*
-        * Subscription TEST_SUBS_ALL_STR:
-        *  - allocate normally
-        *  - subscribe to ALL events with a DEVICE STR IE check
-        */
-       ast_test_status_update(test, "Adding TEST_SUBS_ALL_STR subscription\n");
-       test_subs[TEST_SUBS_ALL_STR].sub = ast_event_subscribe(AST_EVENT_ALL, event_sub_cb,
-               test_subs_class_type_str(TEST_SUBS_ALL_STR), &test_subs[TEST_SUBS_ALL_STR].data,
-               AST_EVENT_IE_DEVICE, AST_EVENT_IE_PLTYPE_STR, "FOO/bar",
+       ast_test_status_update(test, "Check that NO CUSTOM subscribers exist\n");
+       sub_res = ast_event_check_subscriber(AST_EVENT_CUSTOM,
                AST_EVENT_IE_END);
-       if (!test_subs[TEST_SUBS_ALL_STR].sub) {
-               ast_test_status_update(test, "Failed to create TEST_SUBS_ALL_STR subscription\n");
-               res = AST_TEST_FAIL;
-               goto return_cleanup;
-       }
-
-       if (strcmp(ast_event_subscriber_get_description(test_subs[TEST_SUBS_ALL_STR].sub),
-               test_subs_class_type_str(TEST_SUBS_ALL_STR))) {
-               ast_test_status_update(test,
-                       "Unexpected subscription description on TEST_SUBS_ALL_STR subscription\n");
+       if (sub_res != AST_EVENT_SUB_NONE) {
+               ast_test_status_update(test, "CUSTOM subscriptions should not exist! (%d)\n",
+                       sub_res);
                res = AST_TEST_FAIL;
-               goto return_cleanup;
        }
 
        /*
@@ -392,6 +377,39 @@ AST_TEST_DEFINE(event_sub_test)
                goto return_cleanup;
        }
 
+       ast_test_status_update(test, "Check that a CUSTOM subscriber exists\n");
+       sub_res = ast_event_check_subscriber(AST_EVENT_CUSTOM,
+               AST_EVENT_IE_END);
+       if (sub_res != AST_EVENT_SUB_EXISTS) {
+               ast_test_status_update(test, "A CUSTOM subscription should exist! (%d)\n",
+                       sub_res);
+               res = AST_TEST_FAIL;
+       }
+
+       /*
+        * Subscription TEST_SUBS_ALL_STR:
+        *  - allocate normally
+        *  - subscribe to ALL events with a DEVICE STR IE check
+        */
+       ast_test_status_update(test, "Adding TEST_SUBS_ALL_STR subscription\n");
+       test_subs[TEST_SUBS_ALL_STR].sub = ast_event_subscribe(AST_EVENT_ALL, event_sub_cb,
+               test_subs_class_type_str(TEST_SUBS_ALL_STR), &test_subs[TEST_SUBS_ALL_STR].data,
+               AST_EVENT_IE_DEVICE, AST_EVENT_IE_PLTYPE_STR, "FOO/bar",
+               AST_EVENT_IE_END);
+       if (!test_subs[TEST_SUBS_ALL_STR].sub) {
+               ast_test_status_update(test, "Failed to create TEST_SUBS_ALL_STR subscription\n");
+               res = AST_TEST_FAIL;
+               goto return_cleanup;
+       }
+
+       if (strcmp(ast_event_subscriber_get_description(test_subs[TEST_SUBS_ALL_STR].sub),
+               test_subs_class_type_str(TEST_SUBS_ALL_STR))) {
+               ast_test_status_update(test,
+                       "Unexpected subscription description on TEST_SUBS_ALL_STR subscription\n");
+               res = AST_TEST_FAIL;
+               goto return_cleanup;
+       }
+
        /*
         * Subscription TEST_SUBS_CUSTOM_RAW:
         *  - allocate normally
@@ -576,7 +594,7 @@ AST_TEST_DEFINE(event_sub_test)
        /*
         * Exercise the API call to check for existing subscriptions.
         */
-       ast_test_status_update(test, "Checking for subscribers to events\n");
+       ast_test_status_update(test, "Checking for subscribers to specific events\n");
 
        /* Check STR matching. */
        sub_res = ast_event_check_subscriber(AST_EVENT_CUSTOM,
@@ -678,6 +696,31 @@ AST_TEST_DEFINE(event_sub_test)
                res = AST_TEST_FAIL;
        }
 
+       ast_test_status_update(test, "Special event posting test\n");
+
+       /*
+        * Event to check if event is even posted.
+        *
+        * Matching subscriptions:
+        * TEST_SUBS_CUSTOM_RAW
+        */
+       event = ast_event_new(AST_EVENT_CUSTOM,
+               AST_EVENT_IE_DEVICE, AST_EVENT_IE_PLTYPE_STR, "Mula",
+               AST_EVENT_IE_MAILBOX, AST_EVENT_IE_PLTYPE_RAW, "FOO/bar", sizeof("FOO/bar"),
+               AST_EVENT_IE_END);
+       if (!event) {
+               ast_test_status_update(test, "Failed to create event\n");
+               res = AST_TEST_FAIL;
+               goto return_cleanup;
+       }
+       if (ast_event_queue(event)) {
+               ast_event_destroy(event);
+               event = NULL;
+               ast_test_status_update(test, "Failed to queue event\n");
+               res = AST_TEST_FAIL;
+               goto return_cleanup;
+       }
+
        /*
         * Subscription TEST_SUBS_CUSTOM_ANY:
         *  - allocate normally