common.h revision 5a22be7f84f85d6b25aa277ac78ee34fac95dd42
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina/*
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina SSSD
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina Common utilities for check-based tests using talloc.
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina Authors:
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina Martin Nagy <mnagy@redhat.com>
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina Copyright (C) Red Hat, Inc 2009
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina This program is free software; you can redistribute it and/or modify
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina it under the terms of the GNU General Public License as published by
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina the Free Software Foundation; either version 3 of the License, or
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina (at your option) any later version.
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina This program is distributed in the hope that it will be useful,
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina but WITHOUT ANY WARRANTY; without even the implied warranty of
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina GNU General Public License for more details.
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina You should have received a copy of the GNU General Public License
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina along with this program. If not, see <http://www.gnu.org/licenses/>.
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina*/
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina#ifndef __TESTS_COMMON_H__
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina#define __TESTS_COMMON_H__
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina#include <talloc.h>
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina#include "util/util.h"
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina#include "providers/data_provider.h"
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina#include "providers/ldap/sdap.h"
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březinaextern TALLOC_CTX *global_talloc_context;
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina#define check_leaks(ctx, bytes) _check_leaks((ctx), (bytes), __location__)
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březinabool _check_leaks(TALLOC_CTX *ctx,
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina size_t bytes,
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina const char *location);
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březinavoid check_leaks_push(TALLOC_CTX *ctx);
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina#define check_leaks_pop(ctx) _check_leaks_pop((ctx), __location__)
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březinabool _check_leaks_pop(TALLOC_CTX *ctx, const char *location);
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březina
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březinabool leak_check_setup(void);
a1e4113a5388e34c08459c5b69679c82ac2bddc9Pavel Březinabool leak_check_teardown(void);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinaconst char *check_leaks_err_msg(void);
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinavoid tests_set_cwd(void);
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinaerrno_t
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinacompare_dp_options(struct dp_option *map1, size_t size1,
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina struct dp_option *map2);
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinaerrno_t
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinacompare_sdap_attr_maps(struct sdap_attr_map *map1, size_t size1,
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina struct sdap_attr_map *map2);
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina/* A common test structure for tests that require a domain to be set up. */
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinastruct sss_test_ctx {
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina struct sysdb_ctx *sysdb;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina struct confdb_ctx *confdb;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina struct tevent_context *ev;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina struct sss_domain_info *dom;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina char *confdb_path;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina bool done;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina int error;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina};
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinastruct sss_test_conf_param {
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina const char *key;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina const char *value;
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina};
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinastruct sss_test_ctx *create_ev_test_ctx(TALLOC_CTX *mem_ctx);
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinastruct sss_test_ctx *
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březinacreate_dom_test_ctx(TALLOC_CTX *mem_ctx,
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina const char *tests_path,
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina const char *confdb_path,
8fe171bf5a7a570591418e6548105f1d5a0097b3Pavel Březina const char *sysdb_path,
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina const char *domain_name,
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina const char *id_provider,
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina struct sss_test_conf_param *params);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinavoid test_dom_suite_setup(const char *tests_path);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinavoid test_dom_suite_cleanup(const char *tests_path,
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina const char *confdb_path,
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina const char *sysdb_path);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinastruct tevent_req *
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinatest_request_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, errno_t err);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina#define test_req_succeed_send(mem_ctx, ev) test_request_send(mem_ctx, ev, 0)
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinaerrno_t test_request_recv(struct tevent_req *req);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinaint test_ev_loop(struct sss_test_ctx *tctx);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březinabool ldb_modules_path_is_set(void);
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina#endif /* !__TESTS_COMMON_H__ */
132e477d69e07e02fe6e4d668c0bb6226206474aPavel Březina