Hi Pavel!

There is some code between my last end and this continuation. I was read it and did't find anything wrong.

On 09/16/2015 04:26 PM, Petr Cech wrote:
0003-cache_req-tests-reduce-code-duplication.patch


  From e41f96a47f2b0f8d3e07e34af83e9a516d29df34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20B=C5=99ezina?=<pbrez...@redhat.com>
Date: Mon, 14 Sep 2015 11:06:45 +0200
Subject: [PATCH 3/3] cache_req tests: reduce code duplication

---
   src/tests/cmocka/test_responder_cache_req.c | 1624
+++++++--------------------
   1 file changed, 394 insertions(+), 1230 deletions(-)

diff --git a/src/tests/cmocka/test_responder_cache_req.c
b/src/tests/cmocka/test_responder_cache_req.c
index
7db87ccc816ea0e30e707ec8c2fa4666441892a8..2af481494319d0d01d29d0c243020c5adcb06d3a
100644
--- a/src/tests/cmocka/test_responder_cache_req.c
+++ b/src/tests/cmocka/test_responder_cache_req.c
@@ -52,6 +52,27 @@
                                       test_multi_domain_setup, \
                                       test_multi_domain_teardown)

+#define run_cache_req(ctx, send_fn, done_fn, dom, crp, lookup, expret)
do { \
+    TALLOC_CTX
*req_mem_ctx;                                                \
+    struct tevent_req
*req;                                                 \
+    errno_t
ret;                                                            \
+
\
+    req_mem_ctx =
talloc_new(global_talloc_context);                        \
+
check_leaks_push(req_mem_ctx);                                          \
+
\
+    req = send_fn(req_mem_ctx, ctx->tctx->ev,
ctx->rctx,                    \
+                  ctx->ncache, 10,
crp,                                     \
+                  (dom == NULL ? NULL : dom->name),
lookup);                \
+
assert_non_null(req);                                                   \
+    tevent_req_set_callback(req, done_fn,
ctx);                             \
+
\
+    ret =
test_ev_loop(ctx->tctx);                                          \
+    assert_int_equal(ret,
expret);                                          \
+
assert_true(check_leaks_pop(req_mem_ctx));                              \
+
\
+
talloc_free(req_mem_ctx);                                               \
+} while (0)
This definition should be a function. I found that you use it like
# return run_cache_req(...) but it doesn't provide value.

+
   struct cache_req_test_ctx {
       struct sss_test_ctx *tctx;
       struct resp_ctx *rctx;
@@ -80,46 +101,6 @@ struct cli_protocol_version
*register_cli_protocol_version(void)
       return version;
   }

-struct tevent_req *
-__wrap_sss_dp_get_account_send(TALLOC_CTX *mem_ctx,
-                               struct resp_ctx *rctx,
-                               struct sss_domain_info *dom,
-                               bool fast_reply,
-                               enum sss_dp_acct_type type,
-                               const char *opt_name,
-                               uint32_t opt_id,
-                               const char *extra)
-{
-    struct sysdb_attrs *attrs = NULL;
-    struct cache_req_test_ctx *ctx = NULL;
-    errno_t ret;
-
-    ctx = sss_mock_ptr_type(struct cache_req_test_ctx*);
-    ctx->dp_called = true;
-
-    if (ctx->create_user) {
-        attrs = sysdb_new_attrs(ctx);
-        assert_non_null(attrs);
-
-        ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, TEST_UPN);
-        assert_int_equal(ret, EOK);
-
-        ret = sysdb_store_user(ctx->tctx->dom, TEST_USER_NAME, "pwd",
-                               TEST_USER_ID, 1000, NULL, NULL, NULL,
-                               "cn=test-user,dc=test", attrs, NULL,
-                               1000, time(NULL));
-        assert_int_equal(ret, EOK);
-    }
-
-    if (ctx->create_group) {
-        ret = sysdb_store_group(ctx->tctx->dom, TEST_GROUP_NAME,
-                                TEST_GROUP_ID, NULL, 1000, time(NULL));
-        assert_int_equal(ret, EOK);
-    }
-
-    return test_req_succeed_send(mem_ctx, rctx->ev);
-}
-
   static void cache_req_user_by_name_test_done(struct tevent_req *req)
   {
       struct cache_req_test_ctx *ctx = NULL;
@@ -176,6 +157,173 @@ static void cache_req_group_by_id_test_done(struct
tevent_req *req)
       ctx->tctx->done = true;
   }

+static void prepare_user(TALLOC_CTX *mem_ctx,
+                         struct sss_domain_info *domain,
+                         uint64_t timeout,
+                         time_t time)
+{
+    struct sysdb_attrs *attrs;
+    errno_t ret;
+
+    attrs = sysdb_new_attrs(mem_ctx);
+    assert_non_null(attrs);
+
+    ret = sysdb_attrs_add_string(attrs, SYSDB_UPN, TEST_UPN);
+    assert_int_equal(ret, EOK);
+
+    ret = sysdb_store_user(domain, TEST_USER_NAME, "pwd",
+                           TEST_USER_ID, TEST_GROUP_ID, NULL, NULL, NULL,
+                           "cn=test-user,dc=test", attrs, NULL,
+                           timeout, time);
+    assert_int_equal(ret, EOK);
+}
+
+static void run_user_by_name(struct cache_req_test_ctx *test_ctx,
+                             struct sss_domain_info *domain,
+                             int cache_refresh_percent,
+                             errno_t exp_ret)
+{
+    run_cache_req(test_ctx, cache_req_user_by_name_send,
+                  cache_req_user_by_name_test_done, domain,
+                  cache_refresh_percent, TEST_USER_NAME, exp_ret);
+}
+
+static errno_t run_user_by_upn(struct cache_req_test_ctx *test_ctx,
+                               struct sss_domain_info *domain,
+                               int cache_refresh_percent,
+                               errno_t exp_ret)
+{
+    run_cache_req(test_ctx, cache_req_user_by_name_send,
+                  cache_req_user_by_name_test_done, domain,
+                  cache_refresh_percent, TEST_UPN, exp_ret);
+}
This function returns errno_t but run_cache_req is
without return statement.

I tried with your patches
# make responder_cache_req-tests
and thre is a result:

src/tests/cmocka/test_responder_cache_req.c: In function ‘run_user_by_upn’:
src/tests/cmocka/test_responder_cache_req.c:199:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
src/tests/cmocka/test_responder_cache_req.c: In function ‘run_user_by_id’:
src/tests/cmocka/test_responder_cache_req.c:209:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
src/tests/cmocka/test_responder_cache_req.c: In function ‘run_group_by_name’: src/tests/cmocka/test_responder_cache_req.c:261:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
src/tests/cmocka/test_responder_cache_req.c: In function ‘run_group_by_id’:
src/tests/cmocka/test_responder_cache_req.c:271:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }

That's all for me. I didn't test the functionality. Please, ask someone other who has skills with AD (and running instance of it) to test it.

Regards

Petr
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to