couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Filipe David Manana <fdman...@gmail.com>
Subject Re: git commit: COUCHDB-1424 Fix etap to not consume any message
Date Wed, 31 Oct 2012 19:10:33 GMT
On Wed, Oct 31, 2012 at 8:01 PM, Bob Dionne
<dionne@dionne-associates.com> wrote:
> Hi Filipe,
>
> I tested this new branch and it seems to have issues (at least on my machine) :
>
> ok 44 reduce_false
> ok 45 reduce_false_temp
> not ok 46 replication
> Reason: expected '"tony"', got 'null'
> Trace back (most recent call first):
>
>    0:
>       Error("expected '\"tony\"', got 'null'")
>   46: /Users/bitdiddle/emacs/foo/couchdb/test/javascript/cli_runner.js
>       T(false,"expected '\"tony\"', got 'null'",undefined)
>  324: /Users/bitdiddle/emacs/foo/couchdb/share/www/script/couch_test_runner.js
>       TEquals("tony",null)
>
>
> I also retested the original patch with and without the sleep(100) and without still
fails, though it's move around a bit in the etaps, so this could be other issues.

Bob, that failure is irrelevant I think. It's a js test, I only
modified etap.erl, therefore only etap tests matter.

thanks for testing

>
> Cheers,
> Bob
>
> On Oct 31, 2012, at 11:35 AM, Filipe David Manana <fdmanana@gmail.com> wrote:
>
>> On Wed, Oct 31, 2012 at 4:32 PM, Paul Davis <paul.joseph.davis@gmail.com> wrote:
>>> Nice find
>>
>> Say thanks to Damien :)
>> Fixed in an older etap version, I just ported it to latest etap.
>>
>> Robert (Dionne), wanna test this to see if it fixes the hangs you used
>> to have with OTP R15Bx?
>> thanks
>>
>>>
>>> On Wed, Oct 31, 2012 at 11:29 AM,  <fdmanana@apache.org> wrote:
>>>> Updated Branches:
>>>>  refs/heads/1424-fix-etap-consuming-any-test-message [created] 67d531b02
>>>>
>>>>
>>>> COUCHDB-1424 Fix etap to not consume any message
>>>>
>>>> Turns out that etap consumes any message in the mailbox in
>>>> some cases. This can make some tests that use message passing
>>>> hang, as etap itself consumes the messages.
>>>>
>>>>
>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/67d531b0
>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/67d531b0
>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/67d531b0
>>>>
>>>> Branch: refs/heads/1424-fix-etap-consuming-any-test-message
>>>> Commit: 67d531b028503b316c9ff8842b8fb34ea75db29d
>>>> Parents: 8ccf696
>>>> Author: Filipe David Borba Manana <fdmanana@apache.org>
>>>> Authored: Wed Oct 31 16:19:48 2012 +0100
>>>> Committer: Filipe David Borba Manana <fdmanana@apache.org>
>>>> Committed: Wed Oct 31 16:19:48 2012 +0100
>>>>
>>>> ----------------------------------------------------------------------
>>>> src/etap/etap.erl |   21 +++++++++++----------
>>>> 1 files changed, 11 insertions(+), 10 deletions(-)
>>>> ----------------------------------------------------------------------
>>>>
>>>>
>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/67d531b0/src/etap/etap.erl
>>>> ----------------------------------------------------------------------
>>>> diff --git a/src/etap/etap.erl b/src/etap/etap.erl
>>>> index 7380013..ae3896c 100644
>>>> --- a/src/etap/etap.erl
>>>> +++ b/src/etap/etap.erl
>>>> @@ -120,14 +120,14 @@ plan(N) when is_integer(N), N > 0 ->
>>>> %% @doc End the current test plan and output test results.
>>>> %% @todo This should probably be done in the test_server process.
>>>> end_tests() ->
>>>> -    timer:sleep(100),
>>>> +    Ref = make_ref(),
>>>>     case whereis(etap_server) of
>>>> -        undefined -> self() ! true;
>>>> -        _ -> etap_server ! {self(), state}
>>>> +        undefined -> self() ! {Ref, true};
>>>> +        _ -> etap_server ! {self(), state, Ref}
>>>>     end,
>>>> -    State = receive X -> X end,
>>>> +    State = receive {Ref, X} -> X end,
>>>>     if
>>>> -        State#test_state.planned == -1 ->
>>>> +        is_record(State, test_state) andalso State#test_state.planned ==
-1 ->
>>>>             io:format("1..~p~n", [State#test_state.count]);
>>>>         true ->
>>>>             ok
>>>> @@ -564,8 +564,8 @@ test_server(State) ->
>>>>                 count = State#test_state.count + 1,
>>>>                 fail = State#test_state.fail + 1
>>>>             };
>>>> -        {From, state} ->
>>>> -            From ! State,
>>>> +        {From, state, Ref} ->
>>>> +            From ! {Ref, State},
>>>>             State;
>>>>         {_From, diag, Message} ->
>>>>             io:format("~s~n", [Message]),
>>>> @@ -573,8 +573,8 @@ test_server(State) ->
>>>>         {From, count} ->
>>>>             From ! State#test_state.count,
>>>>             State;
>>>> -        {From, is_skip} ->
>>>> -            From ! State#test_state.skip,
>>>> +        {From, is_skip, Ref} ->
>>>> +            From ! {Ref, State#test_state.skip},
>>>>             State;
>>>>         done ->
>>>>             exit(normal)
>>>> @@ -584,7 +584,8 @@ test_server(State) ->
>>>> %% @private
>>>> %% @doc Process the result of a test and send it to the etap_server process.
>>>> mk_tap(Result, Desc) ->
>>>> -    IsSkip = lib:sendw(etap_server, is_skip),
>>>> +    etap_server ! {self(), is_skip, Ref = make_ref()} ,
>>>> +    receive {Ref, IsSkip} -> ok end,
>>>>     case [IsSkip, Result] of
>>>>         [_, true] ->
>>>>             etap_server ! {self(), pass, Desc},
>>>>
>>
>>
>>
>> --
>> Filipe David Manana,
>>
>> "Reasonable men adapt themselves to the world.
>> Unreasonable men adapt the world to themselves.
>> That's why all progress depends on unreasonable men."
>



-- 
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."

Mime
View raw message