summaryrefslogtreecommitdiffstats
path: root/src/tests
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2016-02-17 10:07:18 +0100
committerJakub Hrozek <jhrozek@redhat.com>2016-03-14 17:34:25 +0100
commitc19374b2a9b676ca534f52ef76d80f0945fe8fb2 (patch)
tree6f8287ee0b69579656d36659804edd5993c017de /src/tests
parentaf820c9fc6aa1768e2e6b0df78fb489dbb1b28d0 (diff)
downloadsssd-c19374b2a9b676ca534f52ef76d80f0945fe8fb2.tar.gz
sssd-c19374b2a9b676ca534f52ef76d80f0945fe8fb2.tar.xz
sssd-c19374b2a9b676ca534f52ef76d80f0945fe8fb2.zip
cache_req tests: use leak check in test fixtures
To ensure no memory is leak on long living context such as rctx. Resolves: https://fedorahosted.org/sssd/ticket/2869 Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/cmocka/test_responder_cache_req.c64
1 files changed, 47 insertions, 17 deletions
diff --git a/src/tests/cmocka/test_responder_cache_req.c b/src/tests/cmocka/test_responder_cache_req.c
index 770c7d02b..6bad29495 100644
--- a/src/tests/cmocka/test_responder_cache_req.c
+++ b/src/tests/cmocka/test_responder_cache_req.c
@@ -188,6 +188,8 @@ static void prepare_concrete_user(TALLOC_CTX *mem_ctx,
"cn=test-user,dc=test", attrs, NULL,
timeout, transaction_time);
assert_int_equal(ret, EOK);
+
+ talloc_free(attrs);
}
static void prepare_user(TALLOC_CTX *mem_ctx,
@@ -359,9 +361,11 @@ static int test_single_domain_setup(void **state)
struct cache_req_test_ctx *test_ctx = NULL;
errno_t ret;
+ assert_true(leak_check_setup());
+
test_dom_suite_setup(TESTS_PATH);
- test_ctx = talloc_zero(NULL, struct cache_req_test_ctx);
+ test_ctx = talloc_zero(global_talloc_context, struct cache_req_test_ctx);
assert_non_null(test_ctx);
*state = test_ctx;
@@ -375,13 +379,25 @@ static int test_single_domain_setup(void **state)
ret = sss_ncache_init(test_ctx, &test_ctx->ncache);
assert_int_equal(ret, EOK);
+
+ check_leaks_push(test_ctx);
+
return 0;
}
static int test_single_domain_teardown(void **state)
{
- talloc_zfree(*state);
+ struct cache_req_test_ctx *test_ctx;
+
+ test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
+
+ talloc_zfree(test_ctx->result);
+ talloc_zfree(test_ctx->name);
+
+ assert_true(check_leaks_pop(test_ctx));
+ talloc_zfree(test_ctx);
test_dom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, TEST_DOM_NAME);
+ assert_true(leak_check_teardown());
return 0;
}
@@ -390,9 +406,11 @@ static int test_multi_domain_setup(void **state)
struct cache_req_test_ctx *test_ctx = NULL;
errno_t ret;
+ assert_true(leak_check_setup());
+
test_dom_suite_setup(TESTS_PATH);
- test_ctx = talloc_zero(NULL, struct cache_req_test_ctx);
+ test_ctx = talloc_zero(global_talloc_context, struct cache_req_test_ctx);
assert_non_null(test_ctx);
*state = test_ctx;
@@ -407,13 +425,25 @@ static int test_multi_domain_setup(void **state)
ret = sss_ncache_init(test_ctx, &test_ctx->ncache);
assert_int_equal(ret, EOK);
+
+ check_leaks_push(test_ctx);
+
return 0;
}
static int test_multi_domain_teardown(void **state)
{
- talloc_zfree(*state);
+ struct cache_req_test_ctx *test_ctx;
+
+ test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
+
+ talloc_zfree(test_ctx->result);
+ talloc_zfree(test_ctx->name);
+
+ assert_true(check_leaks_pop(test_ctx));
+ talloc_zfree(test_ctx);
test_multidom_suite_cleanup(TESTS_PATH, TEST_CONF_DB, domains);
+ assert_true(leak_check_teardown());
return 0;
}
@@ -516,6 +546,8 @@ void test_user_by_name_multiple_domains_parse(void **state)
assert_non_null(test_ctx->name);
assert_string_equal(name, test_ctx->name);
+
+ talloc_free(fqn);
}
void test_user_by_name_cache_valid(void **state)
@@ -1014,6 +1046,8 @@ void test_group_by_name_multiple_domains_parse(void **state)
assert_non_null(test_ctx->name);
assert_string_equal(name, test_ctx->name);
+
+ talloc_free(fqn);
}
void test_group_by_name_cache_valid(void **state)
@@ -1326,9 +1360,9 @@ void test_users_by_recent_filter_valid(void **state)
struct cache_req_test_ctx *test_ctx = NULL;
TALLOC_CTX *req_mem_ctx = NULL;
struct tevent_req *req = NULL;
- const char **user_names = NULL;
- const char **ldb_results = NULL;
- const char *ldbname = NULL;
+ size_t num_users = 2;
+ const char *user_names[num_users];
+ const char *ldb_results[num_users];
errno_t ret;
test_ctx = talloc_get_type_abort(*state, struct cache_req_test_ctx);
@@ -1358,23 +1392,19 @@ void test_users_by_recent_filter_valid(void **state)
assert_non_null(test_ctx->result);
assert_int_equal(test_ctx->result->count, 2);
- user_names = talloc_array(test_ctx, const char *, 2);
- assert_non_null(user_names);
user_names[0] = TEST_USER_NAME;
user_names[1] = TEST_USER_NAME2;
- ldb_results = talloc_array(test_ctx, const char *, 2);
- assert_non_null(ldb_results);
- for (int i = 0; i < 2; ++i) {
- ldbname = ldb_msg_find_attr_as_string(test_ctx->result->msgs[i],
- SYSDB_NAME, NULL);
- assert_non_null(ldbname);
- ldb_results[i] = ldbname;
+ for (int i = 0; i < num_users; ++i) {
+ ldb_results[i] = ldb_msg_find_attr_as_string(test_ctx->result->msgs[i],
+ SYSDB_NAME, NULL);
+ assert_non_null(ldb_results[i]);
}
assert_string_not_equal(ldb_results[0], ldb_results[1]);
- assert_true(tc_are_values_in_array(user_names, ldb_results));
+ assert_true(are_values_in_array(user_names, num_users,
+ ldb_results, num_users));
}
void test_users_by_filter_filter_old(void **state)