From fa448dbea32e94c27a86aac25d783ed530dd055b Mon Sep 17 00:00:00 2001 From: Francis Deslauriers Date: Fri, 7 Feb 2020 00:36:32 -0500 Subject: [PATCH] Tests: Cleanup: create `test_subscription_twice()` function MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Francis Deslauriers Signed-off-by: Jérémie Galarneau Change-Id: I27f6b9a129d8659cefb9d753567723b5a0dab11c Depends-on: lttng-ust: I5a800fc92e588c2a6a0e26282b0ad5f31c044479 --- .../tools/notification/notification.c | 60 +++++++++++++++---- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/tests/regression/tools/notification/notification.c b/tests/regression/tools/notification/notification.c index e995bb657..706f1ca43 100644 --- a/tests/regression/tools/notification/notification.c +++ b/tests/regression/tools/notification/notification.c @@ -613,6 +613,55 @@ end: return ret; } +static void test_subscription_twice(const char *session_name, + const char *channel_name, + const enum lttng_domain_type domain_type) +{ + int ret = 0; + enum lttng_notification_channel_status nc_status; + + struct lttng_action *action = NULL; + struct lttng_notification_channel *notification_channel = NULL; + struct lttng_trigger *trigger = NULL; + + struct lttng_condition *condition = NULL; + + ret = register_buffer_usage_notify_trigger(session_name, channel_name, + domain_type, BUFFER_USAGE_TYPE_LOW, 0.99, &condition, + &action, &trigger); + if (ret) { + fail("Setup error on trigger registration"); + goto end; + } + + /* Begin testing. */ + notification_channel = lttng_notification_channel_create( + lttng_session_daemon_notification_endpoint); + ok(notification_channel, "Notification channel object creation"); + if (!notification_channel) { + goto end; + } + + /* Subscribe a valid condition. */ + nc_status = lttng_notification_channel_subscribe( + notification_channel, condition); + ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_OK, + "Subscribe to condition"); + + /* Subscribing again should fail. */ + nc_status = lttng_notification_channel_subscribe( + notification_channel, condition); + ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_ALREADY_SUBSCRIBED, + "Subscribe to a condition for which subscription was already done"); + +end: + lttng_unregister_trigger(trigger); + lttng_trigger_destroy(trigger); + lttng_notification_channel_destroy(notification_channel); + lttng_action_destroy(action); + lttng_condition_destroy(condition); +} + static void test_notification_channel(const char *session_name, const char *channel_name, const enum lttng_domain_type domain_type, @@ -670,16 +719,6 @@ static void test_notification_channel(const char *session_name, ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_OK, "Subscribe to condition"); - nc_status = lttng_notification_channel_subscribe( - notification_channel, low_condition); - ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_ALREADY_SUBSCRIBED, - "Subscribe to a condition for which subscription was already done"); - - nc_status = lttng_notification_channel_subscribe( - notification_channel, high_condition); - ok(nc_status == LTTNG_NOTIFICATION_CHANNEL_STATUS_ALREADY_SUBSCRIBED, - "Subscribe to a condition for which subscription was already done"); - resume_application(); /* Wait for notification to happen */ @@ -858,6 +897,7 @@ int main(int argc, const char *argv[]) /* Basic error path check. */ test_invalid_channel_subscription(domain_type); + test_subscription_twice(session_name, channel_name, domain_type); diag("Test notification channel api for domain %s", domain_type_string); test_notification_channel(session_name, channel_name, domain_type, argv); -- 2.34.1