You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2019/07/30 06:25:41 UTC

[couchdb] branch master updated: Fix mem3_sync_event_listener EUnit test

This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/master by this push:
     new e67903b  Fix mem3_sync_event_listener EUnit test
e67903b is described below

commit e67903b831799568425ce93abe4589c3ee59f558
Author: Nick Vatamaniuc <va...@apache.org>
AuthorDate: Sun Jul 28 20:08:46 2019 -0400

    Fix mem3_sync_event_listener EUnit test
    
    Fix a race condition in state matching, also parameterize the state
    field in wait_state.
---
 src/mem3/src/mem3_sync_event_listener.erl | 28 ++++++++--------------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/src/mem3/src/mem3_sync_event_listener.erl b/src/mem3/src/mem3_sync_event_listener.erl
index d7f7451..69a7a60 100644
--- a/src/mem3/src/mem3_sync_event_listener.erl
+++ b/src/mem3/src/mem3_sync_event_listener.erl
@@ -258,7 +258,7 @@ subscribe_for_config_test_() ->
 should_set_sync_delay(Pid) ->
     ?_test(begin
         config:set("mem3", "sync_delay", "123", false),
-        wait_state_delay(Pid, 123),
+        wait_state(Pid, #state.delay, 123),
         ?assertMatch(#state{delay = 123}, get_state(Pid)),
         ok
     end).
@@ -266,7 +266,7 @@ should_set_sync_delay(Pid) ->
 should_set_sync_frequency(Pid) ->
     ?_test(begin
         config:set("mem3", "sync_frequency", "456", false),
-        wait_state_frequency(Pid, 456),
+        wait_state(Pid, #state.frequency, 456),
         ?assertMatch(#state{frequency = 456}, get_state(Pid)),
         ok
     end).
@@ -301,30 +301,18 @@ get_state(Pid) ->
     Pid ! {get_state, Ref, self()},
     receive
         {Ref, State} -> State
-    after 10 ->
+    after 500 ->
         timeout
     end.
 
 
-wait_state_frequency(Pid, Val) ->
+wait_state(Pid, Field, Val) when is_pid(Pid), is_integer(Field) ->
     WaitFun = fun() ->
         case get_state(Pid) of
-            timeout ->
-                wait;
-            #state{frequency = Val} ->
-                true
-        end
-    end,
-    test_util:wait(WaitFun).
-
-
-wait_state_delay(Pid, Val) ->
-    WaitFun = fun() ->
-        case get_state(Pid) of
-            timeout ->
-                wait;
-            #state{delay = Val} ->
-                true
+            #state{} = S when element(Field, S) == Val ->
+                true;
+            _ ->
+                wait
         end
     end,
     test_util:wait(WaitFun).