#include "test_hlp.hpp"
-const int action_items = 4;
+const int action_items = 8;
TEST(subsession_add_remove_user_test, APIAddRemoveUserTest) {
.desc = "Check if remove " + std::string(TestUserStr::user_19) + " is successful (regular dir backend)",
.cb_expected = SUBSESSION_ERROR_NONE,
.cb_desc = "Check if remove " + std::string(TestUserStr::user_19) + " callback is successful (regular dir backend)", },
+
+ // Fixed-size backend
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestUserStr::user_2, 10*1024)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if add " + std::string(TestUserStr::user_2) + " is successful (fixed-size backend, 10 MB)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if add " + std::string(TestUserStr::user_2) + " callback is successful (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>(TestUserStr::user_2)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if remove " + std::string(TestUserStr::user_2) + " is successful (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if remove " + std::string(TestUserStr::user_2) + " callback is successful (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestUserStr::user_3, 25*1024)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if add " + std::string(TestUserStr::user_3) + " is successful (fixed-size backend, 25 MB)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if add " + std::string(TestUserStr::user_3) + " callback is successful (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>(TestUserStr::user_3)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if remove " + std::string(TestUserStr::user_3) + " is successful (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if remove " + std::string(TestUserStr::user_3) + " callback is successful (fixed-size backend)", },
}
};
#include "test_hlp.hpp"
-const int action_items = 13;
+const int action_items = 26;
TEST(subsession_add_remove_test, FailAtAddRemoveUser) {
using ud_t = ud_data_t<std::array<api_call_res_t, action_items>>;
.cb_desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_20) + " ] callback returns error (regular dir backend)", },
+
+
+
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestBadUserStr::bad_user_1, 10*1024)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_1) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_1) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>(TestBadUserStr::bad_user_1)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_1) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_1) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestBadUserStr::bad_user_3, 10*1024)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_3) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_3) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>( TestBadUserStr::bad_user_3)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_3) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_3) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestBadUserStr::bad_user_2, 10*1024)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_2) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_2) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>( TestBadUserStr::bad_user_2)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_2) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_2) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestBadUserStr::bad_user_empty, 10*1024)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_empty) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_empty) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>( TestBadUserStr::bad_user_empty)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_empty) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_empty) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>( TestUserStr::user_1)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if remove non existent [ " + std::string(TestUserStr::user_1) + " ] returns no error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_NOT_AVAILABLE,
+ .cb_desc = "Check if remove non exixtent [ " + std::string(TestUserStr::user_1) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestBadUserStr::bad_user_long, 10*1024)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_long) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_long) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>( TestBadUserStr::bad_user_long)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_long) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_long) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestBadUserStr::bad_user_20, 10*1024)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_20) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if add [ " + std::string(TestBadUserStr::bad_user_20) + " ] callback returns error (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>( TestBadUserStr::bad_user_20)),
+ .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_20) + " ] returns error (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+ .cb_desc = "Check if remove [ " + std::string(TestBadUserStr::bad_user_20) + " ] callback returns error (fixed-size backend)", },
+
}
};
#include "test_hlp.hpp"
-const int action_items = 3;
+const int action_items = 7;
TEST(subsession_add_user_wait_test, APIAddUserWaitTest) {
.desc = "Check if remove [ " + std::string(TestUserStr::user_1) + " ] is successful (regular dir backend)",
.cb_expected = SUBSESSION_ERROR_NONE,
.cb_desc = "Check if remove [ " + std::string(TestUserStr::user_1) + " ] callback is successful (regular dir backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestUserStr::user_1, 10*1024)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if add [ " + std::string(TestUserStr::user_1) + " ] is successful (fixed-size backend, 10 MB)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if add [ " + std::string(TestUserStr::user_1) + " ] callback is successful (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>(TestUserStr::user_1)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if remove [ " + std::string(TestUserStr::user_1) + " ] is successful (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if remove [ " + std::string(TestUserStr::user_1) + " ] callback is successful (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestUserStr::user_2, 10*1024)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if add [ " + std::string(TestUserStr::user_2) + " ] is successful (fixed-size backend, 10 MB)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if add [ " + std::string(TestUserStr::user_2) + " ] callback is successful (fixed-size backend)", },
+
+ api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>(TestUserStr::user_2)),
+ .expected = SUBSESSION_ERROR_NONE,
+ .desc = "Check if remove [ " + std::string(TestUserStr::user_2) + " ] is successful (fixed-size backend)",
+ .cb_expected = SUBSESSION_ERROR_NONE,
+ .cb_desc = "Check if remove [ " + std::string(TestUserStr::user_2) + " ] callback is successful (fixed-size backend)", },
+
}
};
using tud_ = test_user_data_cb_t;
using tgl_ = test_get_user_list_res_t;
-using ud_get_user_t = struct ud_ctrl_t<tgl_, tud_, tud_, tgl_, tgl_, tud_, tud_>;
+using ud_get_user_t = struct ud_ctrl_t<tgl_, tud_, tud_, tgl_, tgl_, tud_, tud_, tgl_, tgl_, tud_, tud_, tgl_, tgl_, tud_, tud_>;
struct get_user {
enum action {
get_user_list_1_2,
get_user_list_1_2_count_only,
remove_user_1,
+ add_user_fixed_size_1,
+ get_user_list_mixed_1_2,
+ get_user_list_mixed_1_2_count_only,
remove_user_2,
+ add_user_fixed_size_2,
+ get_user_list_fixed_size_1_2,
+ get_user_list_fixed_size_1_2_count_only,
+ remove_user_fixed_size_1,
+ remove_user_fixed_size_2,
action_items
};
};
init_user_s<tgl_ &, subsession_5001>(std::get<get_user::get_user_list_0>(ud.t));
init_user_s<tgl_ &, subsession_5001>(std::get<get_user::get_user_list_1_2>(ud.t));
init_user_s<tgl_ &, subsession_5001>(std::get<get_user::get_user_list_1_2_count_only>(ud.t));
+ init_user_s<tgl_ &, subsession_5001>(std::get<get_user::get_user_list_mixed_1_2>(ud.t));
+ init_user_s<tgl_ &, subsession_5001>(std::get<get_user::get_user_list_mixed_1_2_count_only>(ud.t));
+ init_user_s<tgl_ &, subsession_5001>(std::get<get_user::get_user_list_fixed_size_1_2>(ud.t));
+ init_user_s<tgl_ &, subsession_5001>(std::get<get_user::get_user_list_fixed_size_1_2_count_only>(ud.t));
init_user_s<tud_ &, subsession_5001>(std::get<get_user::add_user_1>(ud.t));
init_user_s<tud_ &, subsession_5001>(std::get<get_user::add_user_2>(ud.t));
+ init_user_s<tud_ &, subsession_5001>(std::get<get_user::add_user_fixed_size_1>(ud.t));
+ init_user_s<tud_ &, subsession_5001>(std::get<get_user::add_user_fixed_size_2>(ud.t));
init_user_s<tud_ &, subsession_5001>(std::get<get_user::remove_user_1>(ud.t));
init_user_s<tud_ &, subsession_5001>(std::get<get_user::remove_user_2>(ud.t));
+ init_user_s<tud_ &, subsession_5001>(std::get<get_user::remove_user_fixed_size_1>(ud.t));
+ init_user_s<tud_ &, subsession_5001>(std::get<get_user::remove_user_fixed_size_2>(ud.t));
std::array<res_t, get_user::action_items> results {
SUBSESSION_ERROR_NONE, "Check if adding user 2 (regular dir backend) returns no error" },
res_t{ get_user_list_wrap<ud_get_user_t, get_user::get_user_list_1_2>(ud),
- SUBSESSION_ERROR_NONE, "Check if get list with user 1 and 2 returns no error" },
+ SUBSESSION_ERROR_NONE, "Check if get list with user 1 and 2 (both regular dirs) returns no error" },
res_t{ get_user_list_count_only_wrap<ud_get_user_t, get_user::get_user_list_1_2_count_only>(ud),
- SUBSESSION_ERROR_NONE, "Check if get counter only for user 1 and 2 returns no error" },
+ SUBSESSION_ERROR_NONE, "Check if get counter only for user 1 and 2 (both regular dirs) returns no error" },
res_t{ remove_user_wrap<ud_get_user_t, get_user::remove_user_1>(TestUserStr::user_1, test_reply_callback_default, ud),
SUBSESSION_ERROR_NONE, "Check if removing user 1 (regular dir backend) returns no error" },
+ res_t{ add_user_fixed_size_wrap<ud_get_user_t, get_user::add_user_fixed_size_1>(TestUserStr::user_1, 10*1024, test_reply_callback_default, ud),
+ SUBSESSION_ERROR_NONE, "Check if adding user 1 (fixed-size backend) returns no error" },
+
+ res_t{ get_user_list_wrap<ud_get_user_t, get_user::get_user_list_mixed_1_2>(ud),
+ SUBSESSION_ERROR_NONE, "Check if get list with user 1 and 2 (mixed backends) returns no error" },
+
+ res_t{ get_user_list_count_only_wrap<ud_get_user_t, get_user::get_user_list_mixed_1_2_count_only>(ud),
+ SUBSESSION_ERROR_NONE, "Check if get counter only for user 1 and 2 (mixed backends) returns no error" },
+
res_t{ remove_user_wrap<ud_get_user_t, get_user::remove_user_2>(TestUserStr::user_2, test_reply_callback_default, ud),
SUBSESSION_ERROR_NONE, "Check if removing user 2 (regular dir backend) returns no error" },
+
+ res_t{ add_user_fixed_size_wrap<ud_get_user_t, get_user::add_user_fixed_size_2>(TestUserStr::user_2, 10*1024, test_reply_callback_default, ud),
+ SUBSESSION_ERROR_NONE, "Check if adding user 2 (fixed-size backend) returns no error" },
+
+ res_t{ get_user_list_wrap<ud_get_user_t, get_user::get_user_list_fixed_size_1_2>(ud),
+ SUBSESSION_ERROR_NONE, "Check if get list with user 1 and 2 (both fixed-size) returns no error" },
+
+ res_t{ get_user_list_count_only_wrap<ud_get_user_t, get_user::get_user_list_fixed_size_1_2_count_only>(ud),
+ SUBSESSION_ERROR_NONE, "Check if get counter only for user 1 and 2 (both fixed-size) returns no error" },
+
+ res_t{ remove_user_wrap<ud_get_user_t, get_user::remove_user_fixed_size_1>(TestUserStr::user_1, test_reply_callback_default, ud),
+ SUBSESSION_ERROR_NONE, "Check if removing user 1 (fixed-size backend) returns no error" },
+
+ res_t{ remove_user_wrap<ud_get_user_t, get_user::remove_user_fixed_size_2>(TestUserStr::user_2, test_reply_callback_default, ud),
+ SUBSESSION_ERROR_NONE, "Check if removing user 2 (fixed-size backend) returns no error" },
};
loop_run_for_test(callback_pending_ud<ud_get_user_t>,(gpointer*)&ud, ud.loop);
std::array<std::string, 3> arr{std::string(TestUserStr::user_0), std::string(TestUserStr::user_1), std::string(TestUserStr::user_2)};
summarize_results_for_get_user_list<std::array<std::string, 3>>(std::get<get_user::get_user_list_1_2>(ud.t), arr);
+ summarize_results_for_get_user_list<std::array<std::string, 3>>(std::get<get_user::get_user_list_mixed_1_2>(ud.t), arr);
+ summarize_results_for_get_user_list<std::array<std::string, 3>>(std::get<get_user::get_user_list_fixed_size_1_2>(ud.t), arr);
summarize_results_for_counted_only_get_user_list(std::get<get_user::get_user_list_1_2_count_only>(ud.t), 3);
+ summarize_results_for_counted_only_get_user_list(std::get<get_user::get_user_list_mixed_1_2_count_only>(ud.t), 3);
+ summarize_results_for_counted_only_get_user_list(std::get<get_user::get_user_list_fixed_size_1_2_count_only>(ud.t), 3);
summarize_results<get_user::action_items>(results);
}
static constexpr int MAGIC_DEFAULT = 444;
static constexpr int MAGIC_GET_CURRENT_USER = 444;
static constexpr int MAGIC_EVENT_ADD = 555;
+static constexpr int MAGIC_ADD_FIXED_SIZE = 666;
static constexpr int MAGIC_EVENT_REMOVE = 777;
static constexpr int MAGIC_EVENT_SWITCH = 888;
static constexpr int MAGIC_EVENT_SWITCH_COMPLETION = 999;
return p;
};
+template<typename S>
+auto subsession_add_user_fixed_size_l = [](char * user_id, uint32_t size_limit) {
+
+ std::shared_ptr<std::pair<tud_, int>> p = std::make_shared<std::pair<tud_, int>>(init_user_tud<S>(), 0);
+ p->first.magic = MAGIC_ADD_FIXED_SIZE;
+ int res = subsession_add_user_fixed_size(p->first.session_uid, user_id, size_limit, test_reply_callback_default, (void *)&p->first);
+ p->second = pass_cb_if_err(res, &p->first.callback_reference);
+ return p;
+};
+
template<typename S>
auto subsession_remove_user_l = [](char * user_id){
std::shared_ptr<std::pair<tud_, int>> p = std::make_shared<std::pair<tud_, int>>(init_user_tud<S>(), 0);
return res;
}
+template<typename T, int N>
+int add_user_fixed_size_wrap(char * user_id, uint32_t size_limit, subsession_reply_callback cb, T &ud) {
+
+ std::get<N>(ud.t).user_id = user_id;
+ int res = subsession_add_user_fixed_size(test_subsession_uid, std::get<N>(ud.t).user_id, size_limit,
+ cb, (void *)&std::get<N>(ud.t));
+ if ( res != SUBSESSION_ERROR_NONE ) { g_atomic_int_inc(&std::get<N>(ud.t).callback_reference); }
+ return res;
+}
+
template<typename T, int N>
int remove_user_wrap(char* user_id, subsession_reply_callback cb, T &ud) {