On (10/09/15 10:43), Lukas Slebodnik wrote:
On (28/07/14 10:18), Simo Sorce wrote:
>On Wed, 2014-07-23 at 09:01 +0200, Lukas Slebodnik wrote:
>> On (09/07/14 18:21), Jurica Stanojkovic wrote:
>> >
>> >Hello,
>> >
>> >Package sssd_1.11.5.1-1 on Debian FTBFS for mips and mipsel.
>>
>https://buildd.debian.org/status/fetch.php?pkg=sssd&arch=mips&ver=1.11.5.1-1&stamp=1399675946
>>
>https://buildd.debian.org/status/fetch.php?pkg=sssd&arch=mipsel&ver=1.11.5.1-1&stamp=1399663454
>> >
>> >dyndns_test_ok is failing with following log:
>> >[ RUN ] dyndns_test_ok(Tue Jul 8 15:53:55:004476 2014) [sssd]
[be_nsupdate_args] (0x0200): (Tue Jul 8 15:53:55:004521 2014) [sssd]
[child_handler_setup] (0x2000): nsupdate auth type: GSS-TSIGSetting up signal handler up
for pid [21397](Tue Jul 8 15:53:55:004693 2014) [sssd] [__wrap_execv] (0x0200): nsupdate
success test case(Tue Jul 8 15:53:55:004825 2014) [sssd] [__wrap_execv] (0x1000): Child
exiting with status 0(Tue Jul 8 15:53:55:005275 2014) [sssd] [child_handler_setup]
(0x2000): Signal handler set up for pid [21397](Tue Jul 8 15:54:55:837623 2014) [sssd]
[write_pipe_handler] (0x0020): write failed [32][Broken pipe].(Tue Jul 8 15:54:55:837801
2014) [sssd] [nsupdate_child_stdin_done] (0x1000): Sending nsupdate data complete(Tue Jul
8 15:54:55:837869 2014) [sssd] [nsupdate_child_stdin_done] (0x0040): Sending nsupdate data
failed [32]: Broken pipe(Tue Jul 8 15:54:55:837947 2014) [sssd] [be_nsupdate_done]
(0x0040): nsupdate child execution failed [1432158228]: Dynamic DNS update failed(Tue Jul
8 15:54:55:837985 2014) [sssd] [dyndns_test_ok] (0x1000): Child request returned
[1432158228]: Unknown error 14321582280x555d0014 !=
0../src/tests/cmocka/test_dyndns.c:222: error: Failure![ FAILED ] dyndns_test_okChild
part has finished before the child handler was created.
>> >
>> >I have created and attached a patch which is workaround for this issue.
>> >Could someone please take a look and comment this?
>> >
>> >Thank you!
>> >
>> >Sincerely,
>> >Jurica
>> >
>>
>> >From d6162e90d89b744153bff068488a555047a9004e Mon Sep 17 00:00:00 2001
>> >From: Jurica Stanojkovic <jurica.stanojkovic(a)rt-rk.com>
>> >Date: Wed, 9 Jul 2014 17:57:55 +0200
>> >Subject: [PATCH] Workaround for dyndns_test_ok failiure on mips(el).
>> > Child part has finished before the child handler was created.
>> >
>> >---
>> bump.
>>
>> Could someone review this patch.
>> I was helping with this problem on IRC. I don't want to give ACK.
>
>Well the commit message does not say why a sleep of 2 seconds is needed,
>can you shed a light on it ?
>
Updated version is attached.
LS
From 80c25a192f2a410e18248f848a2256803e997c6b Mon Sep 17 00:00:00
2001
From: Lukas Slebodnik <lslebodn(a)redhat.com>
Date: Thu, 10 Sep 2015 10:42:02 +0200
Subject: [PATCH] dyndns-tests: Simulate job in wrapped execv
The function be_nsupdate_send fork a child for execution of the utility
nsupdate.
The child process builds nsupdate args in the function
be_nsupdate_args and then execute the utility.
Meanwhile the parent process register handlers for child and timeout
for canceling the long lasting child.
nsupdate_child_send -> child_handler_setup
You can see in following log file that the wrapped version of execv
function might be very fast and therefore parent can register handlers
after finishing child. This is a reason why there is a child timeout.
(10:18:48:556001 2015) [sssd] [be_nsupdate_args] (0x0200): nsupdate auth type: GSS-TSIG
(10:18:48:556126 2015) [sssd] [__wrap_execv] (0x0200): nsupdate success test case
(10:18:48:556200 2015) [sssd] [__wrap_execv] (0x1000): Child exiting with status 0
(10:18:48:557218 2015) [sssd] [child_handler_setup] (0x2000): Setting up signal handler up
for pid [3957]
(10:18:48:560987 2015) [sssd] [child_handler_setup] (0x2000): Signal handler set up for
pid [3957]
(10:18:50:608520 2015) [sssd] [nsupdate_child_timeout] (0x0020): Timeout reached for
dynamic DNS update
(10:18:50:681525 2015) [sssd] [be_nsupdate_done] (0x0040): nsupdate child execution failed
[1432158233]: Dynamic DNS update timed out
(10:18:50:687031 2015) [sssd] [dyndns_test_ok] (0x1000): Child request returned
[1432158233]: Unknown error 1432158233
The patch simulate a work in wrapped function with small delay.
It should be enough time for the parent process to registering a child.
Based on patch from Jurica Stanojkovic <jurica.stanojkovic(a)rt-rk.com>
Thank you.
Resolves:
https://fedorahosted.org/sssd/ticket/2283
---
src/tests/cmocka/test_dyndns.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/tests/cmocka/test_dyndns.c b/src/tests/cmocka/test_dyndns.c
index 691378ee6edc5b0238adc8404ea0a433ae3cf907..dc3d19f59cf586e3ef4ed12e99192c639c4e45d5
100644
--- a/src/tests/cmocka/test_dyndns.c
+++ b/src/tests/cmocka/test_dyndns.c
@@ -70,6 +70,7 @@ void __wrap_execv(const char *path, char *const argv[])
case MOCK_NSUPDATE_OK:
DEBUG(SSSDBG_FUNC_DATA, "nsupdate success test case\n");
err = 0;
+ sleep(2);
Actually,
I wanted to use smaller timeout so we can avoid issues with real timeouts.
another version is attached.
LS