Event wait done API function 51/275751/5
authorArkadiusz Nowak <a.nowak3@samsung.com>
Tue, 31 May 2022 09:17:23 +0000 (11:17 +0200)
committerArkadiusz Nowak <a.nowak3@samsung.com>
Fri, 3 Jun 2022 09:14:02 +0000 (11:14 +0200)
Function subsession_event_wait_done that replaces:
subsession_add_user_wait_done
subsession_remove_user_wait_done
subsession_switch_wait_done

Error tests for subsession_event_wait_done

Appened permission denied error code to
map_dbus_call_error_to_return_value

Change-Id: I753b6ef5f3ee68f45ddacf58d58065855ae1825d

libsessiond/include/sessiond.h
libsessiond/src/lib.c
libsessiond/src/lib.h
libsessiond/target_test/CMakeLists.txt
libsessiond/target_test/test_api_adduserwait.cpp
libsessiond/target_test/test_api_event_wait_done_err.cpp [new file with mode: 0644]
libsessiond/target_test/test_api_reg_unreg_add_user_wait.cpp
libsessiond/target_test/test_api_removeuserwait.cpp
libsessiond/target_test/test_api_switch_user_wait.cpp

index f74ddcbdd24e3a1824d783294bfc9a7c4eb79955..ccc3846a54625854c9a6df2c102743be3237a490 100644 (file)
@@ -79,17 +79,13 @@ int subsession_add_user(int session_uid, int user, subsession_reply_callback cb,
 int subsession_remove_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data);
 int subsession_switch_user(int session_uid, int next_user, subsession_reply_callback cb, void *cb_data);
 
-int subsession_add_user_wait_done(int session_uid, int user);
-int subsession_remove_user_wait_done(int session_uid, int user);
-
-int subsession_switch_wait_done(int session_uid, uint64_t switch_id);
-
 int subsession_get_user_list(int session_uid, int **user_list, int *user_count);
 int subsession_get_current_user(int session_uid, int *user);
 
 typedef int (*subsession_event_callback) (subsession_event_info info, void *cb_data);
 int subsession_register_event_callback(int session_uid, subsession_event_type_e event_bits, subsession_event_callback cb, void *cb_data);
 int subsession_unregister_event_callback(int session_uid, subsession_event_type_e event_bits);
+int subsession_event_wait_done(int session_uid, subsession_event_type_e event, subsession_event_info info);
 
 #ifdef __cplusplus
 }
index cc34aa2eaa8b2597eb080a4e6e29eb0f990c3631..e48dc0c8050afa30b1f58987cc68652da2823875 100644 (file)
@@ -168,12 +168,18 @@ int map_dbus_call_error_to_return_value(const GError *error) {
 
        g_assert(error);
 
-       if (error->domain == G_DBUS_ERROR)
-               if (error->code == G_DBUS_ERROR_NAME_HAS_NO_OWNER || error->code == G_DBUS_ERROR_SERVICE_UNKNOWN)
+       if (error->domain == G_DBUS_ERROR) {
+               if (error->code == G_DBUS_ERROR_NAME_HAS_NO_OWNER || error->code == G_DBUS_ERROR_SERVICE_UNKNOWN) {
                        return SUBSESSION_ERROR_NOT_SUPPORTED;
+               }
+               if (error->code == G_DBUS_ERROR_ACCESS_DENIED) {
+                       return SUBSESSION_ERROR_PERMISSION_DENIED;
+               }
+       }
 
-       if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_DBUS_ERROR)
+       if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_DBUS_ERROR) {
                return get_dbus_error_mapping_to_subsession_error(error->message);
+       }
 
        return SUBSESSION_ERROR_IO_ERROR;
 }
@@ -198,23 +204,27 @@ gint g_compare_user_params (  gconstpointer client_data,   gconstpointer paramet
 
        signal_client_data_t *signal_client_data = (signal_client_data_t*)client_data;
 
+       maybe_not_comparable_if(
+               client_data_are_null(client_data)
+       )
+
        int client_session_uid = 0;
        int client_user = 0;
        maybe_g_variant_get_int_(signal_client_data->params, "(ii)", &client_session_uid, &client_user);
-
-       maybe_not_compared_if(
-               not_valid(client_session_uid,
-               not_valid(client_user)))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(client_session_uid,
+               user_id_is_not_valid(client_user))
+       )
 
        GVariant *params = (GVariant *)parameters;
 
        int params_session_uid = 0;
        int params_user = 0;
        maybe_g_variant_get_int_(params, "(ii)", &params_session_uid, &params_user);
-
-       maybe_not_compared_if(
-               not_valid(params_session_uid,
-               not_valid(params_user)))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(client_session_uid,
+               user_id_is_not_valid(client_user))
+       )
 
        if( client_session_uid == params_session_uid &&
                client_user == params_user) {
@@ -225,22 +235,32 @@ gint g_compare_user_params (  gconstpointer client_data,   gconstpointer paramet
 
 gint g_compare_session_uid_params (  gconstpointer client_data,   gconstpointer parameters) {
 
+       maybe_not_comparable_if(
+               client_data_are_null(client_data,
+               parameters_are_null(parameters))
+       )
+
        signal_client_data_t *signal_client_data = (signal_client_data_t*)client_data;
 
+       maybe_not_comparable_if(
+               client_data_are_null(client_data,
+               parameters_are_null(parameters))
+       )
+
        int client_session_uid = 0;
        maybe_g_variant_get_int_(signal_client_data->params, "(i)", &client_session_uid);
-
-       maybe_not_compared_if(
-               not_valid(client_session_uid))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(client_session_uid)
+       )
 
        GVariant *params = (GVariant *)parameters;
 
        int params_session_uid = 0;
 
        maybe_g_variant_get_int_(params, "(i)", &params_session_uid);
-
-       maybe_not_compared_if(
-               not_valid(params_session_uid))
+       maybe_not_comparable_if(
+               int_not_valid(params_session_uid)
+       )
 
        if( client_session_uid == params_session_uid) {
                return COMPARATOR_RESULT_SAME_;
@@ -250,13 +270,18 @@ gint g_compare_session_uid_params (  gconstpointer client_data,   gconstpointer
 
 gint g_compare_session_uid_params_switch_wait (  gconstpointer client_data,   gconstpointer parameters) {
 
+       maybe_not_comparable_if(
+               client_data_are_null(client_data,
+               parameters_are_null(parameters))
+       )
+
        signal_client_data_t *signal_client_data = (signal_client_data_t*)client_data;
 
        int client_session_uid = 0;
        maybe_g_variant_get_int_(signal_client_data->params, "(i)", &client_session_uid);
-
-       maybe_not_compared_if(
-               not_valid(client_session_uid))
+       maybe_not_comparable_if(
+               user_id_is_not_valid(client_session_uid)
+       )
 
        GVariant *params = (GVariant *)parameters;
 
@@ -272,11 +297,12 @@ gint g_compare_session_uid_params_switch_wait (  gconstpointer client_data,   gc
                &params_next_user
        );
 
-       maybe_not_compared_if(
-               not_valid(params_session_uid,
-               not_valid(params_switch_id,
-               not_valid(params_prev_user,
-               not_valid(params_next_user)))))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(params_session_uid,
+               switch_id_is_not_valid(params_switch_id,
+               switched_user_id_is_not_valid(params_prev_user,
+               switched_user_id_is_not_valid(params_next_user))))
+       )
 
        if( client_session_uid == params_session_uid) {
                return COMPARATOR_RESULT_SAME_;
@@ -286,13 +312,18 @@ gint g_compare_session_uid_params_switch_wait (  gconstpointer client_data,   gc
 
 gint g_compare_session_uid_params_wait (gconstpointer client_data, gconstpointer parameters) {
 
+       maybe_not_comparable_if(
+               client_data_are_null(client_data,
+               parameters_are_null(parameters))
+       )
+
        signal_client_data_t *signal_client_data = (signal_client_data_t*)client_data;
 
        int client_session_uid = 0;
        maybe_g_variant_get_int_(signal_client_data->params, "(i)", &client_session_uid);
-
-       maybe_not_compared_if(
-               not_valid(client_session_uid))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(client_session_uid)
+       )
 
        GVariant *params = (GVariant *)parameters;
 
@@ -300,10 +331,10 @@ gint g_compare_session_uid_params_wait (gconstpointer client_data, gconstpointer
        int user_id = 0;
 
        maybe_g_variant_get_int_(params, "(ii)", &params_session_uid, &user_id);
-
-       maybe_not_compared_if(
-               not_valid(params_session_uid,
-               not_valid(user_id)))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(params_session_uid,
+               user_id_is_not_valid(user_id))
+       )
 
        if( client_session_uid == params_session_uid) {
                return COMPARATOR_RESULT_SAME_;
@@ -388,16 +419,21 @@ static void signal_user_ops_complete_handler(
 
 gint g_compare_switch_user_params (  gconstpointer client_data,   gconstpointer parameters) {
 
+       maybe_not_comparable_if(
+               client_data_are_null(client_data,
+               parameters_are_null(parameters))
+       )
+
        signal_client_data_t *signal_client_data = (signal_client_data_t*)client_data;
 
        int client_session_uid = 0;
        int client_next_user = 0;
 
        maybe_g_variant_get_int_(signal_client_data->params, "(ii)", &client_session_uid, &client_next_user);
-
-       maybe_not_compared_if(
-               not_valid(client_session_uid,
-               not_valid(client_next_user)))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(client_session_uid,
+               switched_user_id_is_not_valid(client_next_user))
+       )
 
        GVariant *params = (GVariant *)parameters;
 
@@ -407,12 +443,12 @@ gint g_compare_switch_user_params (  gconstpointer client_data,   gconstpointer
        int params_next_user = 0;
 
        maybe_g_variant_get_int_(params, "(ixii)", &params_session_uid, &params_switch_id, &params_prev_user, &params_next_user);
-
-       maybe_not_compared_if(
-               not_valid(params_session_uid,
-               not_valid(params_switch_id,
-               not_valid(params_prev_user,
-               not_valid(params_next_user)))))
+       maybe_not_comparable_if(
+               session_uid_is_not_valid(params_session_uid,
+               switch_id_is_not_valid(params_switch_id,
+               switched_user_id_is_not_valid(params_prev_user,
+               switched_user_id_is_not_valid(params_next_user))))
+       )
 
        gboolean all_ok = (client_session_uid == params_session_uid) &&
                                        (client_next_user == params_next_user);
@@ -553,6 +589,7 @@ static void signal_switch_user_started_handler(GDBusConnection *connection,
                &event_info.switch_user.prev_user,
                &event_info.switch_user.next_user);
 
+
        subsession_event_callback event_callback = signal_data->client_callback;
        event_callback(event_info, signal_data->client_callback_data);
 }
@@ -741,18 +778,15 @@ void init_callbacks_list(client_callbacks_data_t *callbacks_data, GVariant *para
 #define callbacks_data_append_to_list(callback_data, data) \
        callback_data.list = g_list_append(callback_data.list, data)
 
-#define return_invalid_param_if(a) error_if(a, SUBSESSION_ERROR_INVALID_PARAMETER)
-
-#define return_invalid_if_input_params_are_wrong \
-       return_invalid_param_if( \
-       not_valid(session_uid, \
-       not_valid(user, \
-       not_valid(cb, \
-       not_valid(cb_data)))))
 
 EXPORT_API int subsession_add_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data) {
 
-       return_invalid_if_input_params_are_wrong
+       return_if(
+               session_uid_is_not_valid(session_uid,
+               user_id_is_not_valid(user,
+               callback_is_null(cb,
+               callbacks_data_are_null(cb_data))))
+       )
 
        g_mutex_lock (&add_user_callbacks_data_mt.mutex);
 
@@ -781,7 +815,12 @@ EXPORT_API int subsession_add_user(int session_uid, int user, subsession_reply_c
 
 EXPORT_API int subsession_remove_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data) {
 
-       return_invalid_if_input_params_are_wrong
+       return_if(
+               int_not_valid(session_uid,
+               int_not_valid(user,
+               callback_is_null(cb,
+               callbacks_data_are_null(cb_data))))
+       )
 
        g_mutex_lock (&remove_user_callbacks_data_mt.mutex);
 
@@ -812,11 +851,12 @@ EXPORT_API int subsession_remove_user(int session_uid, int user, subsession_repl
 
 EXPORT_API int subsession_switch_user(int session_uid, int next_user, subsession_reply_callback cb, void *cb_data) {
 
-       return_invalid_param_if(
-               not_valid(session_uid,
-               not_valid(next_user,
-               not_valid(cb,
-               not_valid(cb_data)))))
+       return_if(
+               int_not_valid_on_switch(session_uid,
+               int_not_valid_on_switch(next_user,
+               callback_is_null(cb,
+               callbacks_data_are_null(cb_data))))
+       )
 
        g_mutex_lock (&switch_user_callbacks_data_mt.mutex);
 
@@ -980,6 +1020,11 @@ EXPORT_API int subsession_register_event_callback(int session_uid, subsession_ev
 
 int unregister_event_callback(client_callbacks_data_t *callbacks_data, int session_uid) {
 
+       return_if(
+               callbacks_data_are_null(callbacks_data,
+               session_uid_is_not_valid(session_uid))
+       )
+
        GVariant * gv_session_uid = g_variant_new("(i)", session_uid);
 
        signal_client_data_t *signal_data = take_from_callbacks_data_and_remove_from_list(callbacks_data, gv_session_uid, g_compare_session_uid_params);
@@ -1015,24 +1060,57 @@ EXPORT_API int subsession_unregister_event_callback(int session_uid, subsession_
        return SUBSESSION_ERROR_NONE;
 }
 
-EXPORT_API int subsession_add_user_wait_done(int session_uid, int user) {
+int subsession_add_user_wait_done(int session_uid, int user) {
 
        GVariant * params = g_variant_new("(ii)", session_uid, user);
        return method_call_no_signal(dbus_method_call.AddUserDone, params);
 }
 
-EXPORT_API int subsession_remove_user_wait_done(int session_uid, int user) {
+int subsession_remove_user_wait_done(int session_uid, int user) {
 
        GVariant * params = g_variant_new("(ii)", session_uid, user);
        return method_call_no_signal(dbus_method_call.RemoveUserDone, params);
 }
 
-EXPORT_API int subsession_switch_wait_done(int session_uid, uint64_t switch_id) {
+int subsession_switch_wait_done(int session_uid, uint64_t switch_id) {
 
        GVariant * params = g_variant_new("(ix)", session_uid, (gint64)switch_id);
        return method_call_no_signal(dbus_method_call.SwitchUserDone, params);
 }
 
+EXPORT_API int subsession_event_wait_done(int session_uid, subsession_event_type_e event, subsession_event_info info) {
+       return_if(
+               session_uid_is_not_valid(session_uid)
+       )
+       switch (event) {
+               case SUBSESSION_ADD_USER_WAIT:
+                       return_if(
+                               user_id_is_not_valid(info.add_user.user)
+                       )
+                       return subsession_add_user_wait_done(session_uid, info.add_user.user);
+                       break;
+
+               case SUBSESSION_REMOVE_USER_WAIT:
+                       return_if(
+                               user_id_is_not_valid(info.remove_user.user)
+                       )
+                       return subsession_remove_user_wait_done(session_uid, info.remove_user.user);
+                       break;
+
+               case SUBSESSION_SWITCH_USER_WAIT:
+                       return_if(
+                               switched_user_id_is_not_valid(info.switch_user.switch_id)
+                       )
+                       return subsession_switch_wait_done(session_uid, info.switch_user.switch_id);
+                       break;
+
+               default:
+                       return SUBSESSION_ERROR_INVALID_PARAMETER;
+       }
+       return SUBSESSION_ERROR_NOT_SUPPORTED;
+}
+
+
 EXPORT_API int subsession_get_user_list(int session_uid, int **user_list, int *user_count) {
 
        g_autoptr(GVariant) out = NULL;
index 98f740d6f9c344eb99f2c2253efea5335bde6424..d269e79835268def37494aa3a626e96e0d0fd100 100644 (file)
@@ -50,39 +50,26 @@ typedef struct {
        if (!g_variant_is_of_type(var, G_VARIANT_TYPE(c_str_) )) { return; } \
        g_variant_get(var, c_str_, args)
 
-#define not_valid_g(X) _Generic((X), \
-       int : not_valid_int, \
-       uint64_t : not_valid_uint64_t, \
-       subsession_reply_callback : not_valid_subsession_reply_callback, \
-       void* : not_valid_void_ptr, \
-       int* : not_valid_int_ptr \
-       )(X)
 
-#define not_valid(a, ...) || (not_valid_g(a)) __VA_ARGS__
+#define int_not_valid(a, ...) || (a <= 0) __VA_ARGS__
 
-#define error_if(a, error) if ( (0) a ) { return error; }
+#define session_uid_is_not_valid(a, ...) || (a <= 0) __VA_ARGS__
+#define user_id_is_not_valid(a, ...) || (a <= 0) __VA_ARGS__
+#define switched_user_id_is_not_valid(a, ...) || (a < 0) __VA_ARGS__
+#define switch_id_is_not_valid(a, ...) || (a <= 0) __VA_ARGS__
 
-#define maybe_not_compared_if(a) error_if(a, COMPARATOR_RESULT_DIFFERENT_)
 
-int not_valid_int_ptr(int *a) {
-       return a == NULL;
-}
-
-int not_valid_uint64_t(uint64_t a) {
-       return a < 0;
-}
+#define int_not_valid_on_switch(a, ...) || (a < 0) __VA_ARGS__
 
-int not_valid_int(int a) {
-       return a < 0;
-}
+#define client_data_are_null(a, ...) || (a == NULL) __VA_ARGS__
+#define parameters_are_null(a, ...) || (a == NULL) __VA_ARGS__
+#define callback_is_null(a, ...) || (a == NULL) __VA_ARGS__
+#define callbacks_data_are_null(a, ...) || (a == NULL) __VA_ARGS__
 
-int not_valid_subsession_reply_callback (subsession_reply_callback cb) {
-       return cb == NULL;
-}
+ #define error_if(a, error) if ( (0) a ) { return error; }
 
-int not_valid_void_ptr(void *data) {
-       return data == NULL;
-}
+#define maybe_not_comparable_if(a) error_if(a, COMPARATOR_RESULT_DIFFERENT_)
+#define return_if(a) error_if(a, SUBSESSION_ERROR_INVALID_PARAMETER)
 
 #ifdef __cplusplus
 }
index 7c15b43d5e774d2ec1b1f41bab2eb6faa6f30e8c..282df9273d4d73b85b6b1aacd4cd2af4491ff70e 100644 (file)
@@ -23,3 +23,4 @@ add_libsd_target_test(api_switch_user_wait  "")
 add_libsd_target_test(api_reg_unreg_add_user_wait  "")
 add_libsd_target_test(api_switch_user_completion "")
 add_libsd_target_test(api_get_user_list  "")
+add_libsd_target_test(api_event_wait_done_err "")
index 8734757adff4613548c8a357bac72b167b407113..babdbd4be360975159c125276d37ef0ea4e8a4d8 100644 (file)
@@ -78,7 +78,7 @@ int test_subsession_add_user_wait_callback(subsession_event_info info, void *cb_
        user_data->user_id = info.add_user.user;
        user_data->session_uid = info.add_user.session_uid;
 
-       user_data->callback_result = subsession_add_user_wait_done(test_subsession_uid, 2);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.add_user.event, info);
        g_atomic_int_inc(&callback_adduserstarted_reference);
 
        return 0;
diff --git a/libsessiond/target_test/test_api_event_wait_done_err.cpp b/libsessiond/target_test/test_api_event_wait_done_err.cpp
new file mode 100644 (file)
index 0000000..c3b2903
--- /dev/null
@@ -0,0 +1,87 @@
+#include<iostream>
+#include <gtest/gtest.h>
+#include <gio/gio.h>
+#include <pthread.h>
+#include "sessiond.h"
+#include "test_hlp.hpp"
+
+//subsession_event_wait_done(int session_uid, subsession_event_type_e event, subsession_event_info info);
+       /*SUBSESSION_ADD_USER_WAIT                   = 1 << 0,
+       SUBSESSION_REMOVE_USER_WAIT                = 1 << 1,
+       SUBSESSION_SWITCH_USER_WAIT                = 1 << 2,
+       SUBSESSION_SWITCH_USER_COMPLETION          = 1 << 3,
+*/
+const int test_actions = 9;
+
+TEST(subsession_event_wait_err_test, FailAtEventWaitBadMask) {
+
+       subsession_event_info e_info = { .switch_user = {.event = SUBSESSION_EVENT_ALL,
+               .session_uid = subsession_5001::subsession_uid(),
+               .switch_id = 1,
+               .prev_user = TestUser::user_1,
+               .next_user = TestUser::user_2 },
+       };
+
+       std::array<res_t, test_actions> results {
+               res_t {
+                       subsession_event_wait_done(
+                               subsession_5001::subsession_uid(),
+                               subsession_event_type_e(SUBSESSION_EVENT_ALL),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with  SUBSESSION_EVENT_ALL returns error" },
+               res_t {
+                       subsession_event_wait_done(
+                               subsession_5001::subsession_uid(),
+                               subsession_event_type_e(SUBSESSION_ADD_USER_WAIT | SUBSESSION_REMOVE_USER_WAIT),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with  SUBSESSION_ADD_USER_WAIT | SUBSESSION_REMOVE_USER_WAIT  returns error" },
+
+               res_t { subsession_event_wait_done(
+                               subsession_5001::subsession_uid(),
+                               subsession_event_type_e(SUBSESSION_ADD_USER_WAIT | SUBSESSION_SWITCH_USER_WAIT),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with  SUBSESSION_ADD_USER_WAIT | SUBSESSION_SWITCH_USER_WAIT  returns error" },
+               res_t { subsession_event_wait_done(
+                               subsession_5001::subsession_uid(),
+                               subsession_event_type_e(SUBSESSION_ADD_USER_WAIT | SUBSESSION_SWITCH_USER_COMPLETION),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with  SUBSESSION_ADD_USER_WAIT | SUBSESSION_SWITCH_USER_COMPLETION  returns error" },
+               res_t { subsession_event_wait_done(
+                               subsession_5001::subsession_uid(),
+                               subsession_event_type_e(SUBSESSION_ADD_USER_WAIT | SUBSESSION_REMOVE_USER_WAIT | SUBSESSION_SWITCH_USER_WAIT),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with  SUBSESSION_ADD_USER_WAIT | SUBSESSION_REMOVE_USER_WAIT | SUBSESSION_SWITCH_USER_WAIT returns error" },
+               res_t { subsession_event_wait_done(
+                               subsession_5001::subsession_uid(),
+                               subsession_event_type_e(SUBSESSION_ADD_USER_WAIT | SUBSESSION_REMOVE_USER_WAIT | SUBSESSION_SWITCH_USER_COMPLETION),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with  SUBSESSION_ADD_USER_WAIT | SUBSESSION_REMOVE_USER_WAIT | SUBSESSION_SWITCH_USER_COMPLETION returns error" },
+               res_t { subsession_event_wait_done(
+                               subsession_5001::subsession_uid(),
+                               subsession_event_type_e(SUBSESSION_ADD_USER_WAIT | SUBSESSION_SWITCH_USER_WAIT | SUBSESSION_SWITCH_USER_COMPLETION),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with  SUBSESSION_ADD_USER_WAIT | SUBSESSION_SWITCH_USER_WAIT | SUBSESSION_SWITCH_USER_COMPLETION returns error" },
+               res_t { subsession_event_wait_done(
+                               -(subsession_5001::subsession_uid()),
+                               subsession_event_type_e(SUBSESSION_SWITCH_USER_WAIT),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with bad session_uid < 0 value" },
+               res_t { subsession_event_wait_done(
+                               0,
+                               subsession_event_type_e(SUBSESSION_SWITCH_USER_WAIT),
+                               e_info),
+                       SUBSESSION_ERROR_INVALID_PARAMETER,
+                       "Check if subsession_event_wait_done with bad session_uid = 0 value" },
+       };
+
+       summarize_results<test_actions>(results);
+       EXPECT_EQ(0,0);
+}
index b115167877a6c33088e9af470ccb7780a5ce1d37..aaff2cd193a4b966eec5d149a658d1058ee613fa 100644 (file)
@@ -71,7 +71,7 @@ int test_subsession_add_user_wait_callback(subsession_event_info info, void *cb_
        user_data->user_id = info.add_user.user;
        user_data->session_uid = info.add_user.session_uid;
 
-       user_data->callback_result = subsession_add_user_wait_done(test_subsession_uid, 2);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.add_user.event, info);
        g_atomic_int_inc(&callback_adduserstarted_reference);
 
        return 0;
index c61d94ee840407ce75afc757e960f4da63a9409c..fa4edfdc4a208fb4d0980a42ebc15b60e71e0576 100644 (file)
@@ -73,9 +73,9 @@ int test_subsession_remove_user_wait_callback(subsession_event_info info, void *
 
        user_data->callback_result = 0;
 
-       user_data->callback_result = subsession_remove_user_wait_done(user_data->session_uid, user_data->user_id);
-       g_atomic_int_inc(&callback_remove_user_started_reference);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.remove_user.event, info);
 
+       g_atomic_int_inc(&callback_remove_user_started_reference);
        return 0;
 }
 
index d1793f28a8f4aa03b5e4f01e8631dad11c8788b9..bc2680f50c1352cf6912a61bc7e85c3909eca099 100644 (file)
@@ -21,7 +21,7 @@ int test_subsession_switch_user_wait_callback(subsession_event_info info, void *
        user_data->switch_id = info.switch_user.switch_id;
        user_data->user_id = info.switch_user.next_user;
        user_data->prev_user_id = info.switch_user.prev_user;
-       user_data->callback_result = subsession_switch_wait_done( info.switch_user.session_uid, info.switch_user.switch_id);
+       user_data->callback_result = subsession_event_wait_done(test_subsession_uid, info.switch_user.event, info);
 
        if (user_data->user_id == TestUser::user_0 || user_data->user_id == TestUser::user_2) {
                g_atomic_int_inc(&user_data->callback_reference);