Tests: Cleanup: create `test_invalid_channel_subscription()` function
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Thu, 6 Feb 2020 20:43:34 +0000 (15:43 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 4 Mar 2021 16:59:19 +0000 (11:59 -0500)
No behavior changes intented.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I137ca2ef90ed5a5c572592f2538165c42ca9ca4b
Depends-on: lttng-ust: I5a800fc92e588c2a6a0e26282b0ad5f31c044479

tests/regression/tools/notification/notification.c

index 97a056b6ab94b49a694c81dbecae4a1b28e9426f..e59f2428d579f7755a058b160279109aba88dabb 100644 (file)
@@ -437,49 +437,53 @@ end:
 }
 
 static
-void test_notification_channel(const char *session_name,
-               const char *channel_name,
-               const enum lttng_domain_type domain_type,
-               const char **argv)
+void test_invalid_channel_subscription(
+               const enum lttng_domain_type domain_type)
 {
-       int ret = 0;
        enum lttng_condition_status condition_status;
        enum lttng_notification_channel_status nc_status;
-
-       struct lttng_action *action = NULL;
-       struct lttng_notification *notification = NULL;
-       struct lttng_notification_channel *notification_channel = NULL;
-       struct lttng_trigger *trigger = NULL;
-
-       struct lttng_condition *low_condition = NULL;
-       struct lttng_condition *high_condition = NULL;
-       struct lttng_condition *dummy_invalid_condition = NULL;
        struct lttng_condition *dummy_condition = NULL;
+       struct lttng_condition *dummy_invalid_condition = NULL;
+       struct lttng_notification_channel *notification_channel = NULL;
+       int ret = 0;
 
-       double low_ratio = 0.0;
-       double high_ratio = 0.90;
-
-       /* Set-up */
-       action = lttng_action_notify_create();
-       if (!action) {
-               fail("Setup error on action creation");
+       notification_channel = lttng_notification_channel_create(
+                       lttng_session_daemon_notification_endpoint);
+       ok(notification_channel, "Notification channel object creation");
+       if (!notification_channel) {
                goto end;
        }
 
-       /* Create a dummy, empty condition for later test */
+       /*
+        * Create a dummy, empty (thus invalid) condition to test error paths.
+        */
        dummy_invalid_condition = lttng_condition_buffer_usage_low_create();
        if (!dummy_invalid_condition) {
                fail("Setup error on condition creation");
                goto end;
        }
 
+       /*
+        * Test subscription and unsubscription of an invalid condition to/from
+        * a channel.
+        */
+       nc_status = lttng_notification_channel_subscribe(
+                       notification_channel, dummy_invalid_condition);
+       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
+                       "Subscribing to an invalid condition");
+
+       nc_status = lttng_notification_channel_unsubscribe(
+                       notification_channel, dummy_invalid_condition);
+       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
+                       "Unsubscribing from an invalid condition");
+
        /* Create a valid dummy condition with a ratio of 0.5 */
        dummy_condition = lttng_condition_buffer_usage_low_create();
        if (!dummy_condition) {
                fail("Setup error on dummy_condition creation");
                goto end;
-
        }
+
        condition_status = lttng_condition_buffer_usage_set_threshold_ratio(
                        dummy_condition, 0.5);
        if (condition_status != LTTNG_CONDITION_STATUS_OK) {
@@ -488,12 +492,68 @@ void test_notification_channel(const char *session_name,
        }
 
        ret = setup_buffer_usage_condition(dummy_condition, "dummy_condition",
-                       session_name, channel_name, domain_type);
+                       "dummy_session", "dummy_channel", domain_type);
        if (ret) {
                fail("Setup error on dummy condition creation");
                goto end;
        }
 
+       /*
+        * Test subscription and unsubscription to/from a channel with invalid
+        * parameters.
+        */
+       nc_status = lttng_notification_channel_subscribe(NULL, NULL);
+       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
+                       "Notification channel subscription is invalid: NULL, NULL");
+
+       nc_status = lttng_notification_channel_subscribe(
+                       notification_channel, NULL);
+       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
+                       "Notification channel subscription is invalid: NON-NULL, NULL");
+
+       nc_status = lttng_notification_channel_subscribe(NULL, dummy_condition);
+       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
+                       "Notification channel subscription is invalid: NULL, NON-NULL");
+
+       nc_status = lttng_notification_channel_unsubscribe(
+                       notification_channel, dummy_condition);
+       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_UNKNOWN_CONDITION,
+                       "Unsubscribing from a valid unknown condition");
+
+end:
+       lttng_notification_channel_destroy(notification_channel);
+       lttng_condition_destroy(dummy_invalid_condition);
+       lttng_condition_destroy(dummy_condition);
+       return;
+}
+
+static void test_notification_channel(const char *session_name,
+               const char *channel_name,
+               const enum lttng_domain_type domain_type,
+               const char **argv)
+{
+       int ret = 0;
+       enum lttng_condition_status condition_status;
+       enum lttng_notification_channel_status nc_status;
+
+       struct lttng_action *action = NULL;
+       struct lttng_notification *notification = NULL;
+       struct lttng_notification_channel *notification_channel = NULL;
+       struct lttng_trigger *trigger = NULL;
+
+       struct lttng_condition *low_condition = NULL;
+       struct lttng_condition *high_condition = NULL;
+
+       double low_ratio = 0.0;
+       double high_ratio = 0.90;
+
+       /* Set-up */
+       action = lttng_action_notify_create();
+       if (!action) {
+               fail("Setup error on action creation");
+               goto end;
+       }
+
        /* Register a low condition with a ratio */
        low_condition = lttng_condition_buffer_usage_low_create();
        if (!low_condition) {
@@ -571,34 +631,6 @@ void test_notification_channel(const char *session_name,
                goto end;
        }
 
-       /* Basic error path check */
-       nc_status = lttng_notification_channel_subscribe(NULL, NULL);
-       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
-                       "Notification channel subscription is invalid: NULL, NULL");
-
-       nc_status = lttng_notification_channel_subscribe(notification_channel, NULL);
-       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
-                       "Notification channel subscription is invalid: NON-NULL, NULL");
-
-       nc_status = lttng_notification_channel_subscribe(NULL, low_condition);
-       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
-                       "Notification channel subscription is invalid: NULL, NON-NULL");
-
-       nc_status = lttng_notification_channel_subscribe(
-                       notification_channel, dummy_invalid_condition);
-       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
-                       "Subscribing to an invalid condition");
-
-       nc_status = lttng_notification_channel_unsubscribe(
-                       notification_channel, dummy_invalid_condition);
-       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_INVALID,
-                       "Unsubscribing from an invalid condition");
-
-       nc_status = lttng_notification_channel_unsubscribe(
-                       notification_channel, dummy_condition);
-       ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_UNKNOWN_CONDITION,
-                       "Unsubscribing from a valid unknown condition");
-
        /* Subscribe a valid low condition */
        nc_status = lttng_notification_channel_subscribe(
                        notification_channel, low_condition);
@@ -746,8 +778,6 @@ end:
        lttng_action_destroy(action);
        lttng_condition_destroy(low_condition);
        lttng_condition_destroy(high_condition);
-       lttng_condition_destroy(dummy_invalid_condition);
-       lttng_condition_destroy(dummy_condition);
 }
 
 int main(int argc, const char *argv[])
@@ -797,6 +827,9 @@ int main(int argc, const char *argv[])
        diag("Test trigger for domain %s with buffer_usage_high condition", domain_type_string);
        test_triggers_buffer_usage_condition(session_name, channel_name, domain_type, LTTNG_CONDITION_TYPE_BUFFER_USAGE_HIGH);
 
+       /* Basic error path check. */
+       test_invalid_channel_subscription(domain_type);
+
        diag("Test notification channel api for domain %s", domain_type_string);
        test_notification_channel(session_name, channel_name, domain_type, argv);
 error:
This page took 0.028506 seconds and 4 git commands to generate.