ehlo,

There were failures[1] on rhel6 machine with latest packages.
it took me a while to find out which package cuaed it.
Therefore I downgraded rhel machine to vanilla rhel6.7
and I was troubleshooting it on different machine.

The failures of test_ipa_subdom_server are caused by fixing
memory leak in krb5[2]. BTW there is also plan to fix it in rhel7[3]

sh$ time libtool --mode=execute ./test_ipa_subdom_server

enabled/permissive SELinux
real    0m7.976s
user    0m6.680s
sys     0m0.189s

disabled SELinux
real    0m2.111s
user    0m0.071s
sys     0m0.043s

valgrind + enabled/permissive SELinux //but test failed.
real    2m7.310s
user    2m17.080s
sys     0m0.786s

valgrind + disabled SELinux
real    0m5.510s
user    0m3.396s
sys     0m0.309s

Attached patch "emulates" disabled SELinux.
If we do not want to do that for unit test than we need to increase
few timeouts.
diff --git a/src/providers/ipa/ipa_subdomains_server.c 
b/src/providers/ipa/ipa_subdomains_server.c
index f279efc..7d8b3d3 100644
--- a/src/providers/ipa/ipa_subdomains_server.c
+++ b/src/providers/ipa/ipa_subdomains_server.c
@@ -124,7 +124,7 @@ const char *ipa_trust_dir2str(uint32_t direction)
 }

 #ifndef IPA_GETKEYTAB_TIMEOUT
-#define IPA_GETKEYTAB_TIMEOUT 15
+#define IPA_GETKEYTAB_TIMEOUT 5
 #endif /* IPA_GETKEYTAB_TIMEOUT */

 static struct ad_options *
diff --git a/src/tests/cmocka/test_ipa_subdomains_server.c 
b/src/tests/cmocka/test_ipa_subdomains_server.c
index d1e0945..3c40f04 100644
--- a/src/tests/cmocka/test_ipa_subdomains_server.c
+++ b/src/tests/cmocka/test_ipa_subdomains_server.c
@@ -508,7 +508,7 @@ static void test_ipa_server_trust_init(void **state)
     ret = ipa_ad_subdom_init(test_ctx->be_ctx, test_ctx->ipa_ctx);
     assert_int_equal(ret, EOK);

-    tv = tevent_timeval_current_ofs(15, 0);
+    tv = tevent_timeval_current_ofs(1, 0);
     timeout_handler = tevent_add_timer(test_ctx->tctx->ev, test_ctx, tv,
                                        ipa_server_init_done, test_ctx);
     assert_non_null(timeout_handler);
@@ -849,7 +849,7 @@ static void test_ipa_server_trust_oneway_init(void **state)
     ret = ipa_ad_subdom_init(test_ctx->be_ctx, test_ctx->ipa_ctx);
     assert_int_equal(ret, EOK);

-    tv = tevent_timeval_current_ofs(15, 0);
+    tv = tevent_timeval_current_ofs(1, 0);
     timeout_handler = tevent_add_timer(test_ctx->tctx->ev, test_ctx, tv,
                                        ipa_server_init_done, test_ctx);
     assert_non_null(timeout_handler);


Lower values caused intermittent failures.

Here are execution times after changing timeouts.

valgrind + enabled/permissive SELinux
real    3m5.812s
user    2m59.929s
sys     0m1.071s

valgrind + disabled SELinux
real    0m33.541s
user    0m3.392s
sys     0m0.322s

disabled SELinux
real    0m30.134s
user    0m0.069s
sys     0m0.040s

enabled/permissive SELinux
real    0m36.014s
user    0m6.768s
sys     0m0.155s

LS

[1] http://sssd-ci.duckdns.org/logs/job/39/10/summary.html
[2] https://bugzilla.redhat.com/show_bug.cgi?id=1311287
[3] https://bugzilla.redhat.com/show_bug.cgi?id=1313457
>From 90516358f0a87f7f35dc60e9cb7006f97ff578bd Mon Sep 17 00:00:00 2001
From: Lukas Slebodnik <lsleb...@redhat.com>
Date: Tue, 15 Mar 2016 16:14:23 +0100
Subject: [PATCH] test_ipa_subdom_server: Workaround for slow krb5 + SELinux

There is an overhead caused by SELinux after fixing memory leak
in krb5. https://bugzilla.redhat.com/show_bug.cgi?id=1311287.

The overhead is mainly visible with valgrind and moreover
it causes failures due to timeouts.

sh$ time libtool --mode=execute ./test_ipa_subdom_server

enabled/permissive SELinux
real    0m7.976s
user    0m6.680s
sys     0m0.189s

disabled SELinux
real    0m2.111s
user    0m0.071s
sys     0m0.043s

valgrind + enabled/permissive SELinux
real    2m7.310s
user    2m17.080s
sys     0m0.786s

valgrind + disabled SELinux
real    0m5.510s
user    0m3.396s
sys     0m0.309s
---
 src/tests/cmocka/test_ipa_subdomains_server.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/tests/cmocka/test_ipa_subdomains_server.c 
b/src/tests/cmocka/test_ipa_subdomains_server.c
index 
3c40f04e3712b22ffc497e08a5b8f38921f4b8b1..0fddc951894dee45658497851473b9bddbba0ef7
 100644
--- a/src/tests/cmocka/test_ipa_subdomains_server.c
+++ b/src/tests/cmocka/test_ipa_subdomains_server.c
@@ -69,6 +69,26 @@
 
 static bool global_rename_called;
 
+#ifdef HAVE_SELINUX
+/* Provide faster implementation of kerberos function
+ * krb5int_labeled_[f]?open. Real functions take care also
+ * about SELinux context which is very expensive operation
+ * and cause failures due to timeout when executing with valgrind.
+ * It's approximately 40 times slower with real function
+ */
+FILE *
+krb5int_labeled_fopen(const char *path, const char *mode)
+{
+    return fopen(path, mode);
+}
+
+int
+krb5int_labeled_open(const char *path, int flags, mode_t mode)
+{
+    return open(path, flags, mode);
+}
+#endif /* HAVE_SELINUX */
+
 krb5_error_code __wrap_krb5_kt_default(krb5_context context, krb5_keytab *id)
 {
     return krb5_kt_resolve(context, KEYTAB_PATH, id);
-- 
2.7.2

_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to